Stu*_*uti 3 excel vba excel-vba
我的excel表看起来像这样
c1 c2 c3 c4
ROW1 abc def 1 2
ROW2 abc def 3 4
ROW3 klm efg 11 5
ROW4 klm efg 12 89
Run Code Online (Sandbox Code Playgroud)
我想将数据组合成一个单独的列,用一个逗号分隔,用于重复的c1条目.所以excel表应该是这样的,
c1 c2 c3 c4
ROW1 abc def 1,3 2,4
ROW2 klm efg 11,12 5,89
Run Code Online (Sandbox Code Playgroud)
这段代码会
Sub QuickCombine()
Dim X()
Dim Y()
Dim objDic As Object
Dim lngRow As Long
Dim lngCol As Long
Dim ws As Worksheet
X = Range([a1], Cells(Rows.Count, "D").End(xlUp))
Y = X
Set objDic = CreateObject("scripting.dictionary")
For lngRow = 1 To UBound(X, 1)
If Not objDic.exists(LCase$(X(lngRow, 1) & X(lngRow, 2))) Then
objDic.Add LCase$(X(lngRow, 1) & X(lngRow, 2)), lngRow
Else
Y(lngRow, 1) = vbNullString
Y(objDic.Item(LCase$(X(lngRow, 1) & X(lngRow, 2))), 3) = Y(objDic.Item(LCase$(X(lngRow, 1) & X(lngRow, 2))), 3) & "," & X(lngRow, 3)
Y(objDic.Item(LCase$(X(lngRow, 1) & X(lngRow, 2))), 4) = Y(objDic.Item(LCase$(X(lngRow, 1) & X(lngRow, 2))), 4) & "," & X(lngRow, 4)
End If
Next
Set ws = Sheets.Add
ws.[a1].Resize(UBound(X, 1), UBound(X, 2)) = Y
ws.Columns("A").SpecialCells(xlBlanks).EntireRow.Delete
End Sub
Run Code Online (Sandbox Code Playgroud)