条件格式化:使用里面的indirect()里面的row()和()不起作用。 我究竟做错了什么?
假设我在B2单元格上设置了一个55的值。
如果它的值是55,那么单元格的背景颜色应该是绿色的。 因此,我使用公式创build了一个新的规则,方法是select“用户公式以确定要格式化的单元格”,并将公式设置为以下内容:
=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()只有在与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
。 在一个单元格中input相同的公式工作得很好。
在你的情况最简单的解决scheme是取代:
=AND(condition1,condition2)
与等价物:
=(condition1)*(condition2)
其中一个链接线程显示的另一个解决方法是replace:
INDIRECT("B" & row())
等同于:
INDEX($B:$B,ROW())
这两个解决scheme在条件格式化规则中工作正常