VBA中正则表达式与数组结合的应用案例

论坛 期权论坛 期权     
米宏Office   2019-7-7 23:59   2985   0
我的目标:让中国的大学生走出校门的那一刻就已经具备这些Office技能,让职场人士能高效使用Office为其服务。支持鹏哥,也为自己加油!

我们来看看下面的案例:





上图中要求把A列数据中学号和姓名拆分开来,通过前面几节的介绍,相信大家解决这个问题已经不难了。


匹配学号部分:
pattern="[N\d+-]",中括号里面的任意一个都是匹配的对象,所以就能匹配出大写的N,数字部分,还有横杠部分。


匹配姓名部分:
pattern="[^N\d+-]",上节中我们讲过首尾锚定,脱字符号在中括号外面就是首部锚定,脱字符号放在中括号里面代表否的意思,就是正好和中括号中表示的字符类型相反的类型。


正则表达式部分我们已经解决了,剩下的事情就是分两个部分,分别写表达式,分别提取出学号和姓名放到相应位置。


如果把两个正则表达式放到数组中,我们就可以去循环表达式了。

代码如下:

  1. Sub test()
复制代码
  1. Dim regx As Object, ar, n%, rng As Range
复制代码
  1. Set regx = CreateObject("vbscript.regexp")
复制代码
  1. With regx
复制代码
  1.         .Global = True
复制代码
  1.         For Each ar In Array("[^N\d+-]", "[N\d+-]")
复制代码
  1.             n = n + 1
复制代码
  1.             .Pattern = ar
复制代码
  1.             For Each rng In [a2:a15]
复制代码
  1.                    Cells(rng.Row, n + 1) = .Replace(rng, "")
复制代码
  1.             Next
复制代码
  1.         Next
复制代码
  1. End With
复制代码
  1. End Sub
复制代码
这就是正则表达式与数组结合的应用,省去了写两段代码的麻烦。

本节的分享就到这里,鹏哥祝大家每天都有进步。

学习技术,提升工作效率。
从基础操作到VBA,
两杯咖啡的钱,
换取一份如此详细的Excel视频资料,
你还在犹豫?
欲购从速,联系微信号:527240310
非诚勿扰!
每天进步一点,每天提升一点!
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:75
帖子:15
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP