在excel用正則表達式匹配表中數據(VBA)


對前一篇文章進行更新升級,有時候需要給正則表達式進行分類,當匹配到某個正則表達式時,則在相應的位置展示出該正在表達式屬於哪一類,這樣的話,我們就可以很方面的對自己所要處理的很多數據進行分類了

實現上面功能,可以在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

這種方法可以基本解決我們日常工作所遇到的問題,但是還需要完善,比如,當一個數據同時滿足幾個正則表達式,通過本例中的代碼,結果只會得到第一次匹配的類,顯然,對於有些要求苛刻的需求,這種匹配結果是不夠的。 筆者也在想辦法去解決這個不足,同時希望集思廣益,大家能夠多多提供意見。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM