这50句Excel VBA代码,帮我摆脱加班地狱(新手直接复制能用)
家人们谁懂啊!做Excel的苦,只有加班到凌晨的人最清楚——
明明只是批量改个格式、删个空行、导个数据,却要对着几百上千行表格,鼠标点到手指抽筋;领导催着要报表,你对着重复操作急得抓耳挠腮,别人用VBA敲一行代码,喝杯咖啡的功夫就搞定了。
别再觉得VBA是“程序员专属”了!它本质就是Excel的“快捷键加强版”,不用你从零学编程,不用记复杂语法,今天这50句常用代码,复制粘贴就能用,新手也能秒变“Excel大神”,从此告别无效加班!
先声明:本文全程无废话、无晦涩术语,每句代码都标清“用途+效果+复制提示”,哪怕你连VBA窗口在哪都不知道,跟着做也能上手(文末附打开VBA的傻瓜教程,放心看)。
一、基础操作篇(新手必看,搞定80%日常需求)
这部分是“保命级”代码,每天做Excel都会用到,记不住就存好,随用随复制,比记快捷键还香!
1. 打开VBA窗口(先学会怎么用,再谈其他)
用途:打开VBA编辑器,所有代码都要在这里写/粘贴
代码:Alt + F11(不是代码,是快捷键!记死它,比记代码还重要)
2. 关闭当前工作簿(不用点右上角叉号,代码一键搞定)
用途:快速关闭当前打开的工作簿,可选是否保存
代码1(保存后关闭):ThisWorkbook.Close SaveChanges:=True
代码2(不保存直接关闭):ThisWorkbook.Close SaveChanges:=False
调侃:再也不用点完关闭,又弹出来“是否保存”,手速快到领导以为你在摸鱼。
3. 保存当前工作簿(防止加班成果白费,刚需!)
用途:一键保存当前工作簿,避免意外关闭丢数据
代码:ThisWorkbook.Save
调侃:建议每写完一段代码,先运行这句,毕竟谁也不想加班两小时,一朝回到解放前。
4. 新建工作簿(批量处理时,快速新建空白表格)
用途:一键新建一个空白工作簿,不用手动“文件-新建”
代码:Workbooks.Add
调侃:别人点3步,你敲1行代码,效率差的不是一点半点。
5. 激活指定工作表(比如快速切换到“数据 sheet”)
用途:快速切换到你指定名称的工作表,避免手动点击切换
代码:Sheets(“数据”).Activate(把“数据”改成你的工作表名称,比如“1月报表”)
调侃:工作表多到翻不过来?一句代码直接“瞬移”,再也不用瞎找。
6. 重命名当前工作表(批量改表名必备)
用途:给当前激活的工作表改名字,不用右键“重命名”
代码:ActiveSheet.Name = “1月销售数据”(把引号里的内容改成你要的名字)
调侃:批量改12个月报表名,用这句代码循环,10秒搞定,不用一个个右键改到崩溃。
7. 删除当前工作表(删除多余表格,一键清理)
用途:删除当前激活的工作表,跳过系统提示(避免弹窗麻烦)
代码:Application.DisplayAlerts = False: ActiveSheet.Delete: Application.DisplayAlerts = True
解读:前后两句是“关闭弹窗提示+开启弹窗提示”,中间是删除,避免删表时弹“是否删除”,节省时间。
8. 隐藏当前工作表(不想让别人看到的表格,一键隐藏)
用途:隐藏当前工作表,别人看不到但不会删除
代码:ActiveSheet.Visible = xlSheetHidden
补充:取消隐藏代码:ActiveSheet.Visible = xlSheetVisible
9. 选中整个工作表(不用Ctrl+A,代码一键全选)
用途:快速选中当前工作表的所有内容,方便批量操作(比如改格式)
代码:ActiveSheet.Cells.Select
调侃:Ctrl+A虽然也能全选,但用代码更酷,显得你很专业(装X必备)。
10. 取消选中状态(全选后,一键取消,避免误操作)
用途:取消当前的选中状态,回到默认光标位置
代码:ActiveSheet.Range(“A1”).Select(选中A1单元格,相当于取消全选)
11. 设置单元格的值(比如给A1单元格填内容)
用途:给指定单元格赋值,不用手动输入,批量赋值必备
代码:Range(“A1”).Value = “销售数据”(给A1单元格填“销售数据”)
补充:批量赋值示例:Range(“A1:A10”).Value = “未审核”(A1到A10都填“未审核”)
12. 获取单元格的值(读取指定单元格的内容,用于判断)
用途:读取某个单元格的内容,比如判断A1的值是否为“合格”
代码:Dim x As String: x = Range(“A1”).Value(把A1的值存到变量x里,后续可用于判断)
13. 清空指定单元格内容(批量清空,不用手动删除)
用途:清空指定单元格/区域的内容,保留格式
代码1(清空A1):Range(“A1”).ClearContents
代码2(清空A1到C10):Range(“A1:C10”).ClearContents
调侃:清空数据再也不用选中后按Delete,尤其是批量清空,省时间还不手抖。
14. 清空指定单元格格式(清除格式,保留内容)
用途:比如清除单元格的颜色、边框,只保留文字内容
代码:Range(“A1:C10”).ClearFormats
15. 清空单元格所有内容(内容+格式一起清,恢复空白)
用途:彻底清空单元格,和新建时一样空白
代码:Range(“A1:C10”).Clear
二、批量处理篇(加班克星,批量操作秒完成)
这部分是“效率王者”,遇到批量改格式、删空行、合并单元格等需求,用这些代码,别人加班1小时,你1分钟搞定!
16. 批量删除空行(删除表格中所有空白行,不用手动筛选)
用途:表格里有很多空行,手动删太麻烦,代码一键清空
代码:ActiveSheet.Cells.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
调侃:以前删空行,筛选、选中、删除,三步走,现在一句代码,喝口水的功夫就完事儿。
17. 批量删除空列(和删空行同理,清理多余空列)
用途:删除表格中所有空白列,让表格更整洁
代码:ActiveSheet.Cells.SpecialCells(xlCellTypeBlanks).EntireColumn.Delete
18. 批量合并单元格(指定区域,一键合并,不用手动点)
用途:比如合并A1到A3单元格,批量合并更高效
代码:Range(“A1:A3”).Merge
补充:取消合并代码:Range(“A1:A3”).UnMerge
提醒:合并单元格虽方便,但后续筛选可能有问题,慎用哦!
19. 批量设置单元格字体(统一字体、大小,不用一个个改)
用途:统一指定区域的字体、大小,让表格更规范
代码:With Range(“A1:C10”): .Font.Name = “微软雅黑”: .Font.Size = 11: End With
解读:把“A1:C10”改成你要设置的区域,“微软雅黑”“11”可按需修改,比如改成“宋体”“12”。
20. 批量设置单元格对齐方式(居中、左对齐,一键统一)
用途:统一单元格内容的对齐方式,避免杂乱无章
代码(居中对齐):Range(“A1:C10”).HorizontalAlignment = xlCenter
补充:左对齐:xlLeft,右对齐:xlRight
21. 批量设置单元格边框(给表格加边框,不用手动画)
用途:给指定区域添加边框,让表格更清晰,批量操作更高效
代码:Range(“A1:C10”).Borders.LineStyle = xlContinuous
解读:“xlContinuous”是实线边框,想要虚线可改成“xlDash”。
22. 批量设置单元格背景色(给表头加颜色,突出重点)
用途:给指定区域设置背景色,比如表头设为浅蓝色,突出重点
代码:Range(“A1:C1”).Interior.Color = RGB(200, 230, 255)
解读:RGB后面的三个数字,分别对应红、绿、蓝,可百度“RGB颜色代码”,按需修改(比如纯红色:RGB(255,0,0))。
23. 批量隐藏行(隐藏不需要显示的行,比如隐藏“未完成”的数据)
用途:隐藏指定行,比如隐藏第5到第10行,不用手动拖动
代码:Rows(“5:10”).Hidden = True
补充:取消隐藏代码:Rows(“5:10”).Hidden = False
24. 批量隐藏列(隐藏多余的列,让表格更简洁)
用途:隐藏指定列,比如隐藏第B列到第D列
代码:Columns(“B:D”).Hidden = True
补充:取消隐藏代码:Columns(“B:D”).Hidden = False
25. 批量复制指定区域(复制数据,不用Ctrl+C)
用途:快速复制指定区域的内容,后续可粘贴到其他地方
代码:Range(“A1:C10”).Copy
26. 批量粘贴数据(粘贴复制的内容,不用Ctrl+V)
用途:将复制的内容粘贴到指定位置,比如粘贴到E1单元格
代码:Range(“E1”).PasteSpecial
补充:粘贴数值(不粘贴格式):Range(“E1”).PasteSpecial xlPasteValues
27. 批量删除重复值(删除表格中的重复数据,不用手动筛选)
用途:快速删除指定区域的重复值,保留唯一数据
代码:Range(“A1:C10”).RemoveDuplicates Columns:=Array(1, 2), Header:=xlYes
解读:Columns:=Array(1,2)表示按第1列和第2列联合去重,Header:=xlYes表示有表头(没有表头改成xlNo)。
28. 批量调整列宽(让列宽统一,不用手动拖动)
用途:统一指定列的宽度,避免有的列太窄、有的列太宽
代码:Columns(“A:C”).ColumnWidth = 15(把列宽设为15,可按需修改)
29. 批量调整行高(统一行高,让表格更整齐)
用途:统一指定行的高度,避免有的行太高、有的行太矮
代码:Rows(“1:10”).RowHeight = 20(把行高设为20,可按需修改)
30. 批量插入行(在指定位置插入多行,不用手动插入)
用途:在指定行上方插入多行,比如在第5行上方插入3行
代码:Rows(“5:7”).Insert(插入3行,就是5到7行,相当于插入3行空白行)
31. 批量插入列(在指定位置插入多列,不用手动插入)
用途:在指定列左侧插入多列,比如在B列左侧插入2列
代码:Columns(“B:C”).Insert(插入2列,就是B到C列,相当于在B列左侧插2列)
三、数据处理篇(数据分析必备,精准高效不出错)
做数据分析时,经常需要求和、计数、筛选数据,这些代码能帮你避免手动计算出错,精准又高效!
32. 求和(计算指定区域的和,不用手动输入SUM函数)
用途:计算指定区域的总和,比如计算A1到A10的和,填入B1单元格
代码:Range(“B1”).Value = Application.WorksheetFunction.Sum(Range(“A1:A10”))
33. 计数(计算指定区域的非空单元格个数,不用COUNT函数)
用途:统计指定区域有多少个非空单元格,比如统计A1到A10的有效数据个数
代码:Range(“B1”).Value = Application.WorksheetFunction.Count(Range(“A1:A10”))
34. 求平均值(计算指定区域的平均值,不用AVERAGE函数)
用途:计算指定区域的平均值,比如计算A1到A10的平均值,填入B1单元格
代码:Range(“B1”).Value = Application.WorksheetFunction.Average(Range(“A1:A10”))
35. 求最大值(计算指定区域的最大值,不用MAX函数)
用途:找出指定区域的最大值,填入B1单元格
代码:Range(“B1”).Value = Application.WorksheetFunction.Max(Range(“A1:A10”))
36. 求最小值(计算指定区域的最小值,不用MIN函数)
用途:找出指定区域的最小值,填入B1单元格
代码:Range(“B1”).Value = Application.WorksheetFunction.Min(Range(“A1:A10”))
37. 筛选数据(筛选出指定条件的数据,不用手动筛选)
用途:筛选出指定条件的数据,比如筛选A列中“销售部”的数据
代码:Range(“A1:C10″).AutoFilter Field:=1, Criteria1:=”销售部”
解读:Field:=1表示按第1列筛选,Criteria1:=”销售部”表示筛选条件是“销售部”,取消筛选代码:ActiveSheet.AutoFilterMode = False
38. 排序数据(按指定列排序,不用手动排序)
用途:按指定列升序/降序排序,比如按A列升序排序
代码(升序):Range(“A1:C10”).Sort Key1:=Range(“A1”), Order1:=xlAscending, Header:=xlYes
补充:降序排序:Order1:=xlDescending,Header:=xlYes表示有表头。
39. 查找指定内容(查找表格中的指定内容,不用Ctrl+F)
用途:查找指定内容在表格中的位置,比如查找“张三”
代码:Dim rng As Range: Set rng = Range(“A1:C10″).Find(What:=”张三”, LookIn:=xlValues): If Not rng Is Nothing Then MsgBox “找到啦,位置:” & rng.Address
解读:查找“张三”,如果找到,会弹出提示框显示位置;如果没找到,不会报错。
40. 替换指定内容(批量替换表格中的内容,不用Ctrl+H)
用途:批量替换指定内容,比如把“销售部”替换成“市场部”
代码:Range(“A1:C10″).Replace What:=”销售部”, Replacement:=”市场部”, LookAt:=xlWhole
解读:LookAt:=xlWhole表示完全匹配(比如不会把“销售部1”改成“市场部1”),改成xlPart表示部分匹配。
41. 批量修改数字格式(比如改成百分比、保留2位小数)
用途:统一指定区域的数字格式,比如保留2位小数、改成百分比
代码1(保留2位小数):Range(“A1:C10”).NumberFormat = “0.00”
代码2(改成百分比,保留1位小数):Range(“A1:C10”).NumberFormat = “0.0%”
四、进阶技巧篇(提升逼格,搞定复杂需求)
学会这几句,你就不是“新手”了,能搞定更复杂的需求,领导看了都得夸你专业!
42. 循环遍历行(批量处理每一行数据,比如给每行加备注)
用途:遍历指定区域的每一行,执行相同操作,比如给A列不为空的行,在D列加“已审核”
代码:For i = 1 To 10: If Range(“A” & i).Value <> “” Then Range(“D” & i).Value = “已审核”: Next i
解读:i从1到10,表示遍历第1行到第10行,可按需修改范围。
43. 循环遍历列(批量处理每一列数据,比如给每列加表头)
用途:遍历指定区域的每一列,执行相同操作,比如给第1行每一列加表头
代码:For j = 1 To 3: Range(Cells(1, j), Cells(1, j)).Value = “表头” & j: Next j
解读:j从1到3,表示遍历第1列到第3列,表头会显示“表头1”“表头2”“表头3”。
44. 弹出提示框(提醒用户操作,比如“操作完成”)
用途:执行完代码后,弹出提示框,告知用户操作结果
代码:MsgBox “操作完成!”, vbInformation, “提示”
解读:vbInformation是提示框图标(感叹号),还可以改成vbOKOnly(只有确定按钮)、vbYesNo(确定/取消按钮)。
45. 关闭提示框(禁止系统弹出提示,比如删除时不弹确认框)
用途:执行代码时,禁止系统弹出各种提示框,节省操作时间
代码:Application.DisplayAlerts = False
提醒:操作完成后,建议加上Application.DisplayAlerts = True,恢复提示框,避免后续操作出问题。
46. 禁用屏幕刷新(让代码运行更快,避免屏幕闪烁)
用途:执行复杂代码时,禁用屏幕刷新,避免屏幕一直闪烁,同时加快代码运行速度
代码:Application.ScreenUpdating = False
提醒:操作完成后,加上Application.ScreenUpdating = True,恢复屏幕刷新。
47. 打开指定文件(一键打开其他Excel文件,不用手动查找)
用途:快速打开指定路径的Excel文件,比如打开桌面的“1月报表.xlsx”
代码:Workbooks.Open “C:\Users\Administrator\Desktop\1月报表.xlsx”
解读:把引号里的路径改成你的文件路径(右键文件-属性,可查看路径)。
48. 关闭所有Excel文件(一键关闭所有打开的Excel文件,不用逐个关闭)
用途:同时关闭所有打开的Excel文件,节省时间
代码:For Each wb In Workbooks: wb.Close SaveChanges:=True: Next wb
解读:SaveChanges:=True表示保存所有文件,改成False表示不保存。
49. 保护工作表(给工作表加密,防止别人修改内容)
用途:给当前工作表加密,别人需要输入密码才能修改
代码:ActiveSheet.Protect Password:=”123456″, UserInterfaceOnly:=True
解读:密码是“123456”,可改成你自己的密码,取消保护代码:ActiveSheet.Unprotect Password:=”123456″
50. 运行其他宏(调用其他宏,实现复杂操作,进阶必备)
用途:在一个宏里,调用另一个宏,实现多个操作联动
代码:Call 宏名称(把“宏名称”改成你要调用的宏的名字)
调侃:学会这个,你可以把多个常用代码整合起来,一键运行,实现“全自动操作”,彻底解放双手!
五、新手必看:VBA傻瓜式使用教程(看完就会)
很多新手说“不知道怎么用这些代码”,别慌,一步一步教你,全程鼠标操作,不用记任何复杂步骤:
1. 打开Excel,新建一个空白工作簿(或打开你要操作的表格);
2. 按快捷键 Alt + F11,打开VBA编辑器;
3. 在左侧“工程”窗口,右键点击你的工作簿名称,选择“插入”→“模块”;
4. 在右侧的代码窗口,复制本文中的代码,粘贴进去;
5. 修改代码中的“区域”“名称”等(比如把“数据”改成你的工作表名称,把“A1:C10”改成你要操作的区域);
6. 按快捷键F5,运行代码,等待操作完成即可。
提醒:第一次运行代码,可能会弹出“宏被禁用”的提示,点击“启用宏”即可(如果没有启用,代码无法运行)。
最后说两句掏心窝的话
Excel VBA不是用来“装X”的,是用来“解放双手”的——我们做表格的,核心是搞定数据、完成工作,而不是把时间浪费在重复的鼠标操作上。
这50句代码,覆盖了日常工作中80%的需求,不用你全部记住,收藏本文,用到的时候复制粘贴,修改一下参数,就能直接用。
刚开始用的时候,可能会出错(比如改错题区域、输错工作表名称),别慌,多试两次,熟悉之后,你会发现:原来Excel可以这么简单,原来加班可以这么少!
如果遇到代码运行失败,或者有特定需求(比如批量导入数据、自动生成报表),可以在评论区留言,我会一一回复,帮你搞定!
最后,祝所有做Excel的家人们,都能摆脱加班,早日实现“代码一敲,工作搞定”的快乐!
觉得有用,记得点赞、转发,让更多人摆脱Excel加班地狱~
夜雨聆风