excel vba 分列多用于一般常規(guī)的分列操作完成不了的情況。
Excel內(nèi)置的分列,僅用于有規(guī)律的數(shù)據(jù)進(jìn)行分列。比如下面的截圖,這樣的數(shù)據(jù)源,分列就可以考慮使用excel vba 分列完成。
A列數(shù)據(jù)源,要將漢字和數(shù)字分列后的效果如B:D列。
下面是兩段excel vba 分列的代碼,案例和答案來(lái)自論壇版主。
第一段excel vba 分列的代碼:
Sub vba分列()
Dim oJs As Object, rng As Range
Set oJs = CreateObject("ScriptControl"): oJs.Language = "JScript"
oJs.eval "function gets(str){return str.replace(/(\d+)/,' $1 ')}"
For Each rng In Range("A2", [A65536].End(3))
rng(1, 2).Resize(1, 3) = Split(oJs.codeobject.gets(rng.Value), " ")
Next
End Sub
第二段excel vba 分列的代碼:
Sub vba分列()
Dim arr, i%, brr(), sma As Object
arr = Range("a2:a" & Cells(Rows.Count, 1).End(3).Row)
ReDim brr(1 To UBound(arr), 1 To 3)
With CreateObject("vbscript.regexp")
.Global = True
.Pattern = "([^\d]+)(\d+)(.+)"
For i = 1 To UBound(arr)
Set sma = .Execute(arr(i, 1))(0).submatches
brr(i, 1) = sma(0)
brr(i, 2) = sma(1)
brr(i, 3) = sma(2)
Next
End With
Range("b2", Cells(Rows.Count, Columns.Count)).ClearComments
Range("b2").Resize(UBound(brr), UBound(brr, 2)).NumberFormat = "@"
Range("b2").Resize(UBound(brr), UBound(brr, 2)) = brr
Set sma = Nothing
End Sub
代碼使用方法,在excel中,按下ALT+F11,打開(kāi)VBE編輯器,單擊插入——模塊,復(fù)制上面任意一段代碼,按F5鍵運(yùn)行即可完成分列。
核心關(guān)注:拓步ERP系統(tǒng)平臺(tái)是覆蓋了眾多的業(yè)務(wù)領(lǐng)域、行業(yè)應(yīng)用,蘊(yùn)涵了豐富的ERP管理思想,集成了ERP軟件業(yè)務(wù)管理理念,功能涉及供應(yīng)鏈、成本、制造、CRM、HR等眾多業(yè)務(wù)領(lǐng)域的管理,全面涵蓋了企業(yè)關(guān)注ERP管理系統(tǒng)的核心領(lǐng)域,是眾多中小企業(yè)信息化建設(shè)首選的ERP管理軟件信賴品牌。
轉(zhuǎn)載請(qǐng)注明出處:拓步ERP資訊網(wǎng)http://www.ezxoed.cn/
本文標(biāo)題:實(shí)現(xiàn)分列的兩段excel vba 分列代碼
本文網(wǎng)址:http://www.ezxoed.cn/html/support/11139214525.html