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 = 0
或 Column 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 = 0
和 G: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))
经过大量研究后,我发现没有 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 = 0
或 Column 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 = 0
和 G: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))