Excel结合INDIRECT函数去除数值前导空格后统计大于0数值个数
问题原因
你当前使用的COUNTIF函数是直接对单元格区域做条件匹配,无法对区域内的每个单元格提前做去空格、格式转换的预处理,带前导空格的文本型数值会被判定为不满足>0的条件,因此返回结果为0。
解决方案
方案1:全版本兼容数组公式
以下公式支持所有Excel版本,旧版Excel输入完成后需要按Ctrl+Shift+Enter确认数组公式,Excel 365/2021直接回车即可:
=SUM(--(VALUE(TRIM(INDIRECT("'"&A3&"'!"&$J$1)))>0))
逻辑拆解:
INDIRECT("'"&A3&"'!"&$J$1):和原逻辑一致,动态引用指定工作表的目标列TRIM():去除每个单元格内容的前后空格,解决前导空格问题VALUE():将去空格后的文本型数值转换为标准数值格式>0:逐单元格判断数值是否大于0,返回布尔值TRUE/FALSE--:双负号将布尔值转换为数值(TRUE转1,FALSE转0)SUM():对所有转换后的1求和,得到大于0的数值总个数
方案2:Excel 365/2021简化写法
如果你使用支持动态数组的Excel版本,也可以用SUMPRODUCT实现,无需手动确认数组:
=SUMPRODUCT(--(VALUE(TRIM(INDIRECT("'"&A3&"'!"&$J$1)))>0))
容错优化(可选)
如果目标列存在空值、文字等非数值内容,可以加IFERROR避免公式报错:
=SUM(--(IFERROR(VALUE(TRIM(INDIRECT("'"&A3&"'!"&$J$1)))>0,0)))
内容的提问来源于stack exchange,提问作者Zebraboard
相关产品推荐
相关产品推荐

