How to combine rows with same ID/name in Excel?
For example, you have a table as below screenshot shown, and you need to combine rows with the order IDs, any ideas? Here, this article will introduce two solutions for you.
- Reuse Anything: Add the most used or complex formulas, charts and anything else to your favorites, and quickly reuse them in the future.
- More than 20 text features: Extract Number from Text String; Extract or Remove Part of Texts; Convert Numbers and Currencies to English Words.
- Merge Tools: Multiple Workbooks and Sheets into One; Merge Multiple Cells/Rows/Columns Without Losing Data; Merge Duplicate Rows and Sum.
- Split Tools: Split Data into Multiple Sheets Based on Value; One Workbook to Multiple Excel, PDF or CSV Files; One Column to Multiple Columns.
- Paste Skipping Hidden/Filtered Rows; Count And Sum by Background Color; Send Personalized Emails to Multiple Recipients in Bulk.
- Super Filter: Create advanced filter schemes and apply to any sheets; Sort by week, day, frequency and more; Filter by bold, formulas, comment...
- More than 300 powerful features; Works with Office 2007-2019 and 365; Supports all languages; Easy deploying in your enterprise or organization.
This method will introduce a VBA to quickly combine all rows with the same ID or name in the specified selection. Please do as follows:
1. Press Alt + F11 keys to open the Microsoft Visual Basic for Applications window.
2. Click Insert > Module, and then paste the VBA code into the Module window.
VBA: Combine Rows with the Same ID/name in Excel
Sub Consolidate_Rows() Dim xRg As Range Dim xRows As Long Dim I As Long, J As Long, K As Long On Error Resume Next Set xRg = Application.InputBox("Select Range:", "Kutools For Excel", Selection.Address, , , , , 8) Set xRg = Range(Intersect(xRg, ActiveSheet.UsedRange).Address) If xRg Is Nothing Then Exit Sub xRows = xRg.Rows.Count For I = xRows To 2 Step -1 For J = 1 To I - 1 If xRg(I, 1).Value = xRg(J, 1).Value And J <> I Then For K = 2 To xRg.Columns.Count If xRg(J, K).Value <> "" Then If xRg(I, K).Value = "" Then xRg(I, K) = xRg(J, K).Value Else xRg(I, K) = xRg(I, K).Value & "," & xRg(J, K).Value End If End If Next xRg(J, 1).EntireRow.Delete I = I - 1 J = J - 1 End If Next Next ActiveSheet.UsedRange.Columns.AutoFit End Sub
3. Press the F5 key or click the Run button to run this VBA.
4. In the popping out Kutools for Excel dialog box, please select the rows you will combine, and click the OK button. See screenshot:
Now you will see the rows in the specified range are combined with commas by the same ID. See screenshot:
Note: This VBA can only combine rows by the values in the first column. For example you want to combine rows by the same name, you must move the name column to the first column of the specified range.
If you have Kutools for Excel installed, you can apply its Advanced Combine Rows feature to quickly combine rows with the same ID or names in the specified range.
1. Select the rows you will combine, and click Kutools > Content > Advanced Combine Rows. See screenshot:
2. In the Advanced Combine Rows dialog box, please select the ID or name column you will combine by, click Primary Key, and then specify combination rules for other columns as you need.
In my case, (1) I select the Order ID column, and click Primary Key; (2) select the Date column, and click Calculate > Count; (3) select the Salesman column, and click Combine > Comma; (4) select the Amount column, and click Calculate > Sum. See screenshot:
3. Click the OK button.
Now you will see the selected rows are combined based on the order ID. See screenshot: