1.一维数组读出来放在工作表里一行里 Option Explicit Sub 一维数组读一行里() Dim arr1 arr1 = Array("佛山小老鼠", "张三", "李四", "小妮子", "丫头") Range("A1").Resize(1, UBound(arr1) + 1) = arr1 End Sub Sub 清空() Range("A1:E1") = "" End Sub
2.一维数组读出来放在工作表里一列里 Sub 一维数组读一列里() Dim arr1 arr1 = Array("佛山小老鼠", "张三", "李四", "小妮子", "丫头") Range("A1").Resize(UBound(arr1) + 1, 1) = Application.WorksheetFunction.Transpose(arr1) ’由于一维数组读到单元格只能读成横向的,所以我们要通过转置函数Transpose,转成纵向的 End Sub
3.二维数组读出到工作表里 Sub 把二维数组读到单元格中() Dim arr1 arr1 = Range("A1").CurrentRegion [E1].Resize(UBound(arr1, 1), UBound(arr1, 2)) = arr1 '函数Ubound是取得数组arr1最大的索引号, 'UBound(arr1, 1)数组arr1最大的行索引号 'UBound(arr1, 2))最大的列索引号 End Sub
4.由于部分函数只支持一维数组,而我们单元格区域装入数组都是二维的,怎么办?
A.工作表里一行数据转一维 Sub 工作表里一行数据转一维1() '分开写的 Dim arr1, arr2, arr3 arr1 = Range("A1:E1") arr2 = Application.WorksheetFunction.Transpose(arr1) arr3 = Application.WorksheetFunction.Transpose(arr2) End Sub
Sub 工作表里一行数据转一维2() '合起写的 Dim arr1, arr2 arr1 = Range("A1:E1") arr2 = Application.WorksheetFunction.Transpose(Application.WorksheetFunction.Transpose(arr1)) '为什么要转二次呢,因为第一次是把1行5列的二维数组转置成5行1列的二维数组 第二次是把5行1列的二维数组转成一维数组 End Sub
Sub 工作表里一行数据转一维3() '简写的 Dim arr1, arr2 arr1 = Range("A1:E1") arr2 = Application.Transpose(Application.Transpose(arr1)) '我们可以把二个WorksheetFunction省略 End Sub
B.一工作表里一列数据转一维
Sub 工作表里一列数据转一维() Dim arr1, arr2 arr1 = Range("A1:A5") arr2 = Application.WorksheetFunction.Transpose(arr1) '如果是工作表里的一列装到数组里,只需转一次 End Sub
|