分享

带您走进VBA数组5

 yuxinrong 2018-12-10
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



    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多