第50篇:用 AI 写 VBA / 宏自动化(轻量)——每周省下的那四十分钟

2026/09/07 AI

每周一早上,你都在做同一件事:打开五个表、统一格式、合并、删空行、另存。四十分钟,雷打不动,一年就是三十五小时。

今天这篇就解决它:把这四十分钟,变成按一下按钮。

先说清——这篇不用懂编程,一行都不用自己写。 你只做两件事:把步骤说清楚,再把 AI 给的代码装进 Excel。你的角色从”程序员”变成了”甲方”,只管提需求。


一、宏是什么?用白话讲清楚

宏(Macro)就是一段”操作录音”。

你在 Excel 里选中、复制、删行、改格式、另存这些动作,都能记成指令,以后点一下全跑完。VBA 是这段指令背后的语言。

以前学 VBA 的门槛在”得会写这门语言”;现在这层门槛没了——你用中文说清要做什么,AI 翻译成 VBA,复制粘贴就行。你不再需要会写代码,只要会提需求。


二、什么活值得做成宏?一条判断标准

别看到什么都想自动化。用这条标准判断:

重复次数 × 单次耗时 > 30 分钟,才值得做。

场景 频率 单次耗时 值不值
每周合并五个部门表 52次/年 40分钟 非常值
每月统一报表格式 12次/年 15分钟
一次性整理三千行 1次 1小时 不值,直接手工

三类活特别适合做宏: 步骤固定不需判断的、要循环很多次的、手工易漏做出错的。

两类别做宏: 规则常变的(改代码比手工还慢)、现成按钮一点就完的(如”删除重复项”别写宏)。

macro-worth


三、动手前的三个准备

准备一:调出”开发工具”选项卡

文件 → 选项 → 自定义功能区 → 勾选「开发工具」。WPS 里叫「开发工具」,位置基本一样(老版本需单独装 VBA 模块)。

准备二:另存为 .xlsm

这一步 90% 的新手会踩坑。 普通 .xlsx 不能存宏,关掉再开代码就没了。必须另存为 .xlsm(启用宏的工作簿)

准备三:先备份原文件

这条是铁律,没有例外。 宏执行极快且无撤销,Ctrl+Z 救不回。新宏第一次务必在复制出的测试文件上跑

我说得再直白一点:不备份就跑宏,等于闭着眼睛开车。


四、怎么描述需求,AI 才写得出能跑的代码

代码写不对,九成是需求没说清。 诀窍:像教一个刚来的实习生那样,把鼠标动作一步步说。 必须说清五件事:

① 表长什么样——哪个工作表、表头第几行、每列是什么、约多少行。“行数每周不同”这句关键,决定 AI 写不写死行数。

② 要做什么——按顺序一步一动作,别写”整理一下”,写”第一步删 D 列空行/第二步统一日期格式/第三步按部门排序/第四步末尾加合计”。

③ 特殊情况——某列是文本、表不存在、数据为空时怎么办。说清这些,代码才不遇意外就崩。

④ 你的版本——Excel 2016/2019/365 还是 WPS,告诉它,老版本写法有别。

⑤ 要注释和防呆——让 AI 每段加中文注释,将来你能看懂、能改。

five-elements


五、代码到手,怎么”装”进 Excel

① 开编辑器:按 Alt + F11(或 开发工具 → Visual Basic)。

② 建模块:左侧工程窗口找文件 → 右键 → 插入 → 模块,出现空白代码窗。

③ 粘贴代码:只复制 Sub 名字()End Sub 之间,AI 的说明文字别复制,会报错。

④ 运行:光标点在代码里按 F5,或 开发工具 → 宏 → 选中 → 运行。

想更方便? 开发工具 → 插入 → 按钮(窗体控件),拖个方块绑定宏,以后点一下按钮就行。

code-to-button


六、报错了怎么办

别慌,三句话:

  1. 报错原样复制(如”运行时错误 ‘9’:下标越界”)连代码发回 AI;
  2. 告诉它表实际什么样——多数报错是代码假设的表结构和你实际对不上;
  3. 让 AI 先解释错因再给修正版(加一句”请先说明原因再给修正代码”,下次能自己判断)。

常见报错先认个脸:

报错 通常原因 怎么说给 AI
下标越界(9) 工作表名对不上 告诉它实际表名
类型不匹配(13) 文本被当数字算 说明哪列可能有文本
对象未设置(91) 找不到目标对象 说明有无空表/隐藏表
应用错误(1004) 区域不存在或被保护 说明是否保护、合并单元格

提效技巧: 让 AI 在代码开头加”环境检查”——先确认表存在、数据非空再跑,能挡掉大半报错。


七、五条安全铁律

① 永远在备份上先跑。 说第三遍了,因为它最重要。

② 删除类宏先加 MsgBox 确认,给自己一次反悔机会。

③ 别运行来路不明的宏代码——宏能删你文件,除非你看得懂或让 AI 逐句解释。

