国产成人毛片视频|星空传媒久草视频|欧美激情草久视频|久久久久女女|久操超碰在线播放|亚洲强奸一区二区|五月天丁香社区在线|色婷婷成人丁香网|午夜欧美6666|纯肉无码91视频

Excel中VBA數(shù)組與單元格區(qū)域的相互轉(zhuǎn)換

在使用VBA批量操作Excel工作表單元格區(qū)域時(shí),經(jīng)常會遇到將單元格區(qū)域轉(zhuǎn)換為VBA數(shù)組的需求,同樣也會遇到將VBA數(shù)組輸出到單元格區(qū)域的情況。本文將介紹VBA數(shù)組與單元格區(qū)域的相互轉(zhuǎn)換方法。 1.

在使用VBA批量操作Excel工作表單元格區(qū)域時(shí),經(jīng)常會遇到將單元格區(qū)域轉(zhuǎn)換為VBA數(shù)組的需求,同樣也會遇到將VBA數(shù)組輸出到單元格區(qū)域的情況。本文將介紹VBA數(shù)組與單元格區(qū)域的相互轉(zhuǎn)換方法。

1. 單元格區(qū)域

單元格區(qū)域指至少包含兩個(gè)單元格的區(qū)域,單獨(dú)的單元格不算是單元格區(qū)域。

2. 一維水平數(shù)組

一維水平數(shù)組指數(shù)組的值在Excel單元格區(qū)域中按照水平方向輸出,即按照Excel列的順序輸出。

3. 一維垂直數(shù)組

一維垂直數(shù)組指數(shù)組的值在Excel單元格區(qū)域中按照垂直方向輸出,即按照Excel行的順序輸出。

4. 將單元格區(qū)域轉(zhuǎn)換為VBA數(shù)組

當(dāng)將單元格區(qū)域轉(zhuǎn)換為VBA數(shù)組時(shí),該數(shù)組變量必須是Variant類型,生成的數(shù)組是二維數(shù)組,下界是1,不受Option Base語句的影響。其中,第一維表示單元格區(qū)域的行方向,第二維表示單元格區(qū)域的列方向。

Sub xyf()
    ' 定義一個(gè)變量用于存放單元格區(qū)域的值
    ' 未指定類型默認(rèn)為Variant類型
    Dim arr
    arr  Range("A1:A2")
    ' 也可以先定義一個(gè)Variant類型的動態(tài)數(shù)組變量
    Dim arr1()
    arr1  Range("A1:A2")
    ' 生成的數(shù)組的維數(shù)為(1 to 2, 1 to 1)
End Sub

5. 由Array函數(shù)生成的一維水平數(shù)組

使用Array函數(shù)生成的數(shù)組是一維水平數(shù)組,可以直接賦值給水平的單元格區(qū)域。

Sub xyf()
    Dim arr()
    arr  Array(1, 2, 3)
    Range("A1:C1")  arr
End Sub

6. 降維轉(zhuǎn)換為一維數(shù)組

由于將單元格區(qū)域轉(zhuǎn)換為VBA數(shù)組時(shí),生成的數(shù)組是二維數(shù)組,內(nèi)置的VBA數(shù)組函數(shù)都是針對一維數(shù)組,所以需要將二維數(shù)組降維轉(zhuǎn)換為一維數(shù)組。

7. 單列多行的單元格區(qū)域轉(zhuǎn)換為一維水平數(shù)組

當(dāng)將單列多行的單元格區(qū)域賦值給數(shù)組變量后,可以使用函數(shù)將數(shù)組轉(zhuǎn)置降為一維水平數(shù)組。

Sub xyf()
    Dim arr()
    ' 以下語句產(chǎn)生二維的arr(1 to 8, 1 to 1)數(shù)組
    arr  Range("A1:A8")
    ' 通過轉(zhuǎn)置降為一維的arr(1 to 8)數(shù)組
    arr  (arr)
End Sub

8. 單行多列的單元格區(qū)域轉(zhuǎn)換為一維水平數(shù)組

當(dāng)將單行多列的單元格區(qū)域賦值給數(shù)組變量后,可以兩次使用函數(shù)將數(shù)組降維轉(zhuǎn)換為一維水平數(shù)組。

Sub xyf()
    Dim arr()
    ' 以下語句產(chǎn)生二維的arr(1 to 1, 1 to 3)數(shù)組
    arr  Range("A1:C1")
    ' 通過兩次轉(zhuǎn)置降為一維的arr(1 to 3)數(shù)組
    arr  ((arr))
End Sub

9. 多行多列的單元格區(qū)域轉(zhuǎn)換為一維水平數(shù)組

當(dāng)將多行多列的單元格區(qū)域賦值給數(shù)組變量后,可以使用函數(shù)的行參數(shù)將二維數(shù)組的每行轉(zhuǎn)換為一維水平數(shù)組。

Sub xyf()
    Dim arr()
    Dim arrTemp()
    ' 以下語句產(chǎn)生二維的arr(1 to 5, 1 to 3)數(shù)組
    arr  Range("A1:C5")
    ' 定義一個(gè)與arr數(shù)組一維尺寸相同的一維數(shù)組變量用于存放提取出來的每行一維數(shù)組的結(jié)果
    ReDim arrTemp(1 To UBound(arr))
    For i  1 To UBound(arr)
        ' 函數(shù)的第二參數(shù)指定行數(shù)生成一維數(shù)組
        arrTemp(i)  Join((arr, i), ",")
    Next
End Sub

10. 列參數(shù)不能直接降維

在使用函數(shù)將二維數(shù)組降維時(shí),只有通過行參數(shù)才可以直接降維,通過列參數(shù)是不能直接降維的。

Sub xyf()
    Dim arr()
    Dim arrTemp()
    ' 以下語句產(chǎn)生二維的arr(1 to 5, 1 to 3)數(shù)組
    arr  Range("A1:C5")
    ' 生成一維數(shù)組(1 to 3)
    arrTemp  (arr, 1)
    ' 生成一維數(shù)組(1 to 3)
    arrTemp  (arr, 1, 0)
    ' 通過Index的列參數(shù)不能降維, arrTemp還是二維數(shù)組(1 to 5, 1 to 1)
    arrTemp  (arr, 0, 1)
End Sub
標(biāo)簽: