来自另一个工作表的条件格式化

67

我想让工作表A上的一个单元格检查它是否大于或小于工作表B上一个单元格中的值,然后根据情况更改它的颜色。在使用自定义公式时,我使用:=A1>("SheetB!A1"),但似乎不起作用。我将绿色用于大于号,将红色用于小于号。每次保存规则时,工作表A上的A1单元格总是以红色显示。

这个函数有问题吗?或者条件格式甚至不能跨工作表搜索吗?


它接受规则并将<格式应用于单元格。 - Josh
1
您正在将A1与文本字符串“SheetB!A1”进行比较,因为您已经编写了公式。但是直接将其写为单元格引用而不是字符串也行不通(可能值得将此事实编辑到问题中...您觉得呢?),但是有一个解决方法,就如我在回答中所描述的那样。 - AdamL
6个回答

110

由于某种原因(我承认我不太清楚为什么),条件格式中的自定义公式不直接支持跨工作表引用。

但是可以间接地使用INDIRECT函数来支持跨工作表引用:

=A1>INDIRECT("SheetB!A1")

如果你想在SheetA上比较A1:B10和SheetB上的A1:B10,则使用:

=A1>INDIRECT("SheetB!A1:B10")

=A1>INDIRECT("SheetB!"&CELL("address",A1))

应用于A1:B10范围。


10
请记得在工作表名称中添加单引号,如果有空格,例如=A1>INDIRECT("'Sheet B'!A1") - Andrew Jens
4
很高兴看到这也适用于命名区域:INDIRECT("your_named_range") - User
5
注意!我在应用于1000多个单元格的条件格式规则中完成了这个操作,结果导致我的电子表格的性能完全崩溃,几乎无法使用,但很难诊断。周围有大量的INDIRECT函数是危险的,因为谷歌表不知道它们依赖于什么,所以必须不断重新计算它们。 - Eli Rose
它似乎不再起作用了,当我键入 INDIRECT( 时,警告对话框立即弹出。 - AgainPsychoX
你真是个天才。我通过以下条件格式公式找到了突出显示不同单元格值的解决方案 -------------------------- =A1<>INDIRECT("Sheet1!"&CELL("address",A1)) - Raj

6
您可以通过在当前工作表中引用单元格和行号来实现这一点,因此当您拖动复制该条件格式到其他行时,它将引用正确的单元格。在下面的等式中,我基于另一个名为“otherSheetName”的工作表中完全相同的单元格进行着色。例如,如果您想要在otherSheetName的B2单元格包含文本“I Like Dogs”时为Sheet2的B2单元格着色,则可以转到Sheet2!B2单元格,单击条件格式,从下拉菜单中选择等式,并粘贴以下等式。
=IF(INDIRECT("otherSheetName!"&ADDRESS(ROW();COLUMN()))="I Like Dogs";1;0)

4

当您需要使用条件格式规则时,不要将字符串与数字进行比较。您可以使用以下格式:

=EXACT(A1,(INDIRECT("Sheet2!A1")))

区分大小写。


4
这适用于单个单元格,但因为“Sheet2!A1”被双引号保护,所以它不会响应通过多个单元格的复制粘贴,并且不会将值更改为A2、A3等。 - karatedog

0

有一个技巧/错误:如果你在Sheet1上有条件格式,它明确引用了自身(例如,公式是Sheet1!$C$2),你可以使用粘贴特殊 > 条件格式将条件格式复制到Sheet2中,这样它就会“工作”...只要你不要碰任何东西

  • 如果你尝试编辑Sheet2中的条件格式,则会出现“无效的公式”错误。
  • 如果Sheet1中的列/行发生更改,以至于影响到条件格式(例如,插入行/列),那么这种变化不会反映在Sheet2中(请记住,@AdamL提到的indirect技巧也不能反映列/行的更新,所以在这个方面没有区别)。

0
我能够使用条件格式比较两个工作表并在第二个工作表上突出显示差异: =A1<>(INDIRECT("Sheet1!"&Address(Row(),Column(),)))

0

在条件格式中不支持使用其他工作表。作为解决方法:

  • 使用=SheetB!A1将SheetB中的数据克隆到SheetA中,例如使用列Y+
  • [隐藏列Y+]
  • 使用=A1>Y1进行条件格式设置。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接