当前位置:萝卜系统下载站 > 办公软件教程 > 详细页面

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

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

更新时间:2024-01-21 文章作者:未知 信息来源:网络 阅读次数:

Microsoft Excel是Microsoft为使用Windows和Apple Macintosh操作系统的电脑编写的一款电子表格软件。直观的界面、出色的计算功能和图表工具,再加上成功的市场营销,使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整体界面趋于平面化,显得清新简洁。流畅的动画和平滑的过渡,带来不同以往的使用体验。

温馨提示:喜欢本站的话,请收藏一下本站!

本类教程下载

系统下载排行

网站地图xml | 网站地图html