我的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
我想将数据组合成一个单独的列,用一个逗号分隔,用于重复的c1条目。所以excel表应该是这样的,
c1 c2 c3 c4
ROW1 abc def 1,3 2,4
ROW2 klm efg 11,12 5,89
答案 0 :(得分:5)
此代码
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
答案 1 :(得分:0)
您可以使用excel concatenate函数执行此操作。这是good tutorial
的链接此外,要处理重复项,您可以使用Excel突出显示重复条目,以便轻松删除它们。 See here