在 AI 列中有不同名称的列表。在 B 列中,我的值为 0 或 1。
我想计算 A 列中 B 列中有 1 的所有唯一名称。
使用下面的数组公式,我可以计算唯一名称,但无法在 B 列上应用条件。
=SUM(1/COUNTIF(A:A,A:A))
在 AI 列中有不同名称的列表。在 B 列中,我的值为 0 或 1。
我想计算 A 列中 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
截屏
这个常见问题的一个相对简单的解决方案是
=SUM((B:B=1)/COUNTIFS(A:A,A:A,B:B,B:B))
作为数组公式输入。
您需要将数组的大小限制为实际拥有数据的位置。
它必须是一个公式吗?一种非常简单的方法是从 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 时,其余部分将自动更新。您可能还需要诉诸数据。
数据透视表解决方案的一个好处是,只要您在现有数据的行中插入新数据,它就可以随着您的数据集自动增长。当然不需要排序。
使用数据透视表很容易......: