我正在尝试使用最简单的方法合并包含类似数据的行,但我认为它需要一些VBA。如果有人能指出我正确的方向,这将是伟大的。
我想要实现的一个例子是:
NAME | AGE| AREA
John | 32 | Portsmouth
Will | 32 | Portsmouth
Matt | 28 | Southampton
Dave | 32 | Portsmouth
Phil | 28 | Southampton
Tony | 25 | Winchester
变成:
AGE| AREA | Name 1 | Name 2 | Name 3 |
32 | Portsmouth | John | Dave | Will |
28 | Southampton | Matt | Phil | |
25 | Winchester | Tony | | |
编辑:我已经设法将我需要的东西堆积在一起,但它似乎将非重复数据放入同一列而不是我首选的Name 1 | Name 2 | Name 3
任何关于更新此填充单独单元格的想法而不是一样吗?
以下是更新:
Sub mergeCategoryValues()
Dim lngRow As Long
With ActiveSheet
Dim columnToMatch As Integer: columnToMatch = 2
Dim columnToConcatenate As Integer: columnToConcatenate = 1
lngRow = .Cells(65536, columnToMatch).End(xlUp).Row
.Cells(columnToMatch).CurrentRegion.Sort key1:=.Cells(columnToMatch), Header:=xlYes
Do
If .Cells(lngRow, columnToMatch) = .Cells(lngRow - 1, columnToMatch) Then
.Cells(lngRow - 1, columnToConcatenate) = .Cells(lngRow - 1, columnToConcatenate) & "; " & .Cells(lngRow, columnToConcatenate)
.Rows(lngRow).Delete
End If
lngRow = lngRow - 1
Loop Until lngRow = 1
End With
End Sub
答案 0 :(得分:1)
执行此操作时:
If .Cells(lngRow, columnToMatch) = .Cells(lngRow - 1, columnToMatch) Then
你期望进入这种状况吗? 如果之前设置了lngRow(在你的情况下为7)并且columnToMatch为1,除非单元格(7,1)和(6,1)具有相同的信息,否则它将不会执行任何操作。