|
楼主 |
发表于 2017-6-16 10:07
|
显示全部楼层
Sub Macro1()
Dim d1 As Object, d2 As Object
Set d1 = CreateObject("scripting.dictionary")
Set d2 = CreateObject("scripting.dictionary")
arr = Range("E6:I" & Range("E65536").End(xlUp).Row)
Dim brr: ReDim brr(1 To UBound(arr, 1), 1 To 7)
For i = 1 To UBound(arr, 1)
If InStr(arr(i, 5), "a") <> 0 Then
If d1.exists(arr(i, 1) & ",a") Then
d1(arr(i, 1) & ",a") = d1(arr(i, 1) & ",a") & "," & arr(i, 3)
Else
d1(arr(i, 1) & ",a") = arr(i, 3)
End If
ElseIf InStr(arr(i, 5), "b") <> 0 Then
If d2.exists(arr(i, 1) & ",b") Then
d2(arr(i, 1) & ",b") = d2(arr(i, 1) & ",b") & "," & arr(i, 3)
Else
d2(arr(i, 1) & ",b") = arr(i, 3)
End If
End If
Next
key1 = Application.Index(arr, , 1)
For Each k1 In d1.keys
r = Application.Match(Split(k1, ",")(0), key1, 0)
crr = Split(d1(k1), ",")
For i = 0 To 1
brr(r, i + 1) = Val(crr(i))
Next
Next
For Each k2 In d2.keys
r = Application.Match(Split(k2, ",")(0), key1, 0)
crr = Split(d2(k2), ",")
For i = 0 To 1
brr(r, i + 3) = Val(crr(i))
Next
brr(r, 5) = brr(r, 1) + brr(r, 2)
brr(r, 6) = brr(r, 3) + brr(r, 4)
brr(r, 7) = brr(r, 5) + brr(r, 6)
Next
Range("k6").Resize(UBound(brr, 1), 7) = brr
End Sub |
|