乔山办公网我们一直在努力
您的位置:乔山办公网 > excel表格制作 > Excel只能按照一个拆分符拆分!VBA可以按照多个拆分符拆分-excel拆分单元格

Excel只能按照一个拆分符拆分!VBA可以按照多个拆分符拆分-excel拆分单元格

作者:乔山办公网日期:

返回目录:excel表格制作

VBA早间档

VBA早间档,利用简单的几分钟,学习一些简单的VBA知识,提升工作效率

今日主题

今天我们继续昨天的话题,VBA中split方法能够实现Excel自带的分列功能效果,昨天我们也是介绍了split还可以实现一些分列并不能实现的效果,比方说多列同时进行拆分,今天我们再来一个新功能,利用split来拆分多个不同的分隔符的多列数据

案例展示和解析

Excel只能按照一个拆分符拆分!VBA可以按照多个拆分符拆分

这里我们昨天的案例,我们成功的实现了多列数据的同时拆分,现在我们来看看如果实现多个拆分符的多列数据的拆分

代码区

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

看着代码是长两点,不过是可以直接套用的,

Excel只能按照一个拆分符拆分!VBA可以按照多个拆分符拆分

效果非常的不错。

代码解析

今天的代码虽然看起来有点长,但是其实和昨天的思路是一样的,我们这里不过是增加了一个转换的方法,将所有的常见的分隔符通过正则的形式进行转化成为一个统一的拆分符

Excel只能按照一个拆分符拆分!VBA可以按照多个拆分符拆分

然后我们在按照昨天的多列拆分的方式来进行拆分就可以了,正则我们还没有正式讲述,但是这里的方法是可以直接套用的

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,准时再见

相关阅读

关键词不能为空
极力推荐

ppt怎么做_excel表格制作_office365_word文档_365办公网