用条件计算唯一值

在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。

您需要将数组的大小限制在实际拥有数据的位置。

易于使用数据透视表……:

SO15944249的例子