条件格式化:使用里面的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在条件格式化规则中工作正常