④ 让 AI 逐段解释每段在干什么,特别是有无改/删数据,花两分钟值。

⑤ 别用 Workbook_Open 自动运行,新手手动点按钮更安全。


八、三个能直接抄的场景

场景一:合并多表——最高频,说清保不保留每张表头、标不标来源表名,模板二「场景A」直接抄。

场景二:批量格式统一——字体字号列宽日期格式一次说清,模板二「场景B」直接抄。

场景三:按某列拆多文件——如按部门拆,手工半天宏三秒,模板二「场景C」直接抄。


九、提示词模板盒子

下面三个模板:模板一万能主提示词(任何宏都套它)、模板二三个高频场景(合并 / 批量格式 / 拆分,直接抄对应场景)、模板五报错求助(出问题就用)。

模板一:VBA 需求主提示词(万能款,套着填)

帮我写一段 Excel VBA 宏,我完全不懂编程,给能直接复制运行的完整代码。

【环境】软件:[Excel 2019 / WPS];文件已存 .xlsm:[是]
【表结构】工作表[原始数据];表头第[1]行;数据从第[2]行;列:A日期/B姓名/C部门/D金额;约[800]行(每周数量不同,用动态识别末行)
【要做】(按顺序)1[删D列空行] 2[统一A列日期为yyyy-mm-dd] 3[按C列部门排序] 4[末尾加合计行,D列求和]
【特殊情况】D列是文本→[跳过不求和,结束提示跳过几行];表不存在→[弹窗不崩];无数据→[弹窗退出]
【代码要求】每段加中文注释;开头先做环境检查;删数据前弹窗确认;结束弹窗报处理行数;最后大白话说明:改了哪些数据、怎么粘贴运行。

模板二:三个高频场景提示词(合并 / 批量格式 / 拆分)

通用要求(三场景通用):每段加中文注释;运行前弹窗确认;用大白话说明怎么粘贴运行、备份什么。

【场景A:合并多表】
把多个工作表合并成一张总表。[现状] [5]个表[销售部/市场部/技术部/行政部/财务部],结构相同(表头第1行、A~F列、数据第2行起),行数不同。[结果] 新建[汇总]表(已有先清空);表头留一次;G列加"数据来源"填来自哪表;按原顺序合并。[注意] 排除[汇总][说明]表;去空白行;动态识别末行别写死。

【场景B:批量格式统一】
一键统一格式。[范围] [所有表 / 仅"报表"表]。[格式] 字体[微软雅黑]、正文[11]、表头[12加粗];表头行[浅灰底居中+冻结首行];日期[A][yyyy-mm-dd];金额[D、E][2位小数+千位分隔+右对齐];数据区[细边框];列宽[自适应];行高[20];取消合并[是](不可撤销,空表跳过)。

【场景C:按列拆分多文件】
把总表按某列拆成多个文件。[原表] [总表],表头第1行、数据第2行起;拆分列[C部门];数据列[A~H];约[3000]行。[要求] 每部门一个文件含表头;命名[2026年9月_部门名.xlsx];存当前文件夹"拆分结果"子目录;格式.xlsx。[注意] 同名[提示勿覆盖];特殊字符(/ \ : * ?等)[自动换下划线];运行前弹窗告知将生成几个文件。

模板五:报错求助(出问题就用这个)

我运行 VBA 报错了,帮我修。
【报错信息】(原样复制)[运行时错误 '9':下标越界]
【高亮行代码】[Sheets("Sheet1").Select]
【完整代码】[粘贴全部代码]
【我的表实际】工作表[数据表/汇总/说明];出问题表[数据表];合并单元格[有]/隐藏行[无]/保护[无];数据从第[3]行(前2行是标题说明)
【请帮我】1 大白话说清原因 2 给修正完整代码(留中文注释)3 告诉我以后怎么描述避坑 4 指出其他潜在坑。

十、写在最后

VBA 过去是办公室”隐藏技能”,现在这层壁垒基本没了。你和”会 VBA 的人”之间,差距只在”你有没有把需求说清楚”。

但两句话得说前面:第一,宏不是万能的——规则每次都变的活别硬做,先算”重复×耗时”那笔账。第二,安全永远排第一——新宏第一次永远在复制出的测试文件上跑,这习惯某天会救你。

别追求一次写出完美的宏。 先让它跑通最核心的那一步,再一点点加功能。

第一版只做”合并”,跑通了再加”删空行”、加”排序”,每加一步跑一次,出问题立刻知道卡在哪。

下篇预告:第 51 篇《用 AI 做销售 / 考勤表模板》——前面五篇都在处理”已经有的表”,下篇讲怎么让 AI 从零设计一张真正好用的表,含设计三原则、字段模板与”防呆”技巧。这一篇能让你从”整理表的人”变成”设计表的人”。 我们下期见。

Search

    Post Directory