22

在 AI 列中有不同名称的列表。在 B 列中,我的值为 0 或 1。

我想计算 A 列中 B 列中有 1 的所有唯一名称。

使用下面的数组公式,我可以计算唯一名称,但无法在 B 列上应用条件。

=SUM(1/COUNTIF(A:A,A:A))
4

5 回答 5

10

假设不超过 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

请注意,我说的是不同的不是唯一的,因为两者是不一样的

于 2013-04-11T09:20:08.640 回答
8

像这样?

=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

截屏

在此处输入图像描述

于 2013-04-11T09:20:13.687 回答
3

这个常见问题的一个相对简单的解决方案是

=SUM((B:B=1)/COUNTIFS(A:A,A:A,B:B,B:B))

作为数组公式输入。

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

于 2014-10-13T13:28:41.800 回答
3

它必须是一个公式吗?一种非常简单的方法是从 A 列和 B 列中创建一个数据透视表。然后将 B 列设置为过滤器字段,将 A 的计数设置为值(您需要标记 A 列和 B 列)。然后数据透视表上的 A4(至少在默认情况下)应该包含您的答案。这适用于任何大小的列表,并且在有多种条件时确实有效。

如果它必须是一个公式,它是否必须完全如此?如果允许您在公式起作用之前按 A 排序,那么这个工作流程怎么样。我对此并不疯狂,我怀疑它可以改进。

1)按A(升序或降序)排序,然后按B(降序)

2)在C中,C的每一行都放一个这样的公式:

=if (and(A2<>A1,B2=1),1,0) 

C1 如下:

=b1 

从 C2 拖动到数据的最后一行(例如 c500)。

3) 然后通过对 C 求和来计数,=sum(c1:c500)。

您当然可以将公式拖到数据行下方(只要您知道所需的最大数量),它应该为所有空白行返回 0。然后,当您将数据添加到 A 和 B 时,其余部分将自动更新。您可能还需要诉诸数据。

数据透视表解决方案的一个好处是,只要您在现有数据的行中插入新数据,它就可以随着您的数据集自动增长。当然不需要排序。

于 2013-04-11T15:50:56.597 回答
0

使用数据透视表很容易......:

SO15944249 示例

于 2013-04-12T01:21:37.827 回答