如何在 Microsoft Excel 公式中获取字母数字字符串中的数值总和?

如何在 Microsoft Excel 公式中获取字母数字字符串中的数值总和?

我在单元格中有如下数据:

良好响应 -6、RNR -2、无声音 -1

我只需要计算单元格中数字的总和。如何用一个公式来实现?

答案1

我使用 ExcelRegEx 查找/替换插件,它为 Excel 添加了正则表达式功能。
(我与该插件没有任何关系,只是一个狂热用户)

在这里,您可以使用如下公式来查找并求和所有数字:
=SUM(RegExFind(A1,"\d+"))

或者也考虑负值:
=SUM(RegExFind(A1,"[-\d]+"))

在此处输入图片描述

答案2

根据提供的信息并假设只会提取 3 个值,每个值的长度为 1 位数字,以下内容适用于A2

=LEFT(SUMPRODUCT(MID(0&A2,LARGE(INDEX(ISNUMBER(--MID(A2,ROW($1:$25),1))* ROW($1:$25),0),ROW($1:$25))+1,1)*10^ROW($1:$25)/10),1)+RIGHT(SUMPRODUCT(MID(0&A2,LARGE(INDEX(ISNUMBER(--MID(A2,ROW($1:$25),1))* ROW($1:$25),0),ROW($1:$25))+1,1)*10^ROW($1:$25)/10),1)+RIGHT(A2,1)

当然我在这里做了一些假设,

如果这不起作用,请向我详细解释您的数据是如何构造的等等,我会尝试修改。

答案3

如果您的数据确实如您所显示的那样,数字前面有一个<space>,后面跟着一个<comma>或字符串的结尾,那么您可以使用以下内容。

定义公式并seq_99命名

seq_99 refers to:  =IF(ROW(INDEX($1:$65535,1,1):INDEX($1:$65535,255,1))=1,1,(ROW(INDEX($1:$65535,1,1):INDEX($1:$65535,255,1))-1)*99)

然后你可以使用这个数组输入公式:

=SUM(IF(ISNUMBER(--TRIM(MID(SUBSTITUTE(TRIM(SUBSTITUTE(A1,","," "))," ",REPT(" ",99)),seq_99,99))),--TRIM(MID(SUBSTITUTE(TRIM(SUBSTITUTE(A1,","," "))," ",REPT(" ",99)),seq_99,99))))

数组输入公式,按住ctrl+shift并点击enter。如果你操作正确,Excel 会{...}在公式周围放置括号,你可以在公式栏中看到它。

我假设-表示为负数。如果不是这样,则修改公式以排除它是很简单的。

答案4

我想建议一个小的 VBA 函数。请注意,分隔符可以按如下所示进行调整。

Function SumNumbers(rngS As Range, Optional strDelim As String = "-") As Double

    Dim xNums As Variant, lngNum As Long
    xNums = Split(rngS, strDelim)

    For lngNum = LBound(xNums) To UBound(xNums) Step 1
        SumNumbers = SumNumbers + Val(xNums(lngNum))
    Next lngNum

End Function

在此处输入图片描述

笔记:

  • 按通常方式使用此函数:=SumNumbers(单元格地址)
  • 如果分隔符是 SPACE,则使用strDelim 作为字符串 = “ “在参数列表中。
  • 如果分隔符是逗号,则使用strDelim 作为字符串 = ","在参数列表中。

我希望这可以帮助你。

相关内容