Excel VBA 8.22进一步完善提取代码 关键核心还是正则表达式

Excel和VBA
2021-02-11 19:30 来自广东省

前景提要

昨天我们学习了如何通过正则的方式来提取单元格中的数字,这里的数字是纯数字,并没有其他的中文,或者英文,不过有小伙伴说这样的场景太简单,实际的工作中,提取场景会更加的复杂,提取的结果也是要求更加的高,那么今天我们就针对大家提出的新的场景,进一步完善下代码吧

场景说明

还是和之前的场景差不多的样子,这里注意我们的标红处,就是今天新增加的数据部分,按照昨天的代码,我们确实是可以将数据提出出来,

但是我们会发现,提取的结果差强人意,虽然是将数字提取出来了,但是并没有任何的区分,导致所有的数据都粘在一起,这对于我们拆分提取数据并没有太大的意思,这样强行将两个不同意义的数据合并在一起的提取,感觉是缺少了灵魂,所以今天我们要改动下代码,将提取的数据也分割出来

代码区

Sub sz2()

Dim rng As Range, a As Range

Set rng = Application.InputBox("请选择单元格区域", "提取单元格的数字", , , , , , 8)

For Each a In rng

MyStr = a.Value

ResultStr = ""

With CreateObject("VBSCRIPT.REGEXP")

.Pattern = "\d{2,}"

.IgnoreCase = True

.Global = True

If .test(MyStr) Then

For Each Item In .Execute(MyStr)

ResultStr = ResultStr & "-" & Item

Next Item

ResultStr = Right(ResultStr, Len(ResultStr) - 1)

a.Offset(0, 1) = ResultStr

热点新闻