Microsoft Excel是Microsoft為使用Windows和Apple Macintosh操作系統的電腦編寫的一款電子表格軟件。直觀的界面、出色的計算功能和圖表工具,再加上成功的市場營銷,使Excel成為最流行的個人計算機數據處理軟件。 excel vba 分列多用于一般常規的分列操作完成不了的情況。 Excel內置的分列,僅用于有規律的數據進行分列。比如下面的截圖,這樣的數據源,分列就可以考慮使用excel vba 分列完成。 
A列數據源,要將漢字和數字分列后的效果如B:D列。 下面是兩段excel vba 分列的代碼,案例和答案來自論壇版主。 第一段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,打開VBE編輯器,單擊插入——模塊,復制上面任意一段代碼,按F5鍵運行即可完成分列。
Excel整體界面趨于平面化,顯得清新簡潔。流暢的動畫和平滑的過渡,帶來不同以往的使用體驗。 |