CountIF 计算受条件格式影响的单元格

CountIF to Count Cells Affected by Conditional Formatting

经过大量研究后,我发现没有 VBA 可以计算受条件格式影响的一系列单元格(特别是 "red")。

我知道无法对 "red" 单元格进行计数,因此我将使用条件格式中的相同标准创建 CountIF 公式,但我在创建标准时遇到了问题.

我认为这很简单,只需在下面的代码前添加 "CountIF($G:$G," 即可。此数据也在名为 "TT".

的 table 中

=AND(OR(AND(TODAY()-$F1>1095,TODAY()-$G1>1095),$G1=0,AND($F1=0,TODAY()-$G1>1095)),$A1>0)

OR 使事情稍微有点复杂 - 你需要添加 COUNTIFS,然后在两者都为真时减去(以防止重复计算),为了演示,如果我们想要在哪里Column A = 0Column B = 0:

=COUNTIF(A:A, 0) + COUNTIF(B:B, 0) - COUNTIFS(A:A, 0, B:B, 0)

除了,你似乎在 3 个条件下这样做,这使得它更大(添加个人,减去 2 个匹配,然后 add 所有 3 个匹配) - 但是有实际上这里有一个技巧,稍后我会讲到。

为方便起见,我们可以将您的条件从格式 Value - A1 > Const 重写为 A1 < Value - Const。这意味着 COUNTIF 将是 Countif(A:A, "<" & Value - Const)

=AND(OR(AND($F1<TODAY()-1095,$G1<TODAY()-1095),$G1=0,AND($F1=0,$G1<TODAY()-1095)),$A1>0)

现在,让我们把它分解成我们的个人 COUNTIFS。有外面的 AND,所以 $A1>0 在所有这些里面,然后有一个 OR 有 3 个条件。这给了我们:

COUNTIFS($A:$A,">0", $G:$G, "<" & Today()-1095, $F:$F, "<" & Today()-1095)
COUNTIFS($A:$A,">0", $G:$G, 0)
COUNTIFS($A:$A,">0", $G:$G, "<" & Today()-1095, $F:$F, 0)

现在,这是我之前提到的技巧:我不了解你,但我可以看到这里发生了一些重复。例如,第一和第三? F 列小于 Today()-1095,或者 F 列为 0。除此之外,第 1095 天是 1902 年 12 月的第 30 - 因此 Today()-1095 将始终大于 0 .比如今天会是42576。这意味着当 third 条件为 True 时,first 条件也将始终为真。所以,我们完全可以忽略第三个COUNTIF

现在,我们不能对第一个和第二个条件执行此操作 - 因为如果列 F 大于 Today()-1095,第一个条件将始终是 False,但是 second 条件将是 True if G 列是 0

因此,使用之前的示例,我们有以下内容:

=COUNTIFS($A:$A,">0", $G:$G, "<" & Today()-1095, $F:$F, "<" & Today()-1095)
+COUNTIFS($A:$A,">0", $G:$G, 0)
-COUNTIFS($A:$A,">0", $G:$G, 0, $G:$G, "<" & Today()-1095, $F:$F, "<" & Today()-1095)

但是!看看最后那个COUNTIFS。它有 G:G = 0G:G < Today()-1095。但是,如果 G 列为 0,则它 小于 Today()-1095 (免责声明:1902 年新年前夜或之后)因此,我们可以简化:

-COUNTIFS($A:$A,">0", $G:$G, 0, $F:$F, "<" & Today()-1095)

这意味着我们的整个等式如下:

=COUNTIFS($A:$A,">0", $G:$G, "<" & Today()-1095, $F:$F, "<" & Today()-1095)+COUNTIFS($A:$A,">0", $G:$G, 0)-COUNTIFS($A:$A,">0", $G:$G, 0, $F:$F, "<" & Today()-1095)

我使用 table headers 和 SUM( COUNTIFS( COUNTBLANK( 的组合得出了自己的公式。它经过实战测试并且有效!

=SUM(COUNTIFS(TT[Fiscal Law 301 CBT],"<"&TODAY()-1095,TT[Fiscal Law In-Residence],"<"&TODAY()-1095),COUNTBLANK(TT[Fiscal Law 301 CBT]),COUNTIFS(TT[Fiscal Law In-Residence],"",TT[Fiscal Law 301 CBT],"<"&TODAY()-1095))