求可检测Excel中K列是否存在超2位小数的公式及相关实现
Excel公式实现K列小数位数超2位的判断、统计与定位
一、判断是否存在符合条件的数值
直接返回TRUE(存在)或FALSE(不存在):
=OR(--(MOD(K:K*100,1)<>0)*(K:K<>""))
- 原理:将数值乘100后取小数部分,若不为0则说明小数位数超过2位;
K:K<>""排除空单元格,最后用OR判断是否存在符合条件的项。 - 适配性:Excel 365/2021直接回车,旧版本需按
Ctrl+Shift+Enter触发数组运算。 - 备选(支持文本型数值):
=COUNTIF(K:K,"*.???*")>0
二、统计符合条件的数值数量
用SUMPRODUCT无需数组输入,兼容性更好:
=SUMPRODUCT(--(MOD(K:K*100,1)<>0),--(K:K<>""))
- 原理:
--将逻辑值转为1/0,SUMPRODUCT统计所有符合小数位数超2位+非空的单元格数量。 - 365版本也可以用:
=SUM(--(MOD(K:K*100,1)<>0)*(K:K<>""))
三、定位符合条件的单元格/行
返回第一个符合条件的单元格地址
=ADDRESS(MIN(IF(MOD(K:K*100,1)<>0,ROW(K:K),99999)),COLUMN(K:K))
- 旧版本需按
Ctrl+Shift+Enter,365直接回车。
返回所有符合条件的行号(Excel 365专属)
=FILTER(ROW(K:K),MOD(K:K*100,1)<>0)
若要返回完整单元格地址,用:
=FILTER(ADDRESS(ROW(K:K),COLUMN(K:K)),MOD(K:K*100,1)<>0)
原公式问题说明
你之前的逐行公式=IF(LEN(RIGHT(K2,LEN(K2)-FIND(".",K2)))>2,TRUE,FALSE)存在以下问题:
- 遇到整数(无小数点)时,
FIND函数会直接报错; - 无法识别空单元格或非数值文本;
- 直接对逐行结果求和时,需用
SUM(--(原公式))将逻辑值转为数值,否则会返回错误结果。
内容的提问来源于stack exchange,提问作者Ilyas Esa
相关产品推荐
相关产品推荐

