本帖最后由 monicaj 于 2013-10-29 22:49 编辑
请审阅。。。新代码如下:
Sub exe4()
t = Timer
Dim arr
Dim brr(1 To 2000, 1 To 4)
Dim i As Long, k As Integer, row1 As Integer
Dim d As New Dictionary
arr = Range("a2:c" & Range("c1048576").End(xlUp).Row)
For i = 1 To UBound(arr, 1)
If d.Exists(arr(i, 1)) = False Then
k = k + 1
d(arr(i, 1)) = k
brr(k, 1) = arr(i, 1)
brr(k, 2) = arr(i, 2)
brr(k, 3) = arr(i, 3)
Else
row1 = d(arr(i, 1))
brr(row1, 3) = brr(row1, 3) + arr(i, 3)
If brr(row1, 4) = "" Then
If arr(i, 2) < brr(row1, 2) Then
brr(row1, 4) = brr(row1, 2)
brr(row1, 2) = arr(i, 2)
Else
brr(row1, 4) = arr(i, 2)
End If
Else
If arr(i, 2) > brr(row1, 4) Then
brr(row1, 2) = brr(row1, 4)
brr(row1, 4) = arr(i, 2)
ElseIf arr(i, 2) > brr(row1, 2) Then
brr(row1, 2) = arr(i, 2)
End If
End If
End If
Next
Range("j2").Resize(UBound(brr), 3) = brr
MsgBox Timer - t
End Sub
|