当FILTER()函数返回0时,如何正确统计其行数?
Excel函数问题解决方案
方法1:修改FILTER默认返回值为空白数组
将FILTER的第三个参数从0替换为空白数组{},再通过IFERROR捕获错误并返回0,公式如下:
=IFERROR(ROWS(FILTER(Table,Table[Col.A]="d",{})),0)
当没有匹配结果时,FILTER返回空白数组,ROWS({})会触发#CALC!错误,IFERROR将其转换为0;存在匹配结果时,FILTER返回对应行的数组,ROWS可正常统计行数。
方法2:使用COUNTIF直接统计(更简洁)
若需求仅为统计Col.A中等于"d"的行数,无需嵌套FILTER和ROWS,直接用COUNTIF即可:
=COUNTIF(Table[Col.A],"d")
该公式逻辑直观,无匹配结果时自动返回0。
方法3:通过ISNUMBER判断返回值类型
如果保留原FILTER的默认值0,可通过判断返回值是否为单个数值来输出结果:
=IF(ISNUMBER(FILTER(Table,Table[Col.A]="d",0)),0,ROWS(FILTER(Table,Table[Col.A]="d",0)))
无匹配时FILTER返回单个数字0,ISNUMBER判定为TRUE,返回0;有匹配时FILTER返回多行数组,ISNUMBER判定为FALSE,返回ROWS统计的行数。
内容的提问来源于stack exchange,提问作者Vito G.
相关产品推荐
相关产品推荐

