Excel – 将多个列组合到一个列中

我的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 

这个代码将会

  • 在当前工作表上的列A:D上运行
  • 在列A和B中共同logging组合的列C和列D的值
  • 运行不区分大小写
  • 输出到新的工作表

在这里输入图像描述

  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 

你可以使用excel连接函数来做到这一点。 这是一个很好的教程的链接

此外,为了处理重复,你可以有优秀的重点突出重复的条目,使他们可以很容易地删除。 看这里