从小白到专家:Excel VBA学习路径全景指南
一句话核心价值点:
带你用短小精悍的VBA代码,把重复繁琐的表格活儿变成一键搞定的爽快体验,从零基础直通体系化办公高手。
目录
批量改名表,告别手动逐页改
办公室常遇到:几十个表页名字乱七八糟,挨个改费眼又易错。函数改不了,透视表更帮不上。
Sub 批量改表名()
Dim ws As Worksheet, i As Integer
i = 1
For Each ws In ThisWorkbook.Worksheets
ws.Name = "部门报表_" & Format(i, "00")
i = i + 1
Next ws
End Sub
原理很简单:让VBA像巡逻队逐个走访每张表,按你给的规则重命名。
For Each 把工作簿里所有表抓出来排队
ws.Name 直接换掉原名,不碰表里数据
Format(i,"00") 让编号整齐成 01、02…看着舒服
十行内搞定,小白改一次就记住套路,再多的表也像切菜。
一键筛出数据,免翻页苦找
做销售统计时,要从几百行里挑某片区记录,手点筛选慢且易漏。
Sub 快速筛片区()
Dim rng As Range, area As String
area = InputBox("输入片区名:", "片区筛选")
If area = "" Then Exit Sub
With ActiveSheet
.AutoFilterMode = False
Set rng = .Range("A1").CurrentRegion
rng.AutoFilter Field:=2, Criteria1:=area
End With
End Sub
思路就是让VBA替你点筛选按钮并填条件。
InputBox 先问你要查啥片区
AutoFilter 打开筛选,指定第2列比对
运行完只留目标行,其他暂时藏起来
不用反复找菜单,不怕手滑取消,数据多也不怕眼花。
跨表抓数合堆,甩掉复制粘贴
每月要把多个分店表同类数据合并,手工复制易串行,公式拉不动不同文件。
Sub 合并分店业绩()
Dim ws As Worksheet, dest As Range, lastRow As Long
Set dest = Sheets("总表").Range("A2")
For Each ws In Worksheets
If ws.Name <> "总表" Then
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
ws.Range("A2:B" & lastRow).Copy dest
Set dest = dest.Offset(lastRow - 1)
End If
Next ws
End Sub
VBA能跨表串门,把数据按序贴一起。
遍历所有表,跳过总表自己
End(xlUp) 找到每份表最后一行,避免空行掺入
Offset 把粘贴位置往下挪,保证接得齐
十几行代码,文件再多也像拼积木,稳且不累手。
定时提醒摸鱼,工作节奏自控
长时间盯表易疲,忘了起身动动。函数和透视表可不会管你累不累。
Sub 定时提醒()
Dim t As Double
t = TimeValue("17:00")
Application.OnTime t, "弹窗提醒"
End Sub
Sub 弹窗提醒()
MsgBox "起身走走,喝口水再战!", vbInformation, "温馨提示"
End Sub
VBA能跟系统时间挂钩,像闹钟一样到点喊你。
TimeValue 设目标时刻
OnTime 预定执行,关机前一直有效
MsgBox 弹出友好提示,不吓人
短短几行,让你在2026年依旧保持节奏,工作不熬成苦役。
智能排版打印,省纸又体面
报表直接打印常遇列宽不一、分页乱断,函数调不出打印机设置。
Sub 打印美化()
With ActiveSheet.PageSetup
.CenterHeader = "2026年业务概览"
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = False
End With
Columns("A:G").AutoFit
ActiveWindow.SelectedSheets.PrintOut
End Sub
VBA直接对打印页面发指令。
PageSetup 定标题、缩放到一页宽
AutoFit 自动调列宽,避免截断数字
PrintOut 一声令下送纸出门
不用在打印对话框里来回试,版面整齐见客户倍有面。
循环批处理图,视觉秒呈现
做周报要给几十组数据画图,手工一个个插入图表能点到手麻。
Sub 批量生成柱图()
Dim rng As Range, chtObj As ChartObject, i As Integer
i = 1
For Each rng In Range("A2:A11")
Set chtObj = ActiveSheet.ChartObjects.Add(Left:=300 * i, Width:=250, Top:=50, Height:=150)
chtObj.Chart.SetSourceData Source:=Range(rng.Offset(0, 1), rng.Offset(0, 2))
chtObj.Chart.ChartType = xlColumnClustered
i = i + 1
Next rng
End Sub
VBA像流水线,一次跑完所有图。
循环选数据源,每次右移两列取数值
ChartObjects.Add 按坐标排好图位
ChartType 定成柱形图,整齐划一
十几行就铺满一屏图表,趋势对比一眼看清。
金句收尾
会点VBA,重复活儿就像装了加速器。
不用背语法,套路熟了代码自然来。
函数和透视表帮你算,VBA替你动手干。
每天一段小代码,2026的你会笑着回看今天。
学VBA不是为炫技,是让办公像玩一样顺溜。从改表名到画图,体系化用起来,小白也能步步登高。
更多干货点我头像进主页,每天更新