VBA早间档
VBA早间档,利用简单的几分钟,学习一些简单的VBA知识,提升工作效率
今日主题
今天我们继续昨天的话题,VBA中split方法能够实现Excel自带的分列功能效果,昨天我们也是介绍了split还可以实现一些分列并不能实现的效果,比方说多列同时进行拆分,今天我们再来一个新功能,利用split来拆分多个不同的分隔符的多列数据
案例展示和解析
这里我们昨天的案例,我们成功的实现了多列数据的同时拆分,现在我们来看看如果实现多个拆分符的多列数据的拆分
代码区
Sub sss() Dim rng As Range, rngt As Range, a As Range, arr, Str$ Set rng = Application.InputBox("请选择拆分单元格", , , , , , , 8) Set trng = Application.InputBox("请选择结果填充位置首单元格", , , , , , , 8) For Each a In rng Str = a.Value With CreateObject("VBSCRIPT.REGEXP") .Pattern = "[.~!@#$%^+*&\/?|:.{}()';=]" .IgnoreCase = True .Global = True If .Test(Str) Then a = .Replace(Str, "-") End If End With Next a k = 0 For Each a In rng If a <> "" Then arr = Split(a, "-") If k <> 0 Then trng.Offset(k, 0).Resize(1, UBound(arr) + 1) = arr Else trng.Resize(1, UBound(arr) + 1) = arr End If k = k + 1 End If Next a End Sub
看着代码是长两点,不过是可以直接套用的,
效果非常的不错。
代码解析
今天的代码虽然看起来有点长,但是其实和昨天的思路是一样的,我们这里不过是增加了一个转换的方法,将所有的常见的分隔符通过正则的形式进行转化成为一个统一的拆分符
然后我们在按照昨天的多列拆分的方式来进行拆分就可以了,正则我们还没有正式讲述,但是这里的方法是可以直接套用的
For Each a In rng Str = a.Value With CreateObject("VBSCRIPT.REGEXP") .Pattern = "[.~!@#$%^+*&\/?|:.{}()';=]"'所有可能出现的常用的特殊符号,如果没有,在里面添加就好 .IgnoreCase = True .Global = True If .Test(Str) Then a = .Replace(Str, "-")'这里是全部替换成为“-”,如果要更改为其他的拆分标识,就改这里的就可以了 End If End With Next a
具体更改方法也交给大家了,虽然正则比较的复杂,但是在眼下的这个场景中,大家是可以直接套用这个模板的
当然方法并不绝对,也不唯一,如果大家有更好的方法还望多多指教。
==========================================
以上就是今天的VBA早间档的全部内容,感谢大家的捧场~~
split的用法就分享到这里,最近三节的源码大家如果需要的话,可以私信“split”获取,感谢支持~~
明天早上7:30,准时再见