我有一个excel格式的报告,其中的案例号字段与其他字段具有一对多关系。例如:如果一个案例由多个团队处理,则每个团队都有单独的条目。
我正在尝试通过比较案例编号来连接行值,以删除重复项。
案例#团队类型名称国家/地区
111 aa xx名称国家/地区
111 bb yy国家(地区)
我希望输出为:
案例# 类型 团队 名称 国家
111 aa,bb xx,yy国家/地区
我下面有VBA代码:
Sub mergeCaseNumberValues()
Dim lngRow As Long
With ActiveSheet
Dim columnToMatch As Integer: columnToMatch = 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
For i = 2 To 12
.Cells(lngRow - 1, i).Value = .Cells(lngRow, i).Value & .Cells(lngRow - 1, i).Value
Next i
.Rows(lngRow).Delete
End If
lngRow = lngRow - 1
Loop Until lngRow = 1
End With
End Sub
它给了我:
案例#类型团队名称国家/地区
111 aabb xxyy NameName countrycountry
在数据中,每个条目只有团队和类型不同,其他值相同。如何修改VBA以获得结果?有人可以帮忙吗?
答案 0 :(得分:0)
我认为您需要对此进行更改:
For i = 2 To 12
.Cells(lngRow - 1, i).Value = .Cells(lngRow, i).Value & .Cells(lngRow - 1, i).Value
对此:
For i = 2 To 12
.Cells(lngRow - 1, i).Value = .Cells(lngRow, i).Value & ", " & .Cells(lngRow - 1, i).Value
您需要修复连接器以插入逗号。
对于您的重复问题,我认为类似的方法可能有用。请记住,它是未经测试的“空中代码”,但应该可以正确地引导您:
For i = 2 To 12
If .Cells(lngRow, i).Value <> .Cells(lngRow - 1, i).Value Then
.Cells(lngRow - 1, i).Value = .Cells(lngRow, i).Value & ", " & .Cells(lngRow - 1, i).Value
Else
.Cells(lngRow - 1, i).Value = .Cells(lngRow, i).Value
End If
基本上,您想使用IF语句比较这些值,如果它们相等,则您不希望同时使用它们。