|
这个快,字典和数组法,应该能解决你的问题了,代码如下excel稍后
- Option Explicit
- Sub samesum()
- Dim i As Long, n As Long, arr(), j As Long
- Dim d, t As Single
- t = Timer
- Set d = CreateObject("Scripting.Dictionary")
- n = Sheet2.[a65536].End(xlUp).Row
- arr = Sheet2.Range("a2:c" & n)
- For i = 1 To UBound(arr)
- d(arr(i, 1) & arr(i, 2)) = d(arr(i, 1) & arr(i, 2)) + arr(i, 3)
- Next
- Sheet1.[c3:h12].ClearContents
- Erase arr
- arr = Sheet1.Range(Sheet1.Cells(2, 2), Sheet1.Cells(Sheet1.[B65536].End(3).Row, Sheet1.[IV2].End(xlToLeft).Column))
- For i = 1 To UBound(arr, 1) - 1
- For j = 1 To UBound(arr, 2) - 1
- arr(i + 1, j + 1) = d(arr(i + 1, 1) & arr(1, j + 1))
- Next
- Next
- Sheet1.[b2].Resize(UBound(arr, 1), UBound(arr, 2)) = arr
- Erase arr
- Set d = Nothing
- MsgBox Timer - t & "秒"
- End Sub
复制代码 |
|