假设我在单元格 B2 上设置了 55 的值。
如果其值为 55,则单元格的背景颜色应为绿色。因此,我通过选择“使用公式来确定要格式化的单元格”使用公式创建了一个新规则,并将公式设置为以下内容:
=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 .
在这些主题之一中,如果您将 CF 公式附在 ISERROR
中,您可以阅读。 ,它返回(原因不明)True
.在单元格中输入的相同公式可以正常工作。
在您的情况下,最简单的解决方案是更换:
=AND(condition1,condition2)
等效:
=(condition1)*(condition2)
其中一个链接线程中显示的另一种解决方法是替换:
INDIRECT("B" & row())
与其等价物:
INDEX($B:$B,ROW())
两种解决方案在条件格式规则中都可以正常工作。
关于excel - 条件格式 : using row() inside indirect() inside and() doesn't work. 我做错了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33930584/