条件格式:在 indirect() 和 and() 中使用 row() 无效。我究竟做错了什么?

Conditional formatting: using row() inside indirect() inside and() doesn't work. What am I doing wrong?

假设我在单元格 B2 上设置了 55 的值。

如果它的值为 55,单元格的背景颜色应该是绿色。因此,我通过选择 "User a formula to determine which cells to format" 使用公式创建了一个新规则,并将公式设置为以下内容:

=B2 = 55

很明显,它奏效了。但是因为我们不想对行进行硬编码,因为我们将此电子表格用作应用程序中的模板,只需将该单元格复制到另一行即可生成更多行,因此我将公式设置为:

=INDIRECT( "B" & row() ) = 55

而且因为我们实际上想要两个条件并且我们的要求并不那么简单,所以我尝试了以下方法:

=AND( INDIRECT( "B" & row() ) >= 50, INDIRECT( "B" & row() ) <= 60 )

这意味着如果该值在50到60(含)之间,则将背景设置为绿色。那没有用。但以下作品:

=AND( INDIRECT( "B" & "2" ) >= 50, INDIRECT( "B" & "2" ) <= 60 )

谁能告诉我为什么后者有效而调用 row() 的前者无效?

似乎 row() 仅在与 AND() 和 INDIRECT() 组合使用时不起作用,如下所示:

=AND( ROW() = 2 ) -> this one works
=INDIRECT( "B" & row() ) = 55 -> this one works too
=AND( INDIRECT( "B" & row() ) ) = 55 -> doesn't work :((

有人可以解释这是为什么吗?这是 Excel 2010 中的错误吗?我该如何解决这个问题?

您遇到的行为看起来像一个错误,这里有一些论坛链接,人们在其中描述了完全相同的问题:link1,link2

在其中一个主题中,您可以读到如果用 ISERROR 括起 CF 公式,它 returns(原因不明)True。在单元格中输入相同的公式完全可以正常工作。

针对您的情况,最简单的解决方案是替换:

=AND(condition1,condition2)

相当于:

=(condition1)*(condition2)

其中一个链接线程中显示的另一种解决方法是替换:

INDIRECT("B" & row())

与其等效:

INDEX($B:$B,ROW())

两种解决方案都适用于条件格式规则。