Note: The other languages of the website are Google-translated. Back to English

如何僅在Excel中將括號中的數字求和?

如果有文本字符串列表,而您只想將括號中的所有數字加起來,如下圖所示,您如何快速處理它? 在本文中,我為您介紹了一些技巧,使您僅在Excel中將括號中的數字求和。


方括號內的數字總和僅包含公式

要僅對括號內的數字求和,可以先提取括號內的數字,然後將它們相加。

1.在您要對其方括號中的數字求和的單元格旁邊選擇一個空白單元格,例如B2,輸入此公式
=IF(ISERROR(MID(A1,FIND("(",A1)+1,(FIND(")",A1))-(FIND("(",A1)+1))),0,(MID(A1,FIND("(",A1)+1,(FIND(")",A1))-(FIND("(",A1)+1)))+0),
然後向下拖動自動填充手柄以從每個單元格中提取括號中的數字。 看截圖:
括號中的文檔總和編號2

尖端:在公式中,A1是要從中提取括號內數字的單元格。

2.選擇一個將求和結果放在其中的單元格,輸入 = SUM(B1:B8),然後按 Enter 鍵。 看截圖:
括號中的文檔總和編號3

小提示: 在公式中,B1:B8是您從文本字符串原始列表中提取並想要求和的數字。


方括號內的總和數僅適用於定義函數

您也可以將“定義的函數”應用於括號內的數字求和。

1。 按 Alt + F11鍵 啟用鍵 Microsoft Visual Basic for Applications 窗口中,單擊 插入 > 模塊,然後將以下代碼粘貼到空白腳本中。

VBA:括號中的總和

Function SumBracket(Target As Range) As Double
'UpdatebyExtendoffice20160901
Dim xCell As Range
Dim xObjs As Object, xObj As Object
Dim xSum As Double
Set xObjs = CreateObject("VBScript.RegExp")
xSum = 0
With xObjs
    .Global = True
    .Pattern = "\((\d+(\.\d+)?)\)"

    For Each xCell In Target
      If xCell.Value <> "" Then
        For Each xObj In xObjs.Execute(xCell.Value)
            xSum = xSum + xObj.submatches(0)
        Next
      End If
    Next
End With
SumBracket = xSum
End Function

括號中的文檔總和編號4

2.保存代碼,然後選擇要放置結果的單元格,然後輸入此公式 = SumBracket(A1:A8), 按 Enter 鍵。 看截圖:
括號中的文檔總和編號5


括號內的數字總和僅適用於Kutools for Excel

其實, Excel的Kutools提取文字 函數提取括號內的數字,然後應用 絕對值總和 函數對數字求和。

Excel的Kutools, 與以上 300 方便的功能,使您的工作更加輕鬆。 

安裝後 Kutools for Excel,請執行以下操作:(立即免費下載Kutools for Excel!)

1.在括號中選擇要提取數字的字符串,然後單擊 庫圖爾s> 文本 > 提取文字。 看截圖:
括號中的文檔總和編號6

2。 在裡面 提取文字 對話框中,輸入 (*)文本 文本框,然後單擊 加入 將其添加到 提取清單。 然後點擊 Ok,然後選擇一個單元格以將提取的數字放在彈出對話框中,例如C1。 看截圖:

備註: 如果還有其他提取規則 提取清單 部分,請取消選中這些提取規則,而僅檢查新添加的提取規則 (*).


括號中的文檔總和編號7 向右射箭 括號中的文檔總和編號8

3。 點擊 OK,現在提取了方括號中的數字。 默認情況下,括號內的數字被識別為負數,您需要將其絕對值相加。
括號中的文檔總和編號9

4.選擇一個要在其中放置計算結果的單元格,單擊 庫工具 > 公式助手 > 數學與三角學 > 絕對值總和。 看截圖:
括號中的文檔總和編號10

5。 在裡面 公式助手 對話框中,選擇包含提取數字的範圍 文本框,在這種情況下為C1:C8。 請點擊 Ok,已添加數字的絕對值。 看截圖:

括號中的文檔總和編號11 向右射箭 括號中的文檔總和編號12

小費。 如果您想免費試用 提取文字總和絕對值的功能, 請免費下載Kutools for Excel 首先,然後按照上述步驟進行操作。


最佳辦公效率工具

Kutools for Excel 解決了你的大部分問題,並將你的生產力提高了 80%

  • 重用: 快速插入 複雜的公式,圖表 以及您以前使用過的任何東西; 加密單元 帶密碼 創建郵件列表 並發送電子郵件...
  • 超級公式欄 (輕鬆編輯多行文本和公式); 閱讀版式 (輕鬆讀取和編輯大量單元格); 粘貼到過濾範圍...
  • 合併單元格/行/列 不會丟失數據; 拆分單元格內容; 合併重複的行/列...防止細胞重複; 比較範圍...
  • 選擇重複或唯一 行; 選擇空白行 (所有單元格都是空的); 超級查找和模糊查找 在許多工作簿中; 隨機選擇...
  • 確切的副本 多個單元格,無需更改公式參考; 自動創建參考 到多張紙; 插入項目符號,複選框等...
  • 提取文字,添加文本,按位置刪除, 刪除空間; 創建和打印分頁小計; 在單元格內容和註釋之間轉換...
  • 超級濾鏡 (將過濾方案保存並應用於其他工作表); 高級排序 按月/週/日,頻率及更多; 特殊過濾器 用粗體,斜體...
  • 結合工作簿和工作表; 根據關鍵列合併表; 將數據分割成多個工作表; 批量轉換xls,xlsx和PDF...
  • 超過 300 項強大的功能. 支持 Office / Excel 2007-2021 和 365。支持所有語言。 在您的企業或組織中輕鬆部署。 完整功能 30 天免費試用。 60 天退款保證。
