尝试下面的代码,它假设你有标题和唯一ID是在A列和描述列B.
Option Explicit
Sub HTH()
Dim vData As Variant
Dim lLoop As Long
Dim strID As String, strDesc As String
'// Original data sheet, change codename to suit
vData = Sheet1.UsedRange.Value
With CreateObject("Scripting.Dictionary")
.CompareMode = 1
For lLoop = 1 To UBound(vData, 1)
strID = vData(lLoop, 1):strDesc = vData(lLoop, 2)
If Not .exists(strID) Then
.Add strID, strDesc
Else
.Item(strID) = .Item(strID) & " " & strDesc
End If
Next
'// Data output, change sheet codename to suit
Sheet2.Range("a1").Resize(.Count).Value = Application.Transpose(.keys)
Sheet2.Range("b1").Resize(.Count).Value = Application.Transpose(.items)
End With
End Sub
编辑
如果你想删除的覆盖原始数据然后尝试:
Option Explicit
Sub HTH()
Dim vData As Variant
Dim lLoop As Long
Dim strID As String, strDesc As String
'// Change all references of activesheet to your worksheet codename.
With ActiveSheet.UsedRange
vData = .Value
.Clear
End With
With CreateObject("Scripting.Dictionary")
.CompareMode = 1
For lLoop = 1 To UBound(vData, 1)
strID = vData(lLoop, 1):strDesc = vData(lLoop, 2)
If Not .exists(strID) Then
.Add strID, strDesc
Else
.Item(strID) = .Item(strID) & " " & strDesc
End If
Next
'// Data output, change sheet codename to suit
ActiveSheet.Range("a1").Resize(.Count).Value = Application.Transpose(.keys)
ActiveSheet.Range("b1").Resize(.Count).Value = Application.Transpose(.items)
End With
End Sub
请不要发表两次相同的问题。将来,如果您突然改变了对其内容的看法,请编辑原始问题。 –