Excel: 为什么这个条件格式公式不起作用?

Excel: Why is this conditional formatting formula not working?

我有一个 Excel 电子表格(不要问),其中有一个 4x6 table headers 第 1 天 第 2 天第 3 天,以及总计。但是,公式会根据日期更改 Total 的位置,因此在任何时候 Day 3 都可以删除并替换为 总计 如果日期检测到我们只到 第 2 天,那么我们不需要为 显示 headers第 3 天 了。

我想使用条件格式以某种方式为 Total 下的所有内容设置样式,所以我为选项 Use a formula to determine which cells 写了这个公式格式:

=IF(INDIRECT(CONCATENATE(CHAR(COLUMN()+64), 1)) = "Total", TRUE, FALSE)

这应该格式化其列第一行中的单元格等于 "Total" 的任何单元格。但是,它根本就不会设置任何样式!

为了进行故障排除,我尝试只选择一列(即 C)并对其应用规则的修改形式:

=IF(INDIRECT(CONCATENATE("C", 1)) = "Total", TRUE, FALSE)

...成功了!然后,我尝试将第一个公式简单地放入一个单元格中,它正确显示 TRUEFALSE 。一切似乎都有效,但出于某种原因,我无法弄清楚条件格式永远不会适用。

谁能解释一下为什么?

PS 在问题中我写了一个简化的例子,在真实的情况下我有 31 天而不是 3 天,所以单独浏览每一列会很麻烦

好的...我自己解决了这个问题。事实证明我的公式是完全正确的,但出于某种奇怪的原因它不喜欢 IF 语句;我将其替换为:

INDIRECT(CONCATENATE(CHAR(COLUMN()+64), 1)) = "Total"

而且效果很好!

不过,如果有人能解释一下为什么会这样(以供日后参考),我将不胜感激

INDIRECT(CONCATENATE(CHAR(COLUMN()+64), 1)) 可能是我能想到的最糟糕的引用第一行和同一列中的单元格的方法。

而不是这个:

INDIRECT(CONCATENATE(CHAR(COLUMN()+64), 1)) = "Total"

试试这个(例如,对于 A 列中的条件格式规则,并在您需要的任何其他地方应用该规则):

A = "Total"

这两个公式的效果是一样的