|
发表于 2021-11-9 11:59
|
显示全部楼层
本楼为最佳答案
- Sub 汇总()
- Dim ARR(), I As Integer, K As Integer, D, BRR, L As Integer, M As Integer, W, X
- Set D = CreateObject("SCRIPTING.DICTIONARY")
- ReDim ARR(1 To 1000, 1 To Worksheets.Count + 1)
- Range("A3:X1000").Clear
- For I = 1 To Worksheets.Count - 1
- W = Application.WorksheetFunction.Match("累计", Worksheets(I).Range("A2:X2"), 0)
- K = Sheets(I).Range("A65536").End(xlUp).Row
- BRR = Sheets(I).Range("A3:Z" & K)
- For L = 1 To K - 3
- If BRR(L, 2) = "" Then
- L = L + 1
- End If
- If Not D.EXISTS(BRR(L, 2)) Then
- M = M + 1
- D(BRR(L, 2)) = M
- ARR(M, 1) = BRR(L, 2)
- ARR(M, I + 1) = BRR(L, W)
- Else
- ARR(D(BRR(L, 2)), I + 1) = BRR(L, W)
- End If
- Next
- Erase BRR
- Next
- Range("A2").Resize(M, I) = ARR
- Range("A" & M + 2) = "合计"
- For X = 2 To I
- Cells(M + 2, X) = Application.Sum(Cells(2, X).Resize(M, 1))
- Next
- Range("A2").CurrentRegion.Borders.LineStyle = xlContinuous
- End Sub
-
复制代码 |
评分
-
查看全部评分
|