vba application.index行中的Array()不起作用

我想在Excel VBA中使用Application.Index函数。

我目前有一个数组(4,11139),我试图拼接成两个单独的数组,其中包含前两行(2,11139),另一个包含第三/第四行(2,11139)。 各种各样的search提示这个代码是正确的方法,但是它不能正常工作:(我已经将代码压缩到相关的代码)

Dim Adjusted_Data_Array() As Single Dim Final_Data_Array() As Variant Dim Sys1_Data_Array() As Variant Dim Sys2_Data_Array() As Variant 'Function that creates a 4,11139 variant array Final_Data_Array = Strip_Erroneous(Adjusted_Data_Array, 1) 'Splice first two rows Sys1_Data_Array = Application.Index(Final_Data_Array, Array(1, 2), 0) 'splice 3/4th rows Sys2_Data_Array = Application.Index(Final_Data_Array, Array(3, 4), 0) 

所以我现在应该有两个数组,每个数组包含第一个数组的一半数据。 但是我得到的新数组是一个两行的一维数组。 像这样: 从上面讨论的3个arrays看手表的屏幕截图。

我已经尝试过列中的数组(1,2),这也不起作用。

我可以通过简单的分裂成4个独立的一维数组来解决这个问题(工作正常,它是Array(1,2)或者Array(3,4),但是我知道在未来工作即将到来我将需要拼接更大的arrays,所以想了解为什么它不能为此做好准备。

编辑:尝试使用:

 Sys1_Data_Array = Application.Index(Final_Data_Array, Application.Transpose(Array(1, 2)), 0) 

根据下面的charlesbuild议,但最终与数组的简单切换索引如下所示: 从转置手表(数组(1,2)尝试

如果您将ARRAY包裹在TRANSPOSE中,则可以使用INDEX方法

 var1 = Application.Index(varData, Application.Transpose(Array(1, 2)), 0) var2 = Application.Index(varData, Application.Transpose(Array(3, 4)), 0) 

道歉:实际上这是行不通的!

但是它比使用VBA复制arrays的相关部分要慢大约2.5倍。

 For k = 1 To UBound(varData, 2) For j = 1 To 2 var1(j, k) = varData(j, k) var2(j, k) = varData(j + 2, k) Next Next 
 TheAddress = "row(1:2)" TheRows = Application.Evaluate(TheAddress) 'must be a 2 dimensions array TheColumns = Array(1, 2, 3)'must be a 1 dimension array Sys1_Data_Array = Application.Index(Final_Data_Array, TheRows, TheColumns) Cells(9, 1).Resize(UBound(Sys1_Data_Array), UBound(Sys1_Data_Array, 2)) = Sys1_Data_Array