|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
'没有必要再给你修改代码,因为运行多余一次时结果是不确定的,输出时已经给你考虑好了
'你可以把它复制到需要数据出现的地方,用不了几秒的吧,,,
Option Explicit '变量必须定义(不定义变量会出错,良好的习惯从这里开始)
Sub test() '这就是传说中的过程,过程名叫test,哈哈哈
Dim arr, i, j, t, n, max '定义变量,但没有指定变量类型(就是变体变量,可以查一下什么是变量类型)
arr = Sheets("sheet1").[a1].CurrentRegion '跟{a1]连在一起的数据块,当然也可以指定,,,
ReDim brr(1 To UBound(arr, 1), 1 To 30) '定义一个列足够大的数组,行当然已经确定为ubound(arr,1)
For i = 1 To UBound(arr, 1)
t = Split(arr(i, 1), ChrW(160)): n = 0 '按非可见字符ChrW(160)进行分割当前字符串,如果是空格改成space(1)
For j = 0 To UBound(t) '分割后得到的字符串下标为0(也可在开始处声明从1开始,觉得没有必要),上标为ubound(t)
If Len(t(j)) Then n = n + 1: brr(i, n) = t(j) '非空时取数据,因为你这ChrW(160)有点多
Next
If max < n Then max = n '输出时用,因为前面定义的输出数组列数有点大,也可以不要
Next
With Sheets("sheet2").[a1] '指定工作表及输出的第一单元格位置,有很多方法这是最常见的
.Resize(Rows.Count, max + 1).ClearContents '清除输出区可能存在的数据
.Resize(UBound(brr, 1), max) = brr '输出数据,max在这里用,当然也可以把它改成ubound(brr,2)
End With
End Sub |
评分
-
6
查看全部评分
-
|