Excel VBA 8.18单元内容拆分 VBA打造分列功能

单元内容拆分 VBA打造分列功能


点击上方“Excel和VBA”,选择“置顶公众号”

致力于原创分享Excel的相关知识,源码,源文件打包提供

一起学习,一起进步~~


前景提要

在大家日常的工作中,想必一定会经常用到Excel的分列功能吧,主要是针对单元格的拆分,将单元格的内容按需拆分成几列,那么大家在使用的过程中, 有没有想过如果用VBA要如何实现这样的功能呢?

很多小伙伴们肯定会想,既然Excel已经有了现成的功能,为什么我们还要去自己用代码写这个功能呢?

其实这是一个很简单的道理,既然要学习VBA,自然是要学会每一个常用的小知识点,小知识点看起来不起眼,但是每一个功能都是有这些小知识点组成的,你不可能在代码执行的过程中,让她暂停几秒钟,给你时间去选择菜单栏的分列按钮和操作吧。

所以秉着学好VBA的心态,我们来尝试着用VBA来写一个简单的分列功能

场景说明

这是我们模拟的简单数据,我们都知道可以通过Excel自带的分列功能来实现拆分单元格的操作

我们这里来看看VBA如何实现

说到文本的拆分,我们肯定首先想到的就是split方法了

没错,今天我们也就是利用split方法来仿造一个分列功能

代码区

Sub test()Dim rng As Range, arr, a As RangeSet rng = Application.InputBox("请选择需要拆分的单元格区域", "单元格的处理", , , , , , 8)For Each a In rng    Str1 = rng.Text    arr = Split(Str1, "-")    ii = UBound(arr) + 1    For i = 1 To ii        rng.Offset(0, i) = arr(i - 1)    Next iNext aEnd Sub

来看看代码实现的效果

这个效果和我们直接用Excel的分列功能得到的结果是一样的

代码解析

今天的代码写起来其实很简单,并不多,只有短短的10+行代码

但是这里涉及了一个重要的VBA知识,就是数组

前面的代码我们直接跳过,来到今天的关键代码

arr = Split(Str1, "-")

str1就是我们要拆分的单元格的文本,通过split方法,我们得到了一个什么样的结果呢?

这是一个数组的结构,split将文本按照拆分符拆开之后,得到的就是一个数组

而这里我们设置一个变量arr来承载这个数字

从上面的截图中可以看到,arr是从0开始的,他实际上有4个部分,但是因为从0开始,所以他的最大下标只有3.

知道这个有什么用处呢?

我们拆分了单元格之后,需要填充单元格,那是不是需要将结果填充到后面的单元格中,那要填充多少个单元格呢?

这就需要用到最大下标了。

ii = UBound(arr) + 1

这里获得的就是最大下标,为什么要+1?

因为前面已经说了,数组的下标是从0开始的,所以最终的结果要+1

有了内容,又有了需要填充的单元格区域,就可以直接遍历循环填充了。

For i = 1 To ii a.Offset(0, i) = arr(i - 1) Next i
(0)

相关推荐