對前一篇文章進行更新升級,有時候需要給正則表達式進行分類,當匹配到某個正則表達式時,則在相應的位置展示出該正在表達式屬於哪一類,這樣的話,我們就可以很方面的對自己所要處理的很多數據進行分類了
實現上面功能,可以在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
這種方法可以基本解決我們日常工作所遇到的問題,但是還需要完善,比如,當一個數據同時滿足幾個正則表達式,通過本例中的代碼,結果只會得到第一次匹配的類,顯然,對於有些要求苛刻的需求,這種匹配結果是不夠的。 筆者也在想辦法去解決這個不足,同時希望集思廣益,大家能夠多多提供意見。