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)
以上是我最好的猜测,但它不起作用,它只返回指定的第一个范围.
所以我需要的是一种将范围单元格值返回到数组的特定维度的方法.
我知道我可以通过循环遍历行来完成它,但是对于我要使用的行数,这将花费太长时间.
你确实需要一个循环 - 但是在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)
这应该只需要几分之一秒.
| 归档时间: |
|
| 查看次数: |
86 次 |
| 最近记录: |