|
- Sub Macro1()
- Dim arr, brr, w(1 To 3), d, i&, x$, s&, rng As Range
- Set d = CreateObject("scripting.dictionary")
- arr = Sheet2.Range("a1").CurrentRegion
- ReDim brr(1 To UBound(arr), 1 To 5)
- For i = 2 To UBound(arr)
- x = arr(i, 1) & "," & arr(i, 2)
- If Not d.exists(x) Then
- s = s + 1
- d(x) = s
- brr(s, 1) = arr(i, 1)
- brr(s, 2) = arr(i, 2)
- brr(s, 3) = 1
- brr(s, 4) = arr(i, 5)
- Else
- brr(d(x), 3) = brr(d(x), 3) + 1
- brr(d(x), 4) = brr(d(x), 4) + arr(i, 5)
- End If
- Next
- For i = 1 To s
- brr(i, 5) = brr(i, 4) / brr(i, 3)
- For j = 1 To 2
- w(j) = w(j) + brr(i, j + 2)
- Next
- w(3) = w(2) / w(1)
- Next
- Sheet1.Activate
- [l:p].Clear
- Range("l3").Resize(1, UBound(brr, 2)) = Array("车间", "组别", "计数项:组", "收入", "平均收入")
- Range("l4").Resize(s, 5) = brr
- [l3].CurrentRegion.Sort Key1:=[l4], Key2:=[m4], Header:=xlGuess
- Set rng = Range("l4").Offset(s, 0)
- rng = "总计": rng.Resize(1, 3).Offset(, 2) = w
- rng.Resize(1, 2).Merge
- With [l3].CurrentRegion.Borders()
- .LineStyle = xlContinuous
- .Weight = xlThin
- End With
- End Sub
复制代码 常规写法
|
评分
-
查看全部评分
|