excel - 条件格式 : using row() inside indirect() inside and() doesn't work. 我做错了什么?

标签 excel excel-2010 conditional-formatting

假设我在单元格 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/

相关文章:

r - Excel中的数字列被转换为逻辑

c# - 如何使用 Open xml 或 EPPLUS 添加到 excel 图表的文本标签

vba - 安全时间戳 - VBA

Excel:查找事务中的关键字并从映射列表中获取相应的性质

excel - 从 VBA 中的类模块中提取特定变量到标准模块

vba - 更改图表位置的代码需要激活我的目标表吗?

vba - 动态调整表大小到最后一行?

vba - 为什么我的条件格式在用VBA添加时会偏移?

excel - 条件格式,搜索公式

excel - 查找最晚日期但最早时间