VBA学习(34):Split函数应用|分离商品和数量
静下心,认真看。每天进步一点点
面对杂乱成堆的进货单数据,如果想从中分开在一行的商品信息会是很麻烦的一件事。然而一般都有规律可循。下面这个例子就可以用vba中的split函数解决问题的经典例子。
▶如下图,如果手动分开商品会很麻烦,复制粘贴多次才能解决。
下面就用vba中的Split函数配合循环来快速解决这个问题。
▶Split函数讲解
Split 函数返回一个包含分割符的基础上进行分隔特定数量的数组。
语法 :
Split(expression[,delimiter[,count[,compare]]])
expression, 必需的参数。就是分隔符的字符串。
delimiter, 一个可选的参数。参数用于转换成基于定界符数组。(一般不用)
count, 一个可选的参数。要返回子串的数目,并且如果指定为-1,那么所有的子串被返回。
compare, 一个可选的参数。此参数指定要使用哪个比较方法。
0 = vbBinaryCompare - 执行二进制比较
1 = vbTextCompare - 执行文本比较
▶实现目标的代码如下
Sub 自动分列()Dim i As IntegerDim m As IntegerDim n As Integerm= Sheet1.UsedRange.Rows.Count '获取使用的最大行数For i = 2 To marr = Split(Sheet1.Cells(i, 1), "] ,[") '用split函数以“],[”为特征字符串划分为数组n = UBound(arr) '获取数组最大编号For s = 0 To narr(s) = Replace(arr(s), "[", "") '替换头部的“[”arr(s) = Replace(arr(s), "]", "") '替换尾部的“]”Sheet1.Cells(i, s + 2) = arr(s) '将分列结果列出来NextNext
End Sub
最后结果如下图所示:
▶写在后面
如果还要细分,将商品和数量分开。只需要在Split函数外面再嵌套一个Split函数就可以解决。这个留作思考。