EXCEL VBA一键实现估预算自下而上逐级汇总,告别手动操作!
- 2026-11-05 10:42:32


为了让代码看起了更简短,我把注释全部删掉,注释可以参数上面图片
Sub 分级操作()
ROWNUM = [A65536].End(xlUp).Row
Level = Application.WorksheetFunction.Max(Range(Cells(2, 1), Cells(ROWNUM, 1)))
ActiveSheet.Outline.SummaryRow = xlAbove
For I = 2 To ROWNUM
Rows(I).OutlineLevel = Cells(I, 1)
Cells(I, 2).IndentLevel = Cells(I, 1)
Next
For I = 1 To ROWNUM
If Cells(I, 1) < Cells(I + 1, 1) Then
Cells(I, 3) = ""
End If
Next
For m = 1 To Level
For I = 1 To ROWNUM
If Cells(I, 1) = m And Cells(I, 3) = "" Then
For j = I + 1 To ROWNUM
If Cells(j, 1) <= m Then
n = j - 1
Cells(I, 3).FormulaR1C1 = "=subtotal(9,R[1]C:R" & n & "C)"
Cells(I, 3).Interior.ColorIndex = 4
Exit For
End If
Cells(I, 3).FormulaR1C1 = "=subtotal(9,R[1]C:R" & ROWNUM & "C)"
Cells(I, 3).Interior.ColorIndex = 4
Next
End If
Next
Next
End Sub
将上述代码复制到新建模块中,运行,结果如下,不仅生成层级展示,实现自动缩进,还能够自动判断公式的范围,如C7单元格公式为=SUBTOTAL(9,C8:C$11),可以自动识别求和范围为第8行到第11行:

如果有问题,可以在评论区留言,欢迎转发、分享、点赞、收藏、打赏!