如何将单元格范围放入特定的数组维度

Mar*_*mer 3 excel vba excel-vba

我需要将一系列单元格放入一个数组中,这本身很简单:

Dim matchArray As Variant
matchArray = Sheets(lookupSheet).Range("B2:B12000").Value2
Run Code Online (Sandbox Code Playgroud)

这将创建一个二维数组,其中一列作为第二维,如果扩展范围以包含第二列,则会创建一个二维数组,其中第二维包含两列:

matchArray = Sheets(lookupSheet).Range("B2:C12000").Value2
Run Code Online (Sandbox Code Playgroud)

但是如果两列不是彼此相邻并且你不希望中间的那一列呢?

matchArray = Sheets(lookupSheet).Range("B2:B12000,D2:D12000").Value2
Run Code Online (Sandbox Code Playgroud)

以上是我最好的猜测,但它不起作用,它只返回指定的第一个范围.

所以我需要的是一种将范围单元格值返回到数组的特定维度的方法.

我知道我可以通过循环遍历行来完成它,但是对于我要使用的行数,这将花费太长时间.

Joh*_*man 5

你确实需要一个循环 - 但是在VBA数组而不是单个单元格上循环:

Sub Test()
    Dim A As Variant, B As Variant, C As Variant
    Dim i As Long
    B = Sheets(lookupSheet).Range("B2:B12000").Value2
    C = Sheets(lookupSheet).Range("D2:D12000").Value2
    ReDim A(1 To 11999, 1 To 2)
    For i = 1 To 11999
        A(i, 1) = B(i, 1)
        A(i, 2) = C(i, 2)
    Next i
    'do stuff with A
End Sub
Run Code Online (Sandbox Code Playgroud)

这应该只需要几分之一秒.