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

还是和之前的场景差不多的样子,这里注意我们的标红处,就是今天新增加的数据部分,按照昨天的代码,我们确实是可以将数据提出出来,
但是我们会发现,提取的结果差强人意,虽然是将数字提取出来了,但是并没有任何的区分,导致所有的数据都粘在一起,这对于我们拆分提取数据并没有太大的意思,这样强行将两个不同意义的数据合并在一起的提取,感觉是缺少了灵魂,所以今天我们要改动下代码,将提取的数据也分割出来
代码区
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


