前景提要
之前我们学习了利用VBA来拆分单元格的方法,主要还是优化Excel分列功能的,这不,又有小伙伴们反馈,分列功能有一个按照长度拆分单元格的功能,是不是可以优化下,在平时按照长度拆分的时候,我还要一个个的数,到多少个字段停止,而且分列功能的那个线条拖来拖去也比较麻烦,有没有办法直接输入一个数字就进行拆分呢?
好,安排上
场景说明
这是我们今天构造的数据源,今天要尝试的是按照单元格长度进行拆分,我们就准备了一些长度不同的数据,这些数据你如果想要通过单元格的分列功能来操作的话,估计有点难度
Excel自带的分列功能,按照长度拆分的话,至少有一个大前提,就是数据的格式是完全一样的,才能够一次针对大量的数据进行拆分,如果数据长度不一样,那么就会出现上面动图的尴尬,我想要取每个数据的后面三位,但是因为单元格内容不同,没有办法一次性全部取出来,既然如此,VBA可以登场了
代码区
Sub testc()
Dim rng As Range, a As Range, sp
sp = Application.InputBox("请输入前后长度,用逗号隔开", "拆分长度的输入", , , , , , 2)
lsp = Split(sp, ",")(0)
rsp = Split(sp, ",")(1)
Set rng = Application.InputBox("请选择需要拆分的单元格区域", "单元格的处理", , , , , , 8)
For Each a In rng
s = a.Value
a.Offset(0, 1) = Left(s, lsp)
a.Offset(0, 2) = Mid(s, Int(lsp) + 1, Len(s) - rsp - lsp)
a.Offset(0, 3) = Right(s, rsp)
Next a