Application.DisplayAlerts = False
Dim rng As Range
For Each rng In Selection
If rng.Value = rng.Offset(1, 0).Value And rng.Value <> "" Then
Range(rng, rng.Offset(1, 0)).Merge
In Excel，you may always meet this problem, when you have a range of data which contains some duplicate entries, and now you want to combine the duplicate data and sum the corresponding values in another column, as following screenshots shown. How could you solve this problem?
The Consolidate is a useful tool for us to consolidate multiple worksheets or rows in Excel, so with this function, we can also summarize multiple rows based on the duplicates. Please do with the following steps:
1. Click a cell where you want to locate the result in your current worksheet.
2. Go to click Data > Consolidate, see screenshot:
3. In the Consolidate dialog box:
4. After finishing the settings, click OK, and the duplicates are combined and summed. See screenshot:
Note: If the range do not have the header row, you need uncheck Top row from the Use labels in option.
The following VBA code also can help you consolidate duplicate rows in the worksheet, but at the same time, the original data will be destroyed, you need to backup a copy of the data.
1. Hold down the ALT + F11 keys, then it opens the Microsoft Visual Basic for Applications window.
2. Click Insert > Module, and paste the following code in the Module Window.
VBA code: Combine duplicate rows and sum the values
Sub CombineRows() 'Update 20130829 Dim WorkRng As Range Dim Dic As Variant Dim arr As Variant On Error Resume Next xTitleId = "KutoolsforExcel" Set WorkRng = Application.Selection Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8) Set Dic = CreateObject("Scripting.Dictionary") arr = WorkRng.Value For i = 1 To UBound(arr, 1) Dic(arr(i, 1)) = Dic(arr(i, 1)) + arr(i, 2) Next Application.ScreenUpdating = False WorkRng.ClearContents WorkRng.Range("A1").Resize(Dic.Count, 1) = Application.WorksheetFunction.Transpose(Dic.keys) WorkRng.Range("B1").Resize(Dic.Count, 1) = Application.WorksheetFunction.Transpose(Dic.items) Application.ScreenUpdating = True End Sub
3. Then press F5 key to run this code, and you need to select the range that you want to consolidate in the popped out prompt box. See screenshot:
4. And then click OK, the duplicate rows have been combined and the values are added up.
Note: If you want to use this code, you’d better make a copy of the file to avoid destroying the data, and this code is only applied to two columns.
Here, I introduce the handy tool -- Kutools for Excel for you, its Advanced Combine Rows also can quickly do a favor to solve this problem.
|Kutools for Excel : with more than 300 handy Excel add-ins, free to try with no limitation in 30 days. Get it Now .|
After installing Kutools for Excel, please do as follows:
1. Select the range you need and click Kutools > Merge & Split > Advanced Combine Rows. See screenshot:
2. In the Advanced Combine Rows dialog, check My data has headers if your range have headers, and select column name which you want to combine the duplicates and click Primary Key, see screenshot:
3. And then select the column name you want to sum the values and click Calculate > Sum or other calculations as you need. See screenshot:
4. Click Ok to close dialog, then you can see the duplicates are combined and the corresponding data in another column are added up together. See screenshots:
Sometimes, you want to combine the rows based on duplicate values in another column, the Advanced Combine Rows of Kutools for Excel also can do a favor for you, please do as follows:
1. Select the data range that you want to use, and then click Kutools > Content > Advanced Combine Rows to enable the Advanced Combine Rows dialog box.
2. In the Advanced Combine Rows dialog box, click the column name that you want to combine other data based on, and click Primary Key, see screenshot:
3. And then click another column name that you want to combine the data, and click Combine to choose a separator to separate your combined values, see screenshot:
4. Then click Ok, all the values with the same cell in column A have been combined together, see screenshots: