如何在 Microsoft Excel 公式中取得字母數字字串中的數值總和?

如何在 Microsoft Excel 公式中取得字母數字字串中的數值總和?

我的單元格中有數據,例如:

良好響應-6,RNR -2,無語音-1

我只需要獲得單元格中數字的總和。我怎麼才能用一個公式做到這一點?

答案1

我用Excel正規表示式尋找/取代插件,它向 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>,後面帶有 a<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(單元格位址)
  • 如果分隔符號是空格,則使用strDelim As String = " "在參數列表中。
  • 如果分隔符號是 COMMA,則使用strDelim 作為字串 = ","在參數列表中。

我希望這可以幫助你。

相關內容