|
发表于 2015-2-14 19:51
|
显示全部楼层
本楼为最佳答案
- Sub Macro1()
- Dim arr, brr, d, d2, i&
- Set d = CreateObject("scripting.dictionary")
- Set d2 = CreateObject("scripting.dictionary")
- arr = Sheet1.Range("a1").CurrentRegion
- ReDim brr(1 To 20000, 1 To 100)
- For i = 2 To UBound(arr)
- If arr(i, 1) = "" Then arr(i, 1) = arr(i - 1, 1)
- If Not d2.exists(arr(i, 1)) Then d2(arr(i, 1)) = 4 Else d2(arr(i, 1)) = d2(arr(i, 1)) + 1
- l = d2(arr(i, 1)): If s2 < l Then s2 = l
- If Not d.exists(arr(i, 1)) Then
- n = n + 1
- s = (n - 1) * 3 + 1
- d(arr(i, 1)) = s
- brr(s, 1) = arr(i, 1)
- brr(s, 2) = arr(i, 2)
- brr(s, 3) = arr(1, 5)
- brr(s + 1, 3) = arr(1, 3)
- brr(s + 2, 3) = arr(1, 4)
- brr(s, l) = arr(i, 5)
- brr(s + 1, l) = arr(i, 3)
- brr(s + 2, l) = arr(i, 4)
- Else
- h = d(arr(i, 1))
- brr(h, l) = arr(i, 5)
- brr(h + 1, l) = arr(i, 3)
- brr(h + 2, l) = arr(i, 4)
- End If
- Next
- Sheet2.Range("a2").Resize(n * 3, s2) = brr
- End Sub
复制代码 |
|