VBA中正则表达式之字符组

论坛 期权论坛 期权     
米宏Office   2019-7-7 23:58   4833   0

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

先来看一个案例:





如上图:序号和后面的标题写在了一起,有的序号是一位数字,有的是两位数字,有的是三位数字,还有五位数字的。另外,序号和标题之间有的是顿号连接、有的是冒号连接,有的是空格连接,还有的没有任何分割符号直接连接在一起的。

现在需要把后面的标题提取出来。


根据我们前面几节学习的知识,我们只要利用一个表达式把标题前面的数字和分割符号匹配出来,然后替换为空白就可以了。


元字符“\d”表示任意一个数字,因为案例中数字位数不确定,所以用量词“+”来匹配多位数字,这样数字部分就可以匹配出来了。


数字与标题之间的空格、冒号、顿号怎么表示呢?


我们可以用[ :、]来表示,类似[a-z]表示a到z的任意一个字母,[123]表示1或者2或者3,这样的表达方式就叫字符组,由一些字符组成一个集合,表示匹配该集合中任意一个字符。


因为有的序号和标题之间直接相连,所以我们用“\d+[ :、]?”,量词?表示出现0次或1次,出现0次就代表啥都没有,也就是序号和标题直接相连的情况。


上面的案例代码如下:

  1. Sub 拆分()
复制代码
  1. Dim regx As Object, rng As Range, n
复制代码
  1. Set regx = CreateObject("vbscript.regexp")
复制代码
  1. With regx
复制代码
  1.       .Global = True
复制代码
  1.       .Pattern = "\d+[、:]?"
复制代码
  1.         For Each rng In [a1:a12]
复制代码
  1.         n = n + 1
复制代码
  1.         Cells(n, 2) = .Replace(rng, "")
复制代码
  1.         Next
复制代码
  1. End With
复制代码
  1. End Sub
复制代码
向右滑动可以查看完整代码

字符组在前几节的内容中也出现过,在这节我们提了下它的概念,让大家知道到字符组到底是什么意思。

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

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

本版积分规则

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

下载期权论坛手机APP