When analyzing the data in Excel, you may find it contains multiple duplicate rows. In this case, perhaps you’ll want to quickly consolidate the rows. This post will offer 2 quick means to get it.
Many users frequently need to merge the duplicate rows and sum the according values in Excel. For instance, I have a range of data in an Excel worksheet which contains a plenty of duplicate entries, like the following screenshot. Hence, I wish to consolidate the duplicate rows and sum the corresponding values in another column. It will be definitely troublesome if I manually do this. Therefore, I utilize the following 2 ways to realize it.
Method 1: Use “Consolidate” Function
- First off, click a blank cell where you want to place the merged and summed data.
- Then, turn to “Data” tab and click on the “Consolidate” button.
- In the popup dialog box, ensure “Sum” is selected in “Function” box.
- Next, click the
button.
- Later, select the range which you want to consolidate and click
button.
- After that, click “Add” button in “Consolidate” dialog.
- Subsequently, check the “Top row” and “Left column” option.
- Finally, click “OK” button.
- At once, the rows are consolidated, as shown in the following screenshot.
Method 2: Use Excel VBA Code
- At the very beginning, select the range that you want.
- Then, trigger VBA editor according to “How to Run VBA Code in Your Excel“.
- Next, copy the following VBA code into a module.
Sub MergeRowsSumValues()
Dim objSelectedRange As Excel.Range
Dim varAddressArray As Variant
Dim nStartRow, nEndRow As Integer
Dim strFirstColumn, strSecondColumn As String
Dim objDictionary As Object
Dim nRow As Integer
Dim objNewWorkbook As Excel.Workbook
Dim objNewWorksheet As Excel.Worksheet
Dim varItems, varValues As Variant
On Error GoTo ErrorHandler
Set objSelectedRange = Excel.Application.Selection
varAddressArray = Split(objSelectedRange.Address(, False), ":")
nStartRow = Split(varAddressArray(0), "$")(1)
strFirstColumn = Split(varAddressArray(0), "$")(0)
nEndRow = Split(varAddressArray(1), "$")(1)
strSecondColumn = Split(varAddressArray(1), "$")(0)
Set objDictionary = CreateObject("Scripting.Dictionary")
For nRow = nStartRow To nEndRow
strItem = ActiveSheet.Range(strFirstColumn & nRow).Value
strValue = ActiveSheet.Range(strSecondColumn & nRow).Value
If objDictionary.Exists(strItem) = False Then
objDictionary.Add strItem, strValue
Else
objDictionary.Item(strItem) = objDictionary.Item(strItem) + strValue
End If
Next
Set objNewWorkbook = Excel.Application.Workbooks.Add
Set objNewWorksheet = objNewWorkbook.Sheets(1)
varItems = objDictionary.keys
varValues = objDictionary.items
nRow = 0
For i = LBound(varItems) To UBound(varItems)
nRow = nRow + 1
With objNewWorksheet
.Cells(nRow, 1) = varItems(i)
.Cells(nRow, 2) = varValues(i)
End With
Next
objNewWorksheet.Columns("A:B").AutoFit
ErrorHandler:
Exit sub
End Sub
- After that, press “F5” to run this macro now.
- When macro finishes, a new Excel workbook will show up, in which you can see the merged rows and summed data, like the image below.
Comparison
| Advantages | Disadvantages | |
| Method 1 | Easy to operate | Can’t process the two columns not next to each other |
| Method 2 | 1. Convenient for reuse | 1. A bit difficult to understand for VBA newbies |
| 2. Won’t mess up the original Excel sheet in that it put the merged data in the new file | 2. Can’t process the two columns not next to each other |
When Encountering Excel Crash
As we all know, Excel can crash from time to time. Under this circumstance, at its worst, the current Excel file may be corrupted directly. At that time, you have no choice but to attempt Excel recovery. It demands you to either ask professionals for help or make use of a specialized Excel repair tool, such as DataNumen Excel Repair.
Author Introduction:
Shirley Zhang is a data recovery expert in DataNumen, Inc., which is the world leader in data recovery technologies, including corrupt SQL Server and outlook repair software products. For more information visit www.datanumen.com








