前景提要
昨天我们学习了如何利用VBA来实现拆分单元格的功能,很多小伙伴也是一直在吐槽,这个功能和Excel自带的分列功能有点类似,似乎实际工作中的作用不大,好吧,既然如此,我们来升华一下,今天难度提升,昨天我们拆分的单元格只有一种分隔符,按照大家的说法,可以直接用Excel自带的分列功能实现,那么如果有很多种不同的分隔符呢?
场景说明
这是我们今天的模拟数据,可以看到,今天的数据源中有很多种不同的分隔符,也有空格,如果我们还是用Excel自带的分列功能呢?
是不是有点束手无策了,因为Excel的分列功能每次只能按照一种分隔符进行拆分,没有办法同时针对多种拆分符进行分割,所以这就是他的局限性,也许有小伙伴会说,多拆分分列几次就可以了,事实是这样,当然是你不嫌麻烦
其实我们完全可以用VBA来实现一次性拆分的
如何实现呢?
其实就是在上节的代码基础上增加一些代码,来一起看看
代码区
Sub test2()
Dim rng As Range, arr, a As Range, str
Set rng = Application.InputBox("请选择需要拆分的单元格区域", "单元格的处理", , , , , , 8)
For Each a In rng
str = a.Value
With CreateObject("VBSCRIPT.REGEXP")
.Pattern = "[.~!@#$%\^\+\*&\\\/\?\|:\.{}(), ;=]"
.IgnoreCase = True
.Global = True
If .test(str) Then
ss = .Replace(str, "-")
arr = Split(ss, "-")
ii = UBound(arr) + 1
For i = 1 To ii
a.Offset(0, i) = arr(i - 1)
Next i