
我的單元格中有數據,例如:
良好響應-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 作為字串 = ","在參數列表中。
我希望這可以幫助你。