使用一个条件进行 Countif,但只计算成本中心一次

使用一个条件进行 Countif,但只计算成本中心一次

我有以下问题:

我有一个包含 2 列的列表,第一列有几个成本中心,第二列是值。我正在寻找一个公式,如果值不为 0,则计算每个成本中心,但只计算一次。因此,如果值不为 0,则每个成本中心都计算一次。我使用了不同的 countif 组合,但没有得到正确的解决方案,如下图所示:

在此处输入图片描述

我怎样才能做到这一点?

答案1

您可以使用以下方法:
=SUM(IF($B$2:$B$14,1/(COUNTIFS($B$2:$B$14,"<>"& 0, $A$2:$A$14, $A$2:$A$14)), 0))

数组公式同时按++代替CtrlB2 :B14 是列值 A2:A14 是成本中心列1/(COUNTIFS($B$2:$B$ Shift14 ,"<>"& 0, $A$2:$A$14, $A$2:$A$14)) 将得到: 1/{3; 3; 3; 3; 1; 1; 1; 0; 0; 0; 1} 其结果为 { 0.333333333333333; 0.33333333333333; 0.33333333333333; 0.33333333333333;1;1;1;1; #DIV/0!;#DIV/0!;#DIV/0!;1;1} EnterEnter




如果 B2:B14<>0,IF($B$2:$B$14) 计算结果为 True,如果 B2:B14=0,IF($B$2:$B$14) 计算结果为 False,
这意味着当为 True 时,它​​将计算 1/countifs() 来计数不同的值
,当为 False 时,它​​将计算 0。
我再说一遍,这是一个数组公式,而不是一个简单的公式

答案2

=IF(B2=0,"",A2)您可以首先通过输入 C2创建一个辅助列来仅显示具有非零值的成本中心。

然后计算辅助列中的唯一文本,同时忽略=SUMPRODUCT((helper<>"")*(1/COUNTIF(helper,helper&"")))C12 中的空白

在此处输入图片描述

相关内容