如何根据Name&amp ;;在C列中计算“否” ID?

时间:2013-01-29 17:07:21

标签: excel vba excel-formula excel-2010

我有3列。

-----A-----B-----C-----
---Name----ID---Report

在A栏中我有名字(可以重复)
在B栏中,我有ID(可以用不同名称的相同ID重复)
在C栏中,我有“是”和“否”(对于相同的ID,可以重复为“否”)

我需要帮助来计算John(C列)C列中的No的数量,但如果B列有重复的ID,则只计算一次。

我可以通过过滤器和东西来做到这一点,但我只需要使用公式来做。

这是我正在处理的文件(dropbox link)
Dropbox excel file link

这是我到目前为止所得到的

=COUNTIF(A1:A1000,"*" & "John" & "*")

3 个答案:

答案 0 :(得分:7)

您可以使用以下单个公式:

=SUM(IF(FREQUENCY(IF(A2:A200="John",IF(C2:C200="No",B2:B200)),B2:B200),1))

这是一个“需要用CTRL + SHIFT + ENTER

确认的数组公式

这为你的例子提供了3 - 注意它要求B列数据是数字,这似乎是这里的情况......

答案 1 :(得分:1)

我的想法是使用公式D添加列=COUNTIFS(A:A,"="&A2,B:B,"="&B2,C:C,"="&C2)。这将为您提供每行的重复数量。如果一行返回3,则表示该确切配置还有另外两个实例。

接下来,创建一个新表,进行测试我在列GH中执行了此操作。从G开始,列G2仅编号为1,2,3等。 Name是单元格H1中的标题和引用,在本例中为John。然后将此公式放在单元格H2中:=COUNTIFS(A:A,"="&$H$1,C:C,"=No",D:D,"="&G2)/G2并将其向下拖动。它基本上计算每个“1”副本,“2”副本和“3”副本(实际上可能有用)的实例。然后只需汇总H列,您就应该得到答案。

答案 2 :(得分:1)

这似乎与你想要做的非常接近

=SUMPRODUCT((A2:A1000="John")*(C2:C1000="No")*(IF(FREQUENCY(B2:B1000,B2:B999)>0,TRUE)))

有一个缺点是频率忽略了最后一行。 如果我将频率公式更改为FREQUENCY(B2:B1000,B2:B1000),则会因为返回10个结果而不是所需的9而错误输出。

修改

扩展其他范围可能比缩短bin数组更好。

=SUMPRODUCT((A2:A1001="John")*(C2:C1001="No")*(IF(FREQUENCY(B2:B1001,B2:B1000)>0,TRUE)))