Excel单元格唯一值计数:小数点后值统计及多数值求和问题
Excel单元格内逗号分隔值的唯一值计数方案
一、统计所有逗号分隔数值的唯一值数量(如2,3,4,5,6结果为5)
如果使用Excel 365/2021及以上版本,直接用以下公式:=ROWS(UNIQUE(TEXTSPLIT(A1, ",")))
- 逻辑:
TEXTSPLIT(A1, ",")将单元格内容按逗号拆分成数组;UNIQUE去除数组中的重复值;ROWS统计去重后数组的行数,即唯一值的数量。 - 若单元格存在空项(如
2,,3),可加入过滤排除空值:=ROWS(UNIQUE(FILTER(TEXTSPLIT(A1, ","), TEXTSPLIT(A1, ",")<>"")))
旧版本Excel(无TEXTSPLIT)替代公式
=SUMPRODUCT(--(FREQUENCY(MATCH(TRIM(MID(SUBSTITUTE(A1,",",REPT(" ",99)),ROW(INDIRECT("1:"&LEN(A1)-LEN(SUBSTITUTE(A1,",",""))+1))*99-98,99)),TRIM(MID(SUBSTITUTE(A1,",",REPT(" ",99)),ROW(INDIRECT("1:"&LEN(A1)-LEN(SUBSTITUTE(A1,",",""))+1))*99-98,99)),0)>0))
- 逻辑:通过
SUBSTITUTE+MID拆分逗号分隔的内容,MATCH+FREQUENCY识别唯一值,SUMPRODUCT统计唯一值的数量。
二、统计小数点后部分的唯一值数量
如果需求是提取每个数值的小数部分,再统计唯一值数量(如1.2,2.3,1.2,3.2结果为2),使用以下公式(Excel 365/2021+):=ROWS(UNIQUE(MOD(--TEXTSPLIT(A1, ","), 1)))
- 逻辑:
--TEXTSPLIT(A1, ",")将拆分的文本转为数值;MOD(数值,1)提取小数部分;后续UNIQUE+ROWS完成去重计数。 - 若要排除整数的小数部分(即排除0),加入过滤:
=ROWS(UNIQUE(FILTER(MOD(--TEXTSPLIT(A1, ","), 1), MOD(--TEXTSPLIT(A1, ","), 1)<>0)))
内容的提问来源于stack exchange,提问作者Poryforion
相关产品推荐
相关产品推荐