kte選項卡201905

Office選項卡為Office帶來了選項卡式界面,使您的工作更加輕鬆

  • 在Word,Excel,PowerPoint中啟用選項卡式編輯和閱讀,發布者,Access,Visio和Project。
  • 在同一窗口的新選項卡中而不是在新窗口中打開並創建多個文檔。
  • 將您的工作效率提高 50%,每天為您減少數百次鼠標點擊!
officetab底部
按評論排序
留言 (15)
還沒有評分。 成為第一位評論!
網站主持人對此評論進行了最小化
您好,是否有 VBA 腳本的 Google App Script 版本。 我想在 Google 表格中使用它。
謝謝。 :D
網站主持人對此評論進行了最小化
對不起,我不知道
網站主持人對此評論進行了最小化
嗨,我如何修改模式以總結 F-( 和 ) 之間的所有內容


我的數據示例是:F-(10) F-(12) E-(8)


總和是 22


謝謝
網站主持人對此評論進行了最小化
嗨,安迪,請嘗試以下代碼:
函數 SumBracket(Target As Range) As Double
'更新通過Extendoffice20160901
將 xCell 調暗為範圍
將 xObj 作為對象,xObj 作為對象
Dim xSum 為 Double
設置 xObjs = CreateObject("VBScript.RegExp")
x總和 = 0
使用 xObjs
.Global = 真
.Pattern = "\-\((\d+(\.\d+)?)\)"

對於目標中的每個 xCell
如果 xCell.Value <> "" 那麼
對於 xObjs.Execute(xCell.Value) 中的每個 xObj
xSum = xSum + xObj.submatches(0)
下一頁
如果結束
下一頁
結束
SumBracket = xSum
函數結束
網站主持人對此評論進行了最小化
如何在括號內添加數字?
網站主持人對此評論進行了最小化
對不起,我的意思是在括號外加上數字。
網站主持人對此評論進行了最小化
嗨,Adduar,我沒有找到解決您問題的公式,也許您只能使用 Kutools for Excel 的提取文本工具先提取數字,然後將它們求和,條件是 *( 和 )*。
網站主持人對此評論進行了最小化
您好!
danke, Makro funktioniert super, aber leider nur mit Ganze Zahl, nicht mit Bruchzahl。 Wäre das möglich zu ändern?
網站主持人對此評論進行了最小化
...ich meinte addieren Dezimalbruche 🙂
網站主持人對此評論進行了最小化
嗨,Wojtek,如果您只想對十進制數求和,請嘗試以下代碼:
Function SumBracket(Target As Range) As Double
'UpdatebyExtendoffice20221209
Dim xCell As Range
Dim xObjs As Object, xObj As Object
Dim xSum As Double
Dim xNum As Integer
On Error Resume Next
Application.Volatile
Set xObjs = CreateObject("VBScript.RegExp")
xSum = 0
With xObjs
    .Global = True
    .Pattern = "\((\d+(\.\d+)?)\)"

    For Each xCell In Target
      If xCell.Value <> "" Then
        For Each xObj In xObjs.Execute(xCell.Value)
            xSum = xSum + Val(xObj.submatches(0)) - Int(Val(xObj.submatches(0)))
        Next
      End If
    Next
End With
SumBracket = xSum
End Function
網站主持人對此評論進行了最小化
你好桑尼格,
vielen Dank für die schnelle Antwort 😀。 Um die Ganze klar zu machen gebe ich ein Beispiel meiner Aufgabe:

a(5), b(2,5), c(0,25) = 7,75

wie gesagt,麻省理工學院:

a(5), b(2), c(21) im eine Zelle funktioniert die erste Makro super。

致以真誠的感謝和誠摯的問候
WOJTEK
網站主持人對此評論進行了最小化
抱歉,Wojtek,我不理解 Geman,我只是通過谷歌翻譯你的問題,所以我不能清楚地理解你的問題。 你能不能給我更多的描述,比如數據結構,它們是在一個單元格中還是在不同的單元格中,在一列中還是在一行中,你想要什麼結果。
網站主持人對此評論進行了最小化
你好桑尼格,

noch mal vielen Dank für die Mühe。

Geht um Summe alle Zahlen die in der Klammer stehen...
Erste Zelle: 458/1(2,5), 458/2(11), 458/3(0,75)
Zweite Zelle:Summe von 2,5 和 11 和 0,75
alles in der Klammer steht in der erste Zelle sollte summiert sein。 das Ergebnis soll in der Zweite Zelle erscheinen。

致以真誠的感謝和誠摯的問候
WOJTEK
網站主持人對此評論進行了最小化
你好,如果你的數據和結果是這樣的:
https://cdn.extendoffice.com/images/stories/comments/sun-comment/doc-sunbracket.png
文章中的vba可以搞定。
網站主持人對此評論進行了最小化
Vielen Dank Sonnig,

jetzt ich sehe wo war das 問題。 Sie schreiben im VBA und Zelle "." statt wie bei mir "," Ich habe im VBA diese Zeile:
.Pattern = "\((\d+(\.\d+)?)\)"
中文:
.Pattern = "\((\d+(\,\d+)?)\)"
geändert und dann funktioniert alles perfekt。

Noch mall vielen,vielen Dank。
問候

WOJTEK
這裡還沒有評論
留下你的意見
以訪客身份發帖
×
評價此帖子:
0   字符
推薦地點

關注我們

版權所有©2009 - 萬維網。extendoffice.com。 | 版權所有。 供電 ExtendOffice。 |
Microsoft和Office徽標是Microsoft Corporation在美國和/或其他國家的商標或註冊商標。
受Sectigo SSL保護