示例数据:
在工作表里面按ALT+F11,然后再按CTRL+R,在工作簿上点鼠标右键、插入模块,粘贴下面的代码:
Option Explicit
Sub x()
Dim arr, obj, i, j, k
arr = Range("a1").CurrentRegion
Set obj = CreateObject("Scripting.Dictionary")
For i = 2 To UBound(arr)
For j = 1 To 3
arr(i, j) = Trim(arr(i, j))
Next j
k = arr(i, 1) & vbTab & arr(i, 2)
If Not obj.Exists(k) Then obj.Add k, CreateObject("Scripting.Dictionary")
obj(k)(arr(i, 3)) = True
Next i
i = 2
For Each k In obj.Keys
j = Split(k, vbTab)
arr(i, 1) = j(0)
arr(i, 2) = j(1)
arr(i, 3) = Join(obj(k).Keys, "、")
i = i + 1
Next k
i = i - 1
Workbooks.Add
ActiveSheet.Range("a1").Resize(i, 3) = arr
End Sub
粘贴后如图:
此时可以按F5执行宏,会自动新生成一个合并好了的工作表,如下图:
代码使用上应该非常完美,只是注意一点,程序假设数据是从A1开始,如果你的表不是需要修改代码第5行arr = Range("a1").CurrentRegion里面的a1
用VBA处理,把发文件到mijizili@163.com