乐于分享
好东西不私藏

学会VBA,轻松搞定每月Excel重复劳动

学会VBA,轻松搞定每月Excel重复劳动

1. 每个月的重复工作

每个月导出请假、加班、出差记录,先把“已驳回”“已撤销”“通过后撤销”三种状态的行全删了,剩下正常通过的记录,再进行核算和处理。

听起来5分钟能搞定吧?

先筛选“状态”列,勾“已驳回”,删除。再取消筛选,筛“已撤销”,再删一批。再取消筛选,筛“通过后撤销”,再删。

删完三批,感觉毫无价值可言。

每次删完还得手动取消筛选才能进行下一步,中间稍微走个神,就忘了自己删到哪一批了。

等三种状态逐批删完,再取消筛选、导出、整理格式……

更让人崩溃的是——下个月,又来一遍

2. 转机:我想起Excel里有个东西叫VBA

我开始想:Excel有没有办法一次性把三种状态同时删掉

搜了一圈发现,有个叫VBA的东西能写代码让Excel自动干活。我不是程序员,但看了几个教程发现——原来不需要自己写,只需要把需求说清楚就行

关键逻辑就三条:

  • 第一,只操作我选中的那一列,不乱动旁边的数据。不管数据在哪一列,都能直接删
  • 第二,从最后一行往上找,这样删行不会导致漏判
  • 第三,分批删除,Excel一次处理太多会卡,分批次就稳得很

想明白这三点,我把需求整理了一下。

3. 写代码比我想象的顺利得多

打开VBA编辑器(Alt+F11),插入模块,照着逻辑把代码敲进去。

第一版就跑通了。

拿那张八千行的考勤表试了一下——点运行,Excel安静了大概十几秒,然后弹出一个提示框:

“搞定!已删除 347 行。”

我打开表一看,三种状态的行全没了,剩下的全是“已通过”的正常记录,整整齐齐。

那一刻我端着杯子愣了好一会儿。

过去三个月,每个月都要点N次鼠标的活,现在点一个按钮,十几秒就完事了。

4.你不用懂代码,把需求扔给AI就行

看到这里你可能在想——“我不会写VBA啊,敲代码那段我直接卡住了。”

别急,我后来发现一个更省事的办法:你根本不用自己写,把需求扔给AI就行。

我试过把需求换成“删除‘部门’列里包含‘实习生’的所有行”,AI十几秒就给我吐出了一段新代码,复制进模块直接跑通。

你只需要复制下面这段提示词,贴给AI(ChatGPT、Kimi、豆包都行),它就能给你一段能直接用的代码:

复制下面这段话,发给AI:

——

我要写一段Excel的VBA代码,功能是:

  1. 我手动选中某一列(比如“状态”列)
  2. 代码自动扫描这一列,找到包含以下关键词的行:【在这里填你要删的词,比如:已驳回、已撤销、通过后撤销】
  3. 找到后删除整行
  4. 要求从下往上删,避免行号错位
  5. 分批删除,防止数据量大时Excel卡死
  6. 删完后弹窗提示一共删了多少行
  7. 如果我没选中列或选多了,弹出提醒让我重新选

请直接给我完整的VBA代码,不要多余的解释,代码里中文备注写清楚。

拿到代码之后,三步搞定:

  1. 按 Alt+F11 打开VBA编辑器 → 菜单栏点 “插入” → “模块”
  2. 把AI生成的代码完整粘贴进去,关掉编辑器
  3. 回到Excel,点一下状态列的列标 → 按 Alt+F8 → 选那个宏 → 点“运行”

等它弹个提示框告诉你删了多少行,完事。

两个关键提醒:

  • 如果AI第一次生成的代码报错,把报错信息复制粘贴回对话框,告诉AI“报了这个错,帮我改一下”,它通常会自己修好。不用你懂VBA,你只需要会复制粘贴和描述需求。
  • 运行前一定另存一份副本——VBA删除不经过回收站,删了就真没了。花五秒钟存个备份,能省一整天的心。

5. 这件事让我想明白了一个道理

说实话,用AI生成代码本身没什么了不起。

真正让我觉得值的不是那15秒,而是——和鼠标手say byebye

这个变化让我养成一个习惯:任何一件事,只要我确认它会重复发生第三次,我就停下来想——能不能让它自动跑。

省下来的不是那几十秒,是每个月那几个小时的低质量劳动时间。

这些时间,我才舍得留给真正需要动脑子的地方

我们的时间,应该花在判断上,不是花在重复上。