使用COUNTIF与FILTER函数统计输出数组的问题求助
解决方案
方法1:直接用COUNTIFS(最推荐)
不需要嵌套复杂的FILTER,COUNTIFS原生支持多条件计数,自动处理无匹配的情况:
=COUNTIFS(Input!$D$3:$D$95, Nurses!A2, Input!$E$3:$E$95, "E")
- 逻辑:同时匹配
Input表D列的护士姓名(对应Nurses!A2)和E列的"E"班次,直接返回符合条件的记录数,无匹配时自动返回0,完全解决错误计数问题。
方法2:FILTER + ROWS + IFERROR(保留FILTER逻辑)
如果一定要用FILTER,简化嵌套逻辑,用ROWS统计筛选结果的行数,IFERROR捕获无匹配的错误:
=IFERROR(ROWS(FILTER(Input!$E$3:$E$95, (Input!$D$3:$D$95=Nurses!A2)*(Input!$E$3:$E$95="E"))), 0)
- 逻辑:直接筛选
Input表E列中符合护士姓名和E班次的单元格,ROWS统计筛选出的行数;如果FILTER返回错误(无匹配),IFERROR将结果转为0,避免COUNTA把错误值计为1的问题。
方法3:SUMPRODUCT多条件计数
适合旧版Excel(不支持FILTER/COUNTIFS的版本):
=SUMPRODUCT((Input!$D$3:$D$95=Nurses!A2)*(Input!$E$3:$E$95="E")*1)
- 逻辑:两个条件判断生成布尔数组(TRUE/FALSE),乘1转为数字1/0,SUMPRODUCT对数组求和,得到符合条件的记录数,无匹配时返回0。
原问题原因说明
COUNTA(FILTER(...))得到1的原因:FILTER返回错误值时,COUNTA会把单个错误值当作1个非空元素计数;COUNTIF(FILTER(...), "E")报错的原因:部分Excel版本中COUNTIF的第一个参数不支持FILTER返回的动态数组;- 之前的IFERROR组合返回数组的原因:公式重复调用FILTER导致返回数组结果,而非单个数值。
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

