如果您打開VBA解決方案,可以通過以下代碼輕鬆實現。 該代碼假定數據在列A:C中,row1是標題行。 輸出將寫入列E:G。您可以根據您的要求更改輸出位置。 如果需要,還可以將輸出寫回到所需格式的列A:C中。
Sub SummarizeData()
Dim i As Long
Dim x, y, dict, it
Application.ScreenUpdating = False
'clearing columns E:G before writing the output
Columns("E:G").ClearContents
x = Range("A1").CurrentRegion.Value
Set dict = CreateObject("Scripting.Dictionary")
For i = 1 To UBound(x, 1)
If dict.exists(x(i, 1) & ";" & x(i, 2)) Then
dict.Item(x(i, 1) & ";" & x(i, 2)) = dict.Item(x(i, 1) & ";" & x(i, 2)) & ", " & x(i, 3)
Else
dict.Item(x(i, 1) & ";" & x(i, 2)) = x(i, 3)
End If
Next i
i = 1
ReDim y(1 To dict.Count, 1 To 3)
For Each it In dict.keys
y(i, 1) = Split(it, ";")(0)
y(i, 2) = Split(it, ";")(1)
y(i, 3) = dict.Item(it)
i = i + 1
Next it
'Writing the output in columns E:G
Range("E1").Resize(dict.Count, 3).Value = y
Application.ScreenUpdating = True
End Sub