本帖最后由 陈国华 于 2012-10-11 20:06 编辑
代码帮你缩短了不少,速度不知道怎么样,测试吧!- Private Sub CommandButton1_Click()
- Dim d As Object, Arr, brr(), i&, n&
- Set d = CreateObject("scripting.dictionary")
- Arr = Sheet4.Range("a1").CurrentRegion
- For i = 2 To UBound(Arr)
- If Not d.exists(Arr(i, 2)) Then
- n = n + 1
- d(Arr(i, 2)) = n
- ReDim Preserve brr(1 To 13, 1 To n)
- brr(1, n) = Arr(i, 2)
- brr(Month(Arr(i, 3)) + 1, n) = Arr(i, 10)
- Else
- brr(Month(Arr(i, 3)) + 1, d(Arr(i, 2))) = brr(Month(Arr(i, 3)) + 1, d(Arr(i, 2))) + Arr(i, 10)
- End If
- Next
- Sheet9.Range("a2").Resize(n, 13) = Application.Transpose(brr)
- End Sub
复制代码 |