實例需求:商品組清單保存在A列中,現(xiàn)需要將其拆分為商品名稱,保存在從B列開始的后續(xù)單元格中,部分商品包含規(guī)格,并且多種規(guī)格屬性使用了逗號分隔,因此無法直接使用Excel分列功能完成數(shù)據(jù)拆分。
示例代碼如下。
Sub Demo()
Dim objRegExp as Object
Dim lngLstRow As Long
Dim iCol As Integer, i As Integer
Dim sText As String
Set objRegExp = CreateObject("vbscript.regexp")
objRegExp.IgnoreCase = True
objRegExp.Global = True
objRegExp.Pattern = "[一-龜]+((.*?))?"
lngLstRow = [a1].End(xlDown).Row
For i = 2 To lngLstRow
sText = Trim(Cells(i, 1))
Set objMHs = objRegExp.Execute(sText)
iCol = 2
For Each objMH In objMHs
Cells(i, iCol) = objMH
iCol = iCol + 1
Next
Next
Set objRegExp = Nothing
End Sub
【代碼解析】
第6行代碼創(chuàng)建正則對象。
第7行代碼設(shè)置正則匹配忽略字符大小寫。
第8行代碼設(shè)置正則全局匹配。
第9行代碼設(shè)置正則匹配模式。
正則表達(dá)式 | 說明 |
---|---|
[一-龜]+ |
匹配一個或者多個中文字符 |
((.*?))? |
匹配全角括號包裹的任意字符,可以不包含此部分 |
匹配結(jié)果如下圖所示。文章來源:http://www.zghlxwxcb.cn/news/detail-740813.html
第11行代碼清空保存結(jié)果的單元格區(qū)域。
第12~20行代碼循環(huán)處理數(shù)據(jù)。
第13行代碼讀取A列單元格內(nèi)容。
第14行代碼執(zhí)行正則匹配。
第15行代碼設(shè)置保存拆分結(jié)果的起始列。
第16~19行代碼循環(huán)讀取匹配結(jié)果,寫入工作表單元格。
第21行代碼釋放對象變量占用的系統(tǒng)資源。文章來源地址http://www.zghlxwxcb.cn/news/detail-740813.html
到了這里,關(guān)于VBA之正則表達(dá)式(44)-- 拆分商品和規(guī)格的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!