Option Explicit
Sub test()
Dim arr, i, j, k, sum, t, dic, m
Set dic = CreateObject("scripting.dictionary")
t = Split("源数据1 源数据2")
For i = 0 To UBound(t)
arr = Sheets(t(i)).[a1].CurrentRegion
If i = 0 Then ReDim brr(1 To 20, 1 To 10 ^ 3, 1 To UBound(arr, 2)), sum(1 To 20)
For j = 2 To UBound(arr, 1)
If Not dic.exists(arr(j, 6)) Then m = m + 1: dic(arr(j, 6)) = m
sum(dic(arr(j, 6))) = sum(dic(arr(j, 6))) + 1
For k = 1 To UBound(arr, 2)
brr(dic(arr(j, 6)), sum(dic(arr(j, 6))), k) = arr(j, k)
Next k, j, i
i = 0
For Each t In dic.keys
m = 0: i = i + 1
ReDim arr(1 To 10 ^ 3, 1 To UBound(arr, 2))
For j = 1 To sum(i)
m = m + 1
For k = 1 To UBound(brr, 3): arr(m, k) = brr(i, j, k): Next
Next
With Sheets(t).[a2]
.Resize(Rows.Count - 1, UBound(arr, 2)).ClearContents
If m > 0 Then .Resize(m, UBound(arr, 2)) = arr
End With
Next
End Sub |