You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Excel中提取并求和括号内的所有数字(多实例场景)

Excel提取单元格内所有括号中的数字并求和的解决方案

方法1:自定义VBA函数(全版本通用)

如果你的Excel版本没有动态数组功能,用这个方法最稳妥:

  • 按下Alt + F11打开VBA编辑器
  • 右键左侧的工程窗口,选「插入」→「模块」
  • 把下面的代码粘贴进去:
Function SumNumbersInBrackets(rng As Range) As Double
    Dim regEx As Object
    Dim matches As Object
    Dim match As Object
    Dim total As Double
    
    Set regEx = CreateObject("VBScript.RegExp")
    regEx.Pattern = "\((\d+)\)"
    regEx.Global = True
    
    Set matches = regEx.Execute(rng.Value)
    total = 0
    For Each match In matches
        total = total + CDbl(match.SubMatches(0))
    Next match
    
    SumNumbersInBrackets = total
End Function
  • 把工作簿存成.xlsm格式(必须是启用宏的格式,不然函数会失效)
  • 在要出结果的单元格里输入=SumNumbersInBrackets(A1)(把A1换成你存目标内容的单元格),回车就得到求和结果了

方法2:纯公式解法(无宏,适用于Excel 2016+或365)

不想折腾宏的话,直接用公式组合搞定:

通用公式(兼容多数版本)

=SUMPRODUCT(--TEXT(FILTERXML("<t><s>"&SUBSTITUTE(SUBSTITUTE(A1,"(", "</s><s>"),")","</s><s>")&"</s></t>","//s[number(.)=.]"),"0;;0;0"))

Excel 365简化版(支持动态数组)

=SUM(--TEXT(FILTERXML("<x><y>"&SUBSTITUTE(SUBSTITUTE(A1,"(", "</y><y>"),")","</y><y>")&"</y></x>","//y[translate(.,'0123456789','')='']"),"0"))

简单说下公式逻辑:

用SUBSTITUTE把括号替换成XML标签,让FILTERXML能提取出所有内容,再筛选出纯数字部分,转成数值后求和。

测试验证

比如单元格A1内容是:abc(200), def(300), gijklmno(5000), pqrstuvwx yz(50000)
用上面任意一种方法,都会算出55500的结果

内容的提问来源于stack exchange,提问作者Shanu Patil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 07:55:31