- Sub Macro1()
- Dim arr, brr(1 To 20000, 1 To 8), d, i%, j&, s&
- Set d = CreateObject("scripting.dictionary")
- For i = 2 To Sheets.Count
- arr = Sheets(i).Range("a1").CurrentRegion
- For j = 2 To UBound(arr)
- zf = arr(j, 1) & "," & arr(j, 2) & "," & arr(j, 3)
- If Not d.exists(zf) Then
- s = s + 1
- d(zf) = s
- brr(s, 1) = arr(j, 1)
- brr(s, 2) = arr(j, 2)
- brr(s, 3) = arr(j, 3)
- brr(s, 8) = arr(j, 5)
- brr(s, i + 2) = arr(j, 4)
- Else
- brr(d(zf), i + 2) = brr(d(zf), i + 2) + arr(j, 4)
- End If
- Next
- Next
- For i = 1 To s
- brr(i, 7) = brr(i, 4) + brr(i, 5) - brr(i, 6)
- Next
- Range("a2").Resize(s, 8) = brr
- End Sub
复制代码 |