16 款高频实战宏代码 · 100% 免外部依赖 · 复制即用

Excel 实战常用 VBA 宏代码速查库

涵盖多表合并、工作表一键拆分、批量清洗格式、PDF导出、单元格按颜色统计等职场最高频的自动化场景。包含清晰注释与小白上手指南。

01
打开 VBA 编辑器
在 Excel / WPS 中按下快捷键 Alt + F11(Mac为 Option + F11
02
插入标准模块
在顶部菜单依次点击:【插入】【模块】,将右侧代码粘贴进去
03
极速运行宏
按下 F5 键(或点击工具栏绿色的“运行”小三角形)即可自动执行
多工作表数据一键合并到“汇总表”工作表批量处理
自动遍历当前工作簿中除“汇总”外的所有 Sheet,保留表头并将全部数据按行纵向追加到汇总表末尾。
将所有工作表拆分为独立的 Excel 文件工作表批量处理
一键将工作簿中的每一个 Sheet 另存为同名单独的 .xlsx 文件,自动保存在当前工作簿同一目录下。
一键取消所有隐藏(及深度隐藏)的工作表工作表批量处理
破解 Excel 手工只能一个个取消隐藏的痛点,甚至能取消 xlSheetVeryHidden 级别隐藏的工作表。
根据 A 列名单批量创建新工作表工作表批量处理
读取当前选中区域或 A 列的部门/人名列表,自动以此名称新建一批全新的工作表。
一键极速删除全部整行空白行数据清洗与整理
快速扫描已用区域,秒级清除所有全空行,防止表格滚动条过长或汇总失真。
批量清除选中区域首尾多余空格与不可见字符数据清洗与整理
解决 VLOOKUP 匹配不到的元凶(首尾空格、换行符、无断行空格 Chr(160))。
批量将“带绿色小三角”的文本型数字转为真数值数据清洗与整理
解决从财务/ERP导出的表格无法求和、SUM结果为0的问题。
批量删除选区所有超链接,保留文字数据清洗与整理
从网页复制到 Excel 时经常附带密密麻麻的蓝色超链接,一键全部清除。
批量将当前工作簿所有工作表导出为独立 PDF报表导出与打印
遍历每个 Sheet,按照工作表名字自动发布为高清标准 PDF 文件。
批量提取表格中插入的所有图片并按单元格命名报表导出与打印
一键将表格内商品图、证件照、公章图片导出至指定文件夹。
智能隔行着色(自动跳过隐藏行,生成专业斑马纹)报表导出与打印
为选区添加淡雅灰绿斑马纹,即使经过筛选也能维持完美的视觉交替。
自定义函数:提取单元格中的纯中文字符 (Function)高阶自动化技巧
定义全新函数 =GetChinese(A2),直接在单元格里调用提取纯汉字。
自定义函数:提取单元格中的纯数字 (Function)高阶自动化技巧
定义函数 =GetNumbers(A2),可从混杂字符中剔除文字并提取数字。
按单元格背景颜色求和或计数 (自定义函数)高阶自动化技巧
解决 Excel 原生函数无法直接统计填充颜色的历史痛点。用法:=CountByColor(统计区域, 参照颜色单元格)
一键锁定所有带公式的单元格并隐藏公式内容高阶自动化技巧
交付报表前保护核心机密算法,只允许对方在空白输入格录入,公式格完全隐藏防篡改。
宏性能终极加速三剑客(关屏幕刷新/关计算/关事件)高阶自动化技巧
写大型 VBA 循环必须套用的加速模板,能让原本运行3分钟的宏在3秒内跑完。
工作表批量处理

多工作表数据一键合并到“汇总表”

自动遍历当前工作簿中除“汇总”外的所有 Sheet,保留表头并将全部数据按行纵向追加到汇总表末尾。

注意说明:运行前请先在工作簿中新建一个名为“汇总”的工作表,并把表头复制过去。
VBA Module · Microsoft Visual Basic for ApplicationsVBA
Sub MergeAllSheets()
    Dim wsSummary As Worksheet
    Dim ws As Worksheet
    Dim lastRowSummary As Long
    Dim lastRowWs As Long
    Dim lastCol As Long

    On Error Resume Next
    Set wsSummary = ThisWorkbook.Sheets("汇总")
    On Error GoTo 0
    If wsSummary Is Nothing Then
        MsgBox "请先新建一个名为【汇总】的工作表!", vbExclamation, "提示"
        Exit Sub
    End If

    Application.ScreenUpdating = False
    For Each ws In ThisWorkbook.Worksheets
        If ws.Name <> "汇总" Then
            lastRowWs = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
            lastCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column
            If lastRowWs >= 2 Then
                lastRowSummary = wsSummary.Cells(wsSummary.Rows.Count, 1).End(xlUp).Row + 1
                ws.Range(ws.Cells(2, 1), ws.Cells(lastRowWs, lastCol)).Copy _
                    wsSummary.Cells(lastRowSummary, 1)
            End If
        End If
    Next ws
    Application.ScreenUpdating = True
    MsgBox "所有工作表合并完成!", vbInformation, "完成"
End Sub

职场进阶:为什么说掌握常用 VBA 代码是职场核心生产力?

在当今办公自动化领域,虽然 Python 与 Office Scripts 备受关注,但 VBA(Visual Basic for Applications)作为直接内置于微软 Excel 与金山 WPS 中的原生宏语言,拥有零环境安装、免配解释器、右键即开、与表格底层对象零延迟交互的绝对优势。

一、VBA 常见使用注意事项与避坑原则

  • 保存为 .xlsm 格式: 普通 .xlsx 格式基于安全性设计不允许保存宏代码。编写完 VBA 宏的工作簿在另存时,必须选择“Excel 启用宏的工作簿 (*.xlsm)”,否则关闭后宏将全部丢失。
  • 加速运行的秘诀: 在循环处理数万行数据时,Excel 默认会不断重绘屏幕和触发事件。在宏的开头加上 Application.ScreenUpdating = False,结尾恢复为 True,通常能让执行速度提升 10 到 50 倍。
  • 慎用无撤销(Undo)操作: VBA 宏直接操作内存与单元格,执行删除行或覆盖内容后无法通过 Ctrl+Z 撤回。建议首次运行重要宏前,务必对原文件进行备份副本。

二、自定义函数 (UDF) 与标准过程 (Sub) 的区别

在上述代码库中,以 Sub 开头的为“操作宏”,用于执行批量合并、拆分或导出文件等动作;以 Function 开头的为“自定义工作表函数”,可以像 SUMVLOOKUP 一样直接在 Excel 单元格中输入(例如提取中文 =GetChinese(A2) 或按颜色计数 =CountByColor(A2:A50, B2)),极大地突破了传统 Excel 函数的功能边界。