很多人写 VBA 清洗数据,靠的是 Split、InStr、Replace 三件套硬拼。遇到「提取手机号」「统一日期格式」「剔除非中文」这类活儿,代码能写到几十行,还一改需求就崩。缺的不是 VBA 语法,是字符串模式匹配这一块。这门番外篇就是补这个洞的。
先确认是不是给你准备的
如果你写 VBA 时出现过下面这些情况,这篇导读对你有用:知道正则表达式这个词,但在 Excel 里从没用过;用过 RegExp 对象,但只会写最简单的 \d+,分组和捕获一塌糊涂;处理脏数据时反复嵌套循环和判断,写完自己都不想再看第二遍。
反过来,如果你已经能熟练用正则做零宽断言、反向引用,那这里的内容对你偏基础,可以直接跳过。这门课不教 VBA 语法本身,默认你能看懂 Sub、For、If,知道工作表怎么引用、数组怎么声明。从没写过一行 VBA 的人先别进来。
它到底在讲什么
主题非常窄,就一件事:把正则表达式接进 Excel VBA,用模式匹配替代原来那堆字符串循环。核心是 VBScript.RegExp 对象的几个属性和方法——Pattern、Global、IgnoreCase、Execute、Replace、Test,以及 Match 和 SubMatches 这两层结果怎么取。
真正的门槛在正则本身。元字符、字符类、量词、分组、管道、锚点、贪婪与懒惰,这些规则在 VBA 环境下和别的语言写法一致,但表现有差别,比如 VBScript 引擎不支持某些 Perl 扩展语法。课程重点落在处理真实表格数据的场景上:从一串混着文字和符号的单元格里抠出数字、把各种乱七八糟的日期写法统一、按特定分隔拆解地址、批量校验格式是否合规。
另一条线是 Replace 的进阶用法。普通替换谁都会,难的是带捕获组的动态替换——用 $1、$2 回填,或者在替换串里做大小写转换。这一块学会了,很多原来要写循环的清洗动作能压成一行。
学的时候容易卡在哪
- 正则写完不知道对不对,只能靠猜。要养成先用 Test 验证 Pattern、再上 Execute 的习惯,别一上来就套到整列数据上。
- Global 忘了设 True,结果只匹配第一个,查半天查不出原因。
- 分不清 Match 对象和 SubMatches 集合的层级,取分组内容时索引写错。
- 中文和全角字符的匹配,字符类范围写不对,导致该匹配的没匹配上。
- Pattern 里的反斜杠在 VBA 字符串中要不要转义,容易绕晕。
这些问题都不是靠看能解决的,必须自己敲一遍、改错、再跑。建议每看完一个场景,拿自己手头的脏数据换进去试,别只用课程里的示例。
看完应该能回答的问题
- 给你一列格式混乱的手机号,能不能写出一个 Pattern 把所有合法号码捞出来,并说明为什么这么写?
- 一张表里日期有「2024.3.5」「2024年3月5日」「03/05/2024」三种写法,怎么用正则统一成同一格式?
- Replace 里带捕获组的替换和普通替换,行为差在哪,什么情况下必须用前者?
- Global 和 IgnoreCase 两个开关分别影响什么,什么时候必须打开?
- 一段文本要同时提取多组信息(比如姓名和电话分开取),Execute 返回的结构怎么遍历?
能答上来,说明你是真的会用了。答不上来,回去把对应的那节重跑一遍。
这是一套由曾贤志主讲的Excel VBA编程教程,专门讲解正则表达式的应用技巧。通过学习,你可以掌握高效的数据处理方法。
课程推荐
《【曾贤志】[第3季]EXCEL VBA编程番外篇——正则表达式(数据处理鬼手)》这是一套由曾贤志主讲的Excel VBA编程教程,专门讲解正则表达式的应用技巧。通过学习,你可以掌握高效的数据处理方法。【技能收获】学完可掌握:正则表达式、VBA编程、Excel。课程以实战为导向,覆盖从基础概念到完整项目落地的关键步骤,配套章节笔记便于课后复盘与面试前快速回顾。【学习建议】建议按目录顺序学习,先打基础再进入综合实战章节;每完成 2~3 节可结合笔记整理一份学习小结,最终尝试独立复现一套完整 Demo 写入个人作品集。【就业发展】可面向岗位:Linux 运维工程师、SRE、云计算工程师、DevOps 工程师。云原生与自动化运维仍是企业 IT 刚需方向,认证 + 实战项目组合能显著提升面试通过率,适合向中高级运维或架构岗进阶。 若你已有一定编程或运维基础,本课程可帮助你在现有技能栈上快速叠加热门方向能力,提升求职时的项目说服力与薪资谈判空间。
视频目录(25 节)
* 1 2.0 数据处理鬼手-正则表达(效果抢先看).mp4
* 2 2.1 什么是正则表达式?.mp4
* 3 2.2 实例应用(统计等级出现的次数).mp4
* 4 2.3 实例应用(将字母等级全部统一成大写).mp4
* 5 2.4 正式表达式之元字符.mp4
* 6 2.5 正则表达式中的元字符(提取数据).mp4
* 7 2.6 正则表达式中的元字符(整理数据).mp4
* 8 2.7 正则表达式之限定符.mp4
* 9 2.8 正则表达式限定符应用(整理数据代码升级重写1).mp4
* 10 2.9 正则表达式限定符应用(整理数据代码升级重写2).mp4
* 11 2.10 正则表达式限定符应用(提取一段文本中的数据).mp4
* 12 2.11 正则表达式之有头有尾.mp4
* 13 2.12 正则表达式之“惑”.mp4
* 14 2.13 正则表达式之“惑”实例1.mp4
* 15 2.14 正则表达式之“惑”实例2.mp4
* 16 2.15 正则表达式之分组应用.mp4
* 17 2.16 正则表达式之分组应用2.mp4
* 18 2.17 正则表达式之分组应用3.mp4
* 19 2.18 正则表达式之非捕获分组应用.mp4
* 20 2.19 正则表达式非捕获分组之零宽断言.mp4
* 21 2.20 正则表达式非捕获分组之零宽断言2.mp4
* 22 2.21 正则表达式非捕获分组之负向零宽断言.mp4
* 23 2.22 正则表达式之贪婪与懒惰.mp4
* 24 2.23 正则表达式实例应用(批量提取联系方式).mp4
* 25 2.24 正则表达式实例应用(批量提取字符串信息).mp4
![【曾贤志】[第3季]EXCEL VBA编程番外篇——正则表达式(数据处理鬼手)](/_next/image?url=%2Fdefault-cover.png&w=1920&q=75)



