Google Sheets文本提取数字求和函数遇相邻小数点失效如何修复
解决方案
问题原因
原来的函数通过替换非数字和小数点的字符拆分内容,但是会生成类似30.、.30这类无法被SUM函数自动识别为有效数字的文本,因此会被忽略导致求和错误。
适配需求的修改后函数
如果你需要将30.识别为30、.30也识别为30,两个异常场景都返回50,可以直接使用下方函数:
=SUM(SPLIT(REGEXREPLACE(REGEXREPLACE(REGEXREPLACE(A2, "(^|\D)\.(\d)", "$1$2"), "\.(\D|$)", "$1"), "[^\d]+", "|"), "|"))
逻辑说明
- 第一步先清理数字前缀的多余小数点:把所有出现在开头、或者非数字字符后面,且后面紧跟数字的小数点删除,比如
.30会被处理为30 - 第二步清理数字后缀的多余小数点:把所有出现在数字末尾、或者后面紧跟非数字字符的小数点删除,比如
30.会被处理为30 - 最后沿用原有逻辑,把所有非数字字符替换为分隔符
|,拆分后求和
可选:需要正常识别小数的版本
如果你需要把.30识别为0.3、30.5识别为30.5这类正常小数计算,可使用更简洁的REGEXEXTRACTALL方案:
=SUM(IFERROR(REGEXEXTRACTALL(A2, "\d*\.\d+|\d+\.?\d*")*1, 0))
内容的提问来源于stack exchange,提问作者BegCoder
相关产品推荐
相关产品推荐

