|
用数组做的,速度还是太慢,不知道还有什么更好的办法吗?
Sub a()
Dim arr, ar, brr, crr(), t
Dim i, j As Long
t = Timer
i = Cells(Rows.Count, 1).End(3).Row
arr = Range("a2:G" & i)
ar = Application.Index(arr, 0, 1)
For j = 1 To UBound(ar)
ar(j, 1) = ar(j, 1) & "*"
Next j
brr = Application.CountIf(Range("k:k"), ar)
ReDim crr(1 To UBound(arr) + Application.Sum(brr), 1 To 8)
j = 1
For i = 1 To UBound(ar)
crr(j, 1) = arr(i, 1)
crr(j, 2) = arr(i, 2)
crr(j, 3) = arr(i, 3)
crr(j, 4) = arr(i, 4)
crr(j, 5) = arr(i, 5)
crr(j, 6) = arr(i, 6)
crr(j, 7) = arr(i, 7)
j = j + 1 + brr(i, 1)
Next i
For i = 1 To UBound(crr)
If crr(i, 7) = "" Then crr(i, 7) = crr(i - 1, 7)
Next i
Range("a2:i" & Rows.Count).Clear
Range("a2").Resize(UBound(crr), 8) = crr
MsgBox Timer - t
End Sub |
|