|
楼主 |
发表于 2012-11-21 23:36
|
显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
本帖最后由 佛山小老鼠 于 2012-11-21 23:36 编辑
拼命奔跑的人 发表于 2012-11-21 16:17
请问,怎么会这样?谢谢!
- Sub test1()
- Dim i As Long, MaxRow As Long, arr1, arr2() '定义相关的变量
- MaxRow = Cells(Rows.Count, 1).End(xlUp).Row + 1 '取得A列最后一个有数据的单元格的下一个单元格
- ' 为什么还要加上呢?,因为只有找到下一个空格,才会把空格上面的数据读出来
- arr1 = Range("A1:A" & MaxRow) '把单元格区域写于数组
- For i = 1 To MaxRow '遍历数组一维
- If arr1(i, 1) = "" Then '如果数组成员为空,那么
- k = k + 1 '累加k,目的是它们分别显在在E,F,G列
- Cells(1, 4 + k).Resize(UBound(arr2), 1) = Application.WorksheetFunction.Transpose(arr2) '
- '把数组arr2一次性写于单元格区域
- Erase arr2 '然后清空数组arr2空间,目的是为了存放另一空格下面的数据
- x = 0 '重新初始化x,因为下一个空格下面的数据不一样,所以要归0,不然的话前面就会有空单元格出现
- Else
- x = x + 1 '累加x
- ReDim Preserve arr2(1 To x) '重新定义动态数组Arr2
- arr2(x) = arr1(i, 1) '把数组arr1满足条件的成员赋值给数组arr2
- End If
- Next i
- End Sub
- Sub test2()
- Range("E:G").Clear
- End Sub
复制代码
|
|