html分列代码,实现分列的两段excel vba 分列代码

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

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

a008a5d3c25bbeb3996aa7bc73e77ab8.gif

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键运行即可完成分列。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值