您现在的位置是:主页 > VBA >

共享两段excel vba 分列代码实现不规则数据源的分列

发布时间:2023-10-05 01:55:33所属栏目:VBA 已帮助编辑作者:Excel自学教程

excel vba 分列多用于一般常规的分列操作完成不了的情况。

  Excel内置的分列,仅用于有规律的数据进行分列。比如下面的截图,这样的数据源,分列就可以考虑使用excel vba 分列完成。

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自学教程为您提供共享两段excel vba 分列代码实现不规则数据源的分列的解读,本文章链接: http://www.5enet.cn/Excel_VBA/78785.html 欢迎分享转载,更多相关资讯请前往VBA

站长名片

姓名:曾工

职业:IT运维

现居:深圳罗湖宝能大厦

电话:15768114603

扫码关注

  • 专注IT行业,10年IT行业经验
  • 微信