别人VBA代码整洁如诗,你的却像天书?差别在这
一句话核心价值点:教你写出清爽好用的VBA代码,把重复表格活儿一键搞定,让零基础也能用体系化技巧省下大把时间。
目录
批量改名表,眼不见心不烦
办公室常遇到:月底收到12个月的销售表,名字乱成“Sheet1”“新建表3”,找数据像翻旧衣服。函数改不了表名,透视表更管不到这事儿,VBA能一次给所有表按规矩起名。
Sub 批量改名表() Dim i As Integer Dim 新名 As String For i = 1 To Sheets.Count 新名 = "2026年" & Format(DateSerial(2026, i, 1), "mmm") & "销售" Sheets(i).Name = 新名 Next i MsgBox "表已换成2026年月名,找数快多了!"End Sub
原理很简单:
这样你打开文件,表名就像日历排排站,不用再瞎猜哪张是哪月。
金句:表名有谱,工作有路,别让乱码拖慢找数的脚。
跨表抓数,秒填不求人
做汇总时,要从12张分表抓同位置数据,手工复制粘贴到头晕。函数只能单表引用,透视表得先整合结构,VBA可直奔目标格。
Sub 跨表抓数() Dim ws汇总 As Worksheet Dim ws源 As Worksheet Dim i As Integer Set ws汇总 = Sheets("汇总") For i = 1 To 12 Set ws源 = Sheets("2026年" & Format(DateSerial(2026, i, 1), "mmm")) ws汇总.Cells(i + 1, 2).Value = ws源.Range("D10").Value Next i MsgBox "12个月关键数已躺进汇总表!"End Sub
做法拆解:
- •
Range("D10") 是固定位置,比如每月利润格
不用建复杂公式链,也免了手动切表,数据像坐滑梯一样归位。
金句:跨表取数靠腿跑,不如VBA开条高速道。
自动筛重点,报告立等可取
周报要找出业绩超目标的分店,函数加筛选得一次次点,透视表虽快但定制条件麻烦。VBA能按自定义线一筛就得结果。
Sub 自动筛重点() Dim ws As Worksheet Set ws = Sheets("业绩明细") With ws If .AutoFilterMode Then .AutoFilterMode = False End With ws.Range("A1:F1000").AutoFilter Field:=5, Criteria1:=">50000" MsgBox "大于5万业绩的分店已亮出来!"End Sub
亮点在这:
- •
Criteria1:=">50000" 就是目标线
适合2026年定下的新目标,随时调数值就换一批重点。
金句:手点筛选像淘沙,VBA一设就见金。
隔行涂色,表格会呼吸
长列表打印或演示,隔行同色看着不累,函数做不到,透视表样式死板。VBA可随数据长短自动上色。
Sub 隔行涂色() Dim ws As Worksheet Dim rng As Range Dim i As Long Set ws = ActiveSheet Set rng = ws.Range("A2:A" & ws.Cells(ws.Rows.Count, "A").End(xlUp).Row) For i = 1 To rng.Rows.Count If i Mod 2 = 1 Then rng.Cells(i, 1).EntireRow.Interior.Color = RGB(240, 240, 240) Else rng.Cells(i, 1).EntireRow.Interior.ColorIndex = xlNone End If Next i MsgBox "奇偶行颜色已铺好,眼睛轻松看!"End Sub
核心玩法:
- •
RGB 设浅灰,ColorIndex=xlNone 清色
数据加加减减,颜色依旧齐整,适合2026年各种长清单汇报。
金句:表格有呼吸,信息才入心,别让密麻行吓跑注意。
多文件合并,杂乱变整齐
每月收一堆分部送的Excel,结构一样却散在文件夹,函数、透视表没法跨文件抓。VBA能遍历文件夹,把同名表拼一起。
Sub 多文件合并() Dim 路径 As String, 文件名 As String Dim wb合并 As Workbook, wb源 As Workbook Dim ws合并 As Worksheet, ws源 As Worksheet Dim 最后行 As Long, 目标行 As Long 路径 = "C:\2026分部数据\" 文件名 = Dir(路径 & "*.xlsx") Set wb合并 = ThisWorkbook Set ws合并 = wb合并.Sheets("总表") 目标行 = ws合并.Cells(ws合并.Rows.Count, "A").End(xlUp).Row + 1 Do While 文件名 <> "" Set wb源 = Workbooks.Open(路径 & 文件名) Set ws源 = wb源.Sheets(1) 最后行 = ws源.Cells(ws源.Rows.Count, "A").End(xlUp).Row ws源.Range("A2:F" & 最后行).Copy ws合并.Cells(目标行, 1) 目标行 = ws合并.Cells(ws合并.Rows.Count, "A").End(xlUp).Row + 1 wb源.Close False 文件名 = Dir Loop MsgBox "所有分部数据已抱团归位!"End Sub
步骤明了:
跨文件的事,函数和透视表望而却步,VBA却能当搬运工兼整理员。
金句:散珠难成串,VBA一线牵,杂乱自归队。
动态图表,数据自己跳舞
领导要看趋势,每次加新数据都要重调图表范围,函数图表静态,透视表图依赖结构。VBA能让图表随数据伸长自动跟上。
Sub 动态图表() Dim ws As Worksheet Dim chtObj As ChartObject Set ws = Sheets("销量趋势") Set chtObj = ws.ChartObjects(1) With chtObj.Chart .SetSourceData Source:=ws.Range("A1:B" & ws.Cells(ws.Rows.Count, "B").End(xlUp).Row) End With MsgBox "图表已咬住最新数据尾巴!"End Sub
妙处:
- •
SetSourceData 重绑范围,图表自动延展
在2026年做滚动汇报,这招让数字自己讲故事。
金句:图不动,事难动;图会跟,话自明。
写代码不必追求长,十来行能解决的事,就别堆百行。把单个技巧串成顺手流程,重复活儿就能一键走完。别怕起步慢,每天捡一个场景练,积少成多自会成体系。记住:好代码像好工具,用着顺手才长久。
更多干货点我头像进主页,每天更新