求助:仅对单元格内的美元金额数值进行求和
提取单元格内美元金额求和方案
方法1:动态数组公式(Excel 365/2021适用)
直接用下面的公式提取所有带$的数值并求和,把A1替换成你的目标单元格即可:
=SUM(--TEXTBEFORE(TEXTAFTER(A1,"$",SEQUENCE(LEN(A1)-LEN(SUBSTITUTE(A1,"$","")))),", ",1))
公式逻辑:
- 先统计单元格内
$的总数,确定需要提取的数值数量 - 逐个提取每个
$后面的文本片段,截取到逗号前得到纯数字文本 - 将文本格式的数字转为数值后求和
如果你的Excel版本不支持动态数组,使用这个数组公式(输入完成后按Ctrl+Shift+Enter确认):
=SUM(--MID(A1,FIND("$",A1,ROW(INDIRECT("1:"&LEN(A1))))+1,FIND(",",A1,FIND("$",A1,ROW(INDIRECT("1:"&LEN(A1)))))-FIND("$",A1,ROW(INDIRECT("1:"&LEN(A1))))-1))
方法2:自定义VBA函数
要是公式操作起来麻烦,写个简单的VBA函数更灵活:
- 按
Alt+F11打开VBA编辑器 - 右键你的工作簿→插入→模块,粘贴以下代码:
Function SumDollars(rng As Range) As Double Dim txt As String, parts As Variant, i As Integer Dim num As Double txt = rng.Value parts = Split(txt, "$") For i = 1 To UBound(parts) num = num + Val(Split(parts(i), ",")(0)) Next i SumDollars = num End Function
- 返回Excel,在空白单元格输入
=SumDollars(A1)就能得到求和结果
方法3:Power Query批量处理
如果需要处理多个单元格,用Power Query效率更高:
- 选中所有目标单元格→点击「数据」选项卡→「从表格/区域」(Excel会自动将选中区域转为表格)
- 在Power Query编辑器中,选中原数据列→「添加列」→「自定义列」,输入公式:
List.Sum(List.Transform(Text.Split([Column1],"$"), each if Text.Length(_)>0 then Value.FromText(Text.BeforeDelimiter(_,",")) else 0))
- 点击「关闭并上载」,求和结果会同步到Excel中
内容的提问来源于stack exchange,提问作者RoxAnn Moeller
相关产品推荐
相关产品推荐

