我需要合并具有相同名称的行,并保留每列的数据。例如,如果我们在第一列“Name”上有两行名为“Mr Bean”的行,则合并与名为“Mr Bean”的行相关的每列数据,然后删除第二行和第三行,将所有数据仅放在名为“Mr Bean”的第一行中。因此,我们应该将与一个人相关的所有数据放在一行中,而不是放在多行中。
+-------------------------------------------------------+
| Column Name Column 2 Column 3 Column 4 Column 5 |
| Mr Bean 2 3 |
| Mr Bean 2 3 5 |
| Mr X 3 3 |
| Mr Y 2 4 1 3 |
+-------------------------------------------------------+
期望输出:
+-------------------------------------------------------+
| Column Name Column 2 Column 3 Column 4 Column 5 |
| Mr Bean 2 3, 2 3 5 |
| Mr X 3 3 |
| Mr Y 2 4 1 3 |
+-------------------------------------------------------+
我的 Excel 文件大约有 4000 行和 450 列。
答案1
这应该可以满足您的要求,请根据需要进行修改-
Sub combine()
Application.ScreenUpdating = False
Dim c As Range
Dim i As Integer
For Each c In Range("A2", Cells(Cells.SpecialCells(xlCellTypeLastCell).Row, 1))
Label:
If c = c.Offset(1) And c <> "" Then
For i = 1 To 4
If c.Offset(1, i) <> "" Then
If c.Offset(, i) = "" Then
c.Offset(, i) = c.Offset(1, i)
Else: c.Offset(, i) = c.Offset(, i) & "," & c.Offset(1, i)
End If
End If
Next
c.Offset(1).EntireRow.Delete
GoTo Label
End If
Next
Application.ScreenUpdating = True
End Sub