你可以使用联合范围来定义一个数组吗?

我试图使用来自2个独立列的数据定义一个二维数组。 该代码当前仅将我的数组定义为第一列(range1),忽略第二个(range2)。 这是由于我的一个错误,或者我可以不使用一个unionized(是正确的术语?)范围来定义一个数组?

Sub define_array() Dim FTSE100() As Variant Dim wsh As Worksheet Dim range1 As Range Dim range2 As Range Dim finalrange As Range Dim a As Integer Dim finalrow As Integer ' define array Set wsh = Sheet2 wsh.Activate finalrow = Range("a1").End(xlDown).row Set range1 = Range(Cells(1, 1), Cells(finalrow, 1)) Set range2 = Range(Cells(1, 5), Cells(finalrow, 5)) Set finalrange = Union(range1, range2) ' FTSE100 = finalrange ' Sheet15.Range("A:B") = FTSE 100 ' Original code ended here ReDim FTSE100(1 To finalrange.Areas.Count) For a = 1 To finalrange.Areas.Count FTSE100(a) = finalrange.Areas(a) Next With Sheet15.Range("A:B") For a = 1 To .Columns.Count .Columns(a).Resize(UBound(FTSE100(a))).Value = FTSE100(a) Next End With End Sub 

这似乎已经做到了,谢谢你的帮助。

你不能以非连续的范围这样做。

你可以这样做:

 ReDim FTSE100(1 To finalRange.Areas.Count) For a = 1 To finalRange.Areas.Count FTSE100(a) = finalRange.Areas(a) Next 

你将不得不做一个类似的For ... Next循环来写入值

 With Sheet15.Range("A:B") For a = 1 To .Columns.Count .Columns(a).Resize(UBound(FTSE100(a))).Value = FTSE100(a) Next End With 

但是现在,我发现你的问题比这更简单:你只是想将一个uninionizd范围的值复制到另一个工作表中。 这很简单,不需要中间数组variablesFTSE100

 Set range1 = Range(Cells(1, 1), Cells(finalrow, 1)) Set range2 = Range(Cells(1, 5), Cells(finalrow, 5)) Sheet15.Range("A:A") = range1 Sheet15.Range("B:B") = range2