Excel for Mac:如何求和同一单元格内换行分隔的括号内数值
同一单元格内换行分隔的括号数值求和方案
针对你Excel for Mac 16.16.27版本的情况,之前的高版本公式不兼容,给你两个可行方案:
方案1:VBA自定义函数(稳定可靠)
旧版Excel对复杂文本处理支持有限,VBA是最稳妥的选择:
- 打开Excel,按
Option + F11打开VBA编辑器 - 点击菜单栏「插入」→「模块」,粘贴以下代码:
Function SumInBrackets(rng As Range) As Double Dim str As String, arr() As String, i As Integer Dim num As Double, tempStr As String str = rng.Value arr = Split(str, vbLf) '按换行拆分单元格内容 For i = LBound(arr) To UBound(arr) tempStr = arr(i) '提取每行括号里的内容 If InStr(tempStr, "(") > 0 And InStr(tempStr, ")") > InStr(tempStr, "(") Then tempStr = Mid(tempStr, InStr(tempStr, "(") + 1, InStr(tempStr, ")") - InStr(tempStr, "(") - 1) If IsNumeric(tempStr) Then num = num + CDbl(tempStr) End If Next i SumInBrackets = num End Function
- 把文件存为「Excel启用宏的工作簿(.xlsm)」格式
- 在空白单元格输入
=SumInBrackets(A1)(把A1换成你的目标单元格),回车就能得到求和结果
方案2:嵌套公式(无需宏)
如果不想启用宏,用这个适配旧版的公式(目标单元格设为A1):
=SUMPRODUCT(--MID(SUBSTITUTE(SUBSTITUTE(A1,"(",REPT(" ",LEN(A1))),")",REPT(" ",LEN(A1))),ROW(INDIRECT("1:"&LEN(A1)))*LEN(A1)-LEN(A1)+1,LEN(A1)))
原理是把括号替换成足够长的空格,提取所有括号包裹的区域再转成数值求和,非数字的括号内容会自动忽略。输入后直接回车就行,不用按数组快捷键。
内容的提问来源于stack exchange,提问作者Najoua
相关产品推荐
相关产品推荐

