Excel多条件统计问题:COUNTIFS公式无法实现跨列表多条件计数
解决Excel双条件统计(含多值匹配)的问题
我懂你的需求——你已经能用COUNTIFS统计特定Sub ID的出现次数,但现在需要再加一个条件:统计目标列中属于另一列表任意值的记录总数,对吧?原来的COUNTIFS只能处理单个条件值,没法直接匹配多值列表,下面给你两种实用的解决方案,适配不同Excel版本:
方法1:兼容所有Excel版本(用SUMPRODUCT)
如果你的Excel版本比较旧(比如2019及之前),推荐用SUMPRODUCT结合MATCH来实现多值匹配:
=SUMPRODUCT((Data!A:A=[@[Sub ID]])*(ISNUMBER(MATCH(Data!B:B, List!C:C, 0))))
公式拆解:
(Data!A:A=[@[Sub ID]]):生成一个布尔数组,Data表A列中等于当前行Sub ID的位置返回1,否则返回0ISNUMBER(MATCH(Data!B:B, List!C:C, 0)):检查Data表B列的值是否存在于List表C列的允许列表中,存在则返回1,否则0- 两个数组相乘后,
SUMPRODUCT会把所有同时满足两个条件的1相加,得到最终符合条件的总数
方法2:Excel 365/2021专属(简洁版)
如果你用的是支持动态数组的Excel版本,可以直接用SUM+COUNTIFS的组合,写法更简洁:
=SUM(COUNTIFS(Data!A:A, [@[Sub ID]], Data!B:B, UNIQUE(List!C:C)))
公式说明:
COUNTIFS会针对UNIQUE(List!C:C)里的每个值,分别统计符合Sub ID条件的记录数,返回一个结果数组SUM把这个数组里的数值相加,得到总计数- 用
UNIQUE是为了避免List列表中有重复值时重复统计,如果你的列表本身没有重复,也可以直接写List!C:C
注意事项
- 如果List列表中有空单元格,建议先过滤掉,比如把
List!C:C改成List!C1:C100(指定非空的范围),或者在MATCH里加条件:MATCH(Data!B:B, IF(List!C:C<>"", List!C:C), 0) - 尽量不要用整列引用(比如
A:A),如果数据范围固定,用具体的范围(比如Data!A1:A1000)能提升公式运行速度
内容的提问来源于stack exchange,提问作者Brandon Blackley
相关产品推荐
相关产品推荐

