我使用下面的代碼 - 感謝@bonCodigo串連細胞時有重複,而無需使用移調
Sub groupConcat()
Dim dc As Object
Dim inputArray As Variant
Dim i As Integer
Set dc = CreateObject("Scripting.Dictionary")
inputArray = WorksheetFunction.Transpose(Sheets(1).Range("A2:B7").Value)
'-- assuming you only have two columns - otherwise you need two loops
For i = LBound(inputArray, 2) To UBound(inputArray, 2)
If Not dc.Exists(inputArray(1, i)) Then
dc.Add inputArray(1, i), inputArray(2, i)
Else
dc.Item(inputArray(1, i)) = dc.Item(inputArray(1, i)) _
& "; " & inputArray(2, i)
End If
Next i
'--output into sheet
Sheets(1).Range("D2").Resize(UBound(dc.keys) + 1) = _
Application.Transpose(dc.keys)
Sheets(1).Range("E2").Resize(UBound(dc.items) + 1) = _
Application.Transpose(dc.items)
Set dc = Nothing
End Sub
一個非常優雅的解決方案。不幸的是,我遇到了使用Transpose方法的限制。我有很長的字符串,我想使用上面的代碼進行連接。 任何幫助將不勝感激。
問候
什麼限制,,你沒有解釋你的問題? – brettdj
@brettdj代碼無法根據需要調整大小。 – user3808977
@brettdj代碼無法根據需要調整大小。它適用於較小的值,但在連接結果爲單元值超過250個字符時失敗。代碼停止在inputArray = WorksheetFunction.Transpose(Sheets(1).Range(「A2:B7」)。Value)時積累(由於連接或其他原因)250+個字符。它也停在Sheets(1).Range(「E2」)。Resize(UBound(dc.items)+ 1)= _ Application.Transpose(dc.items) – user3808977