如何将 Excel 范围分配给二维数组?

aru*_*roy 5 vbscript excel vba

您能说说如何将 Excel Range("G2:AA1000") 分配给二维数组吗?如果可能的话,在对该 2D 数组执行某些操作后如何将该 2D 数组返回到相同的范围?将 Range 分配给 2D 数组后,如何从该 2D 矩阵中识别每一行?

谢谢,

Sea*_*anC 4

有一种简单的方法可以使用数组对某个区域进行更改,并将其写入同一位置或其他位置。

此示例代码将使用数组将数据从一个区域复制到另一个区域:

Sub example()
Dim testdata()
testdata = Range("A1:B13")
Range("D1:E13") = testdata ' simple copy
Range("G1") = testdata ' copy only 1 cell
Range("I1:K22") = testdata 'try to copy too much
End Sub
Run Code Online (Sandbox Code Playgroud)

testdata数组从1开始,并将扩展到范围中指定的列数和行数。在这种情况下,参考从A1testdata(1,1)获得的数据,参考B1,最后参考A13,并参考B13testdata(1,2)testdata(13,1)testdata(13,2)

将范围设置为等于下一行中的数组,将数组复制到指定位置。

  • 如果该区域小于原始数组,它将仅复制足够的数组来填充该空间,因此Range("D1")=testdata只会在工作表上放置一个单元格。
  • 如果指定更大的区域,则#N/A将填充不在数组元素覆盖的空间中的区域,因此Range("A1:A3")=testdata将用数组中的数据填充A1和A2,但A3将具有#N/A

示例程序结果:
注:A1:B13 是原始数据,后续数据会被复制range(??)=testdata 上面代码的结果