首页 > 技术文章 > 在excel用正则表达式匹配表中数据(VBA)

yorke 2016-12-14 10:27 原文

对前一篇文章进行更新升级,有时候需要给正则表达式进行分类,当匹配到某个正则表达式时,则在相应的位置展示出该正在表达式属于哪一类,这样的话,我们就可以很方面的对自己所要处理的很多数据进行分类了

实现上面功能,可以在sheet2中的B列加上对应的正则表达式属于哪一类

sheet1中A列数据与上一篇文章一样

 

 运行下面代码,则出现了想要的效果如下:

 

 然后修改相应的代码如下:

Sub Test()
atr = Worksheets("Sheet1").Range("a65536").End(xlUp).Row
btr = Worksheets("Sheet2").Range("a65536").End(xlUp).Row
btr2 = Worksheets("Sheet2").Range("b65536").End(xlUp).Row

a = Worksheets("Sheet1").Range("a1:a" & atr).Value
b = Worksheets("Sheet2").Range("a1:a" & btr).Value
b2 = Worksheets("Sheet2").Range("b1:b" & btr2).Value

ReDim c(1 To atr, 1 To 1)
Set reg = CreateObject("vbscript.regexp")
With reg
.Global = True
.IgnoreCase = True
For ar = 1 To atr
For br = 1 To btr
If btr = 1 Then
.Pattern = b
Else
.Pattern = b(br, 1)
End If
If .Test(a(ar, 1)) Then
c(ar, 1) = b2(br, 1)
Exit For
End If
Next
Next
End With
Range("c1:c" & atr) = c
Set reg = Nothing
End Sub

这种方法可以基本解决我们日常工作所遇到的问题,但是还需要完善,比如,当一个数据同时满足几个正则表达式,通过本例中的代码,结果只会得到第一次匹配的类,显然,对于有些要求苛刻的需求,这种匹配结果是不够的。 笔者也在想办法去解决这个不足,同时希望集思广益,大家能够多多提供意见。

 

推荐阅读