|
|
- Sub test()
- Dim r%, i%
- Dim arr, brr
- Dim d As Object
- Set d = CreateObject("scripting.dictionary")
- Set d1 = CreateObject("scripting.dictionary")
- With Worksheets("sheet1")
- r = .Cells(.Rows.Count, 1).End(xlUp).Row
- arr = .Range("c3:e" & r)
- For i = 1 To UBound(arr)
- If Not d.exists(arr(i, 1)) Then
- Set d(arr(i, 1)) = CreateObject("scripting.dictionary")
- End If
- If Not d(arr(i, 1)).exists(arr(i, 2)) Then
- ReDim brr(1 To 4)
- brr(1) = arr(i, 1)
- brr(2) = arr(i, 2)
- Else
- brr = d(arr(i, 1))(arr(i, 2))
- End If
- brr(3) = brr(3) + arr(i, 3)
- brr(4) = brr(4) + 1
- d(arr(i, 1))(arr(i, 2)) = brr
- Next
- n = 7
- For Each aa In d.keys
- arr = Application.Transpose(Application.Transpose(d(aa).items))
- d1.RemoveAll
- For i = 1 To UBound(arr)
- If arr(i, 4) <> 0 Then
- arr(i, 3) = Round(arr(i, 3) / arr(i, 4), 2)
- d1(arr(i, 3)) = d1(arr(i, 3)) + 1
- End If
- Next
- nn = 1
- kk = d1.keys
- For k = 0 To UBound(kk)
- mm = Application.Large(kk, k + 1)
- ss = d1(mm)
- d1(mm) = nn
- nn = nn + ss
- Next
- For i = 1 To UBound(arr)
- arr(i, 4) = d1(arr(i, 3))
- Next
- .Cells(4, n).Resize(UBound(arr), UBound(arr, 2)) = arr
- r = .Cells(.Rows.Count, n).End(xlUp).Row
- .Range(.Cells(2, n), .Cells(r, n + 3)).Borders.LineStyle = xlContinuous
- n = n + 5
- Next
- End With
- End Sub
复制代码 |
评分
-
1
查看全部评分
-
|