Excel:查找列表中与另一个列表匹配的所有值,作为COUNTIFS语句的一部分

时间:2013-12-12 19:52:14

标签: excel

我正在努力将条件集成到COUNTIFS语句中。我有大约5个条件,我已经能够轻松地工作,但我无法弄清楚最后一个。条件范围为A1:A40000,条件将计算与工作表2,单元格A1:A40上30个文本字符串列表中的任何值匹配的数字。这可能吗?我可以在没有其他条件的情况下得到结果。不幸的是,我没有灵活性在A1:A40000旁边添加一列来检查它是否在列表中。

编辑:按要求澄清。

我正在做的简化版。我需要计算满足几个条件的数字项(A列),具体取决于整个数据集中的列。因此,我需要在B列中找到值为“1”的项目数 - AND - “C”列中的值为“YES” - 和 - “D”列中的“OLD”值 - AND - (我正在努力的部分)列“E”必须包含完全独立范围内的任何一个值(称为Z1:Z40)。前3个条件的公式为:

=COUNTIFS(B:B,1, C:C,"YES", D:D,"OLD")

粗体的最终标准是:

=COUNTIFS(B:B,1, C:C,"YES", D:D,"OLD",  **E:E,isnumber(match(E:E,Z1:Z40,0))**)          

但这不起作用......

3 个答案:

答案 0 :(得分:2)

您可以简单地使用范围作为标准。如果你这样做,那么你的COUNTIFS函数将返回一个数组(Z1:Z40中的每个值都有一个值)所以你需要一个函数来对该数组求和 - 我使用SUMPRODUCT因为它没有不需要数组输入

=SUMPRODUCT(COUNTIFS(B:B,1,C:C,"yes",D:D,"old",E:E,Z1:Z40))

这种方法有一些限制 - 你只能在一个COUNTIFS函数中使用两个“多项”标准(如果你做一个必须是一个列,另一个必须是一行,或者你需要使用{ {1}}这样做,并且不应重复Z1:Z40中的项目(或者你可能会重复计算)。

要克服上述任何一种限制,您可以使用TRANSPOSE代替SUMPRODUCT - COUNTIFS作为多项条件。如果您使用ISNUMBER(MATCH之类的话,那么出于效率原因限制范围会更好,例如

SUMPRODUCT

您可以根据需要添加任意数量的=SUMPRODUCT((B2:B100=1)*(C2:C100="yes")*(D2:D100="old")*ISNUMBER(MATCH(E2:E100,Z1:Z40,0)))条件,ISNUMBER(MATCH可以是任何单行/列范围

答案 1 :(得分:0)

假设您的所有标题都在第1行,而实际数据从第2行开始。 我会在最后添加一列并输入公式

=IF(AND(B2=1, C2="YES", D2="OLD", COUNTIF($Z$1:$Z$40,E2)),"YES","NO")

然后将其复制下来,并且列F为“是”的任何行都是符合所有条件的行。

答案 2 :(得分:0)

There is also a way to use wildcards

=countifs(A1:D1;"*yes")

which counts all cell which contain 'yes'