Excel计算一个值出现在列中的次数,如果该行唯一
所以我有一个Excel电子表格是这样的:
ID ABCD 1 # £ £ £ 2 # £ £ £ 3 £ # # # 4 £ # # # 5 # £ # # 6 £ £ £ # 7 £ # # # 8 # £ £ £ 9 £ £ £ £ 10 # £ # £
并且,对于每个AD列,我想要统计#个条目的数量 – 但是只有在同一行中没有其他#个条目的情况下 – 例如,列A有5个#,但只有3个是唯一的。 列B和C没有唯一的条目,列D有1个唯一的#。
要计算散列,我会使用CountIf,但我不知道怎么做,当还比较每一行。
尝试这一列A
(另一列更改A2:A11="#"
B2:B11="#"
等):
=SUMPRODUCT((A2:A11="#")*(MMULT(IF(A2:D11="#",1,0),TRANSPOSE(COLUMN($A$2:$D$2)/COLUMN($A$2:$D$2)))=1))
其中A2:D11
是你arrays的地址, A2:A11
第一列的A2:A11
地址。
注意,因为它是一个数组公式,所以你应该按下CTRL + SHIFT + ENTER来评估它。
我相信你可以用一个单独的产品做这个,我仍然在玩这个,但作为一个快速的解决scheme,如果你可以使用一个帮助列,你可以做这样的事情:
- 在
E1
,input以下公式:=COUNTIF($A1:$D1,"#")
并将其向下拖动 - 在你的testing单元格中,比如
A12
,用下面的公式表示:=SUMPRODUCT(--(A1:A10="#"),--($E$1:$E$10=1))
。
这会给你预期的结果3 0 0 1
,但我仍然确定有一个更好的方法….
希望这有助于,但!
您可以使用A13中的此公式复制到D13
=SUMPRODUCT((MMULT((A2:A11="#")*($A2:$D11="#"),{1;1;1;1})=1)+0)
这不需要“数组input”
{1;1;1;1}
部分将需要根据您的范围中的列数进行更改 – 这里有四个1,因为您的整个范围是四列。 如果你想使这部分自动,你可以切换到这个“数组公式”
=SUM((MMULT((A2:A11="#")*($A2:$D11="#"),TRANSPOSE(COLUMN($A2:$D11)^0))=1)+0)
用CTRL + SHIFT + ENTER确认
或者另一种方式是这样的:
=SUMPRODUCT((A2:A11="#")*(COUNTIF(OFFSET($A2:$D2,ROW(A2:A11)-ROW(A2),0),"#")=1))
所有这些公式应该给出相同的结果