大家好,我是你们的老朋友Menphis。
上周财务部的小刘找我吐槽:每个月都要做销售报表,从原始数据里复制粘贴到新表,加一行汇总,设置字体颜色、边框、冻结窗格……每次重复这套动作,既枯燥又容易漏掉格式。
我听完一笑:“你还在手动搞?我两年前就写了个宏,一键生成带格式的动态报表,连汇总公式都自动填好。”
今天就把这个一键生成动态统计报表的VBA宏分享给你,以后做报表,点一下,所有格式、汇总、冻结自动搞定。
操作步骤
📌 如何操作excel实现
1. 创建宏
2. 复制粘贴魔法代码,并保存
Sub 生成动态统计报表() Application.ScreenUpdating = False Dim ws As Worksheet, reportWs As Worksheet Dim lastRow As Long, dataRange As Range Set ws = ActiveSheet ' 数据源工作表 lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row If lastRow < 2 Then MsgBox "数据源无有效数据!", vbExclamation, "提示" Application.ScreenUpdating = True Exit Sub End If ' 创建或获取报表工作表 On Error Resume Next Set reportWs = ThisWorkbook.Worksheets("统计报表") On Error GoTo 错误处理 If reportWs Is Nothing Then Set reportWs = ThisWorkbook.Worksheets.Add(After:=ws) reportWs.Name = "统计报表" Else reportWs.Cells.Clear ' 清空原有报表 End If ' 1. 复制数据源到报表 ws.Range("A1:" & ws.Cells(lastRow, ws.Columns.Count).End(xlToLeft).Address).Copy reportWs.Range("A1") ' 2. 添加汇总行(最后一行下方) Dim summaryRow As Long summaryRow = lastRow + 2 reportWs.Cells(summaryRow, 1).Value = "汇总" ' 对C列(金额列)求和,可修改列号 reportWs.Cells(summaryRow, 3).Formula = "=SUM(C2:C" & lastRow & ")" ' 对D列(数量列)求平均值,可修改列号 reportWs.Cells(summaryRow, 4).Formula = "=AVERAGE(D2:D" & lastRow & ")" ' 3. 设置报表格式 With reportWs ' 表头样式:加粗、填充色、居中 .Rows(1).Font.Bold = True .Rows(1).Interior.Color = RGB(204, 229, 255) ' 浅蓝色 .Rows(1).HorizontalAlignment = xlCenter ' 汇总行样式:加粗、红色字体 .Rows(summaryRow).Font.Bold = True .Rows(summaryRow).Font.Color = RGB(255, 0, 0) ' 红色 ' 自动调整列宽和行高 .UsedRange.Columns.AutoFit .UsedRange.Rows.AutoFit ' 添加边框 .UsedRange.Borders.LineStyle = xlContinuous .UsedRange.Borders.Weight = xlThin End With ' 4. 冻结窗格(冻结表头)—— 修正后的代码 reportWs.Parent.Windows(1).FreezePanes = True MsgBox "✅ 报表生成完成!", vbInformation, "提示"错误处理: Application.ScreenUpdating = True If Err.Number <> 0 Then MsgBox "❌ 报表生成失败:" & Err.Description, vbCritical, "错误" End IfEnd Sub

3. 执行宏
💬 结语
说实话,写这个宏的初衷,纯粹是想让自己少加点班。没想到分享出去之后,收到了好多留言说“太好用了”“求多分享一些这种实用小工具”。
其实职场里的很多烦恼,往往就差一个“偷懒”的思路。与其埋头苦干,不如花2分钟研究一下怎么让Excel帮你干活。这个宏我已经用了两年,每次运行都觉得自己赚到了时间。
如果你试了之后有什么问题,或者想让我帮你定制其他功能,直接在评论区留言。我不保证秒回,但保证每个都会看。
如果觉得有用,欢迎点赞、在看、分享给身边常用跟Excel打交道的朋友~