用条件计算唯一值
在AI列中有不同名字的列表。 在B列中,我的值是0或1。
我想要计算列B中具有1的所有唯一名称的计数。
使用下面的数组公式可以计算唯一的名字,但是不能在列B上应用条件。
=SUM(1/COUNTIF(A:A,A:A))
假设不超过100行,请尝试使用“数组公式”计算A2:A100中的不同名称,其中B2:B100中的同一行中有一个1:
=SUM(IF(FREQUENCY(IF(B2:B100=1,IF(A2:A100<>"",MATCH(A2:A100,A2:A100,0))),ROW(A2:A100)-ROW(A2)+1),1))
用CTRL+SHIFT+ENTER
请注意,我说不同的不是唯一的,因为两者不一样
喜欢这个?
=SUM(--(FREQUENCY(IF(($B$1:$B$8=1), COUNTIF($A$1:$A$8, "<"&$A$1:$A$8), ""), COUNTIF($A$1:$A$8, "<"&$A$1:$A$8))>0)))
这是一个数组公式。 您将不得不按CTL + SHIFT + ENTER
截图
它必须是一个公式? 一个非常简单的方法是从列A和列B中获取数据透视表。然后将列B设置为filter字段,将A的计数设置为值(需要标记列A和B)。 然后,数据透视表上的A4(至less在默认情况下)应包含您的答案。 这将适用于任何规模的清单,并确实会在有多个条件时工作。
如果必须是一个公式,它是否必须完全如此? 如果允许在公式工作之前按Asorting,那么这个工作stream程如何? 我对此并不着迷,我怀疑它可以得到改善。
1)按A(升序或降序)sorting,然后按B(降序)
2)在C的每一行中放一个这样的公式:
=if (and(A2<>A1,B2=1),1,0)
C1将如下所示:
=b1
从C2拖到数据的最后一行(比如c500)。
3)然后通过求和计数C = sum(c1:c500)。
你当然可以拖动公式在数据行的下面(只要你知道你需要的最大数量),它应该为所有的空白行返回0。 然后,当您将数据添加到A和B时,其余部分将自动更新。 您可能也需要求助于这些数据。
数据透视表解决scheme的一个好处是,只要您在现有数据的行中插入新数据,数据集就可以自动增长。 当然不需要sorting。
这个常见问题的一个相对简单的解决scheme是
= SUM((B:B = 1)/ COUNTIFS(A:A,A:A,B:B,B:B))
作为数组公式input。
您需要将数组的大小限制在实际拥有数据的位置。
易于使用数据透视表……: