Excel中非零数字计数问题:Len+Substitute函数无法返回正确结果
逗号分隔字符串中非0数字项的计数公式
针对你需要统计逗号分隔字符串里非0数字项个数(每个项无论位数算1个,排除0、空项)的需求,以下是不同Excel版本适用的公式:
适用于Excel 365/2021(支持动态数组)
直接用TEXTSPLIT拆分字符串后统计非0项:
=SUMPRODUCT(--(TEXTSPLIT(A1, ",")<>"0"))
原理:TEXTSPLIT(A1, ",")将字符串按逗号拆分为数组,TEXTSPLIT(...)<>"0"判断每个元素是否非0,返回逻辑值数组,--将逻辑值转为1/0,最后SUMPRODUCT求和得到总个数。
适用于旧版Excel(无动态数组功能)
用字符串替换+提取的方式实现:
=SUMPRODUCT(--(TRIM(MID(SUBSTITUTE(A1, ",", REPT(" ", LEN(A1))), (ROW(INDIRECT("1:"&LEN(A1)-LEN(SUBSTITUTE(A1,",",""))+1))-1)*LEN(A1)+1, LEN(A1)))<>"0"))
原理:
SUBSTITUTE(A1, ",", REPT(" ", LEN(A1)))将所有逗号替换为与原字符串长度相同的空格,确保每个原项被单独分隔开;MID(...)按位置逐个提取每个项的内容,TRIM去除多余空格;- 判断提取的内容是否非0,转数值后求和得到结果。
也可以用简化版(需确保ROW($1:$100)覆盖所有项数,若项数更多可调整数字):
=COUNT(1/(TRIM(MID(SUBSTITUTE(A1,",",REPT(" ",99)),ROW($1:$100)*99-98,99))<>"0"))
验证说明
以上公式针对你提供的字符串,均可返回正确结果50。若原字符串包含空格,TRIM会自动去除,不影响计数。
内容的提问来源于stack exchange,提问作者silbia
相关产品推荐
相关产品推荐

