求可忽略单元格字母仅求和的Excel公式
Excel忽略单元格字母仅对数字求和的公式方案
方法1:适用于Excel 365/2021(动态数组支持)
直接用正则替换提取数字后求和,公式简洁高效:
=SUM(VALUE(REGEXREPLACE(A1:A6,"[^0-9.]","")))
- 公式说明:
REGEXREPLACE(A1:A6,"[^0-9.]",""):把每个单元格里非数字、非小数点的字符全部清空,只留数字部分VALUE():将提取出的数字字符串转成可计算的数值SUM():对所有转换后的数值求和
方法2:兼容旧版Excel(无动态数组支持)
如果用的是Excel 2019及更早版本,用以下数组公式(输入时需按 Ctrl+Shift+Enter 确认):
=SUM(VALUE(MID(A1:A6,MIN(FIND({0,1,2,3,4,5,6,7,8,9},A1:A6&"0123456789")),LEN(A1:A6))))
- 公式说明:
A1:A6&"0123456789":给每个单元格末尾补数字,避免因单元格无数字报错FIND({0,1,2,...},...):定位单元格里第一个数字的位置MIN():提取第一个数字的起始位置MID():从起始位置开始提取后续内容(即数字部分),转数值后求和
方法3:自定义VBA函数(支持宏的环境)
如果允许启用宏,可编写自定义函数实现更灵活的数字提取:
- 按
Alt+F11打开VBA编辑器 - 插入新模块,粘贴以下代码:
Function SumNumbers(rng As Range) As Double Dim cell As Range Dim numStr As String Dim char As String For Each cell In rng numStr = "" For i = 1 To Len(cell.Value) char = Mid(cell.Value, i, 1) ' 保留数字和小数点 If IsNumeric(char) Or char = "." Then numStr = numStr & char End If Next i ' 把提取的数字字符串转成数值并累加 If numStr <> "" Then SumNumbers = SumNumbers + CDbl(numStr) Next cell End Function
- 返回Excel界面,直接在单元格中使用:
=SumNumbers(A1:A6)
内容的提问来源于stack exchange,提问作者Polly Camel
相关产品推荐
相关产品推荐

