我想在Excel VBA中使用Application.Index函数。我现在有一个数组(4,11139),我试图拼接成两个单独的数组,其中一个包含前两行(2,11139),另一个包含第三/第四行(2,11139)。各种搜索建议这个代码是正确的方法,但它不能正常工作:(我已经凝结的代码是什么相关)vba application.index行中的Array()不起作用
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)
所以我现在应该有2个阵列,每个阵列包含从上半年数据阵列。但是我在新数组中获得的是一个具有两行的一维数组。像这样: Screenshot of the watches from the 3 arrays discussed above.
我已经试过它与列中的数组(1,2),并且不起作用。
我可以解决这个问题,通过简单地分裂成4个单独的一维数组(工作正常,它是数组(1,2)或数组(3,4),似乎并不。知道在今后的工作中来了我会需要拼接更大的阵列,所以想了解为什么它不提前非常感谢 该工作准备
编辑:。 尝试使用:
Sys1_Data_Array = Application.Index(Final_Data_Array, Application.Transpose(Array(1, 2)), 0)
根据下面的查尔斯建议,但最终与数组的简单切换索引如下所示: Screenshot of watches from transpose(array(1,2) attempt
我不相信'INDEX'函数可以接受一个数组作为'row_num'或'column_num'参数。如果其中一个是零;另一个必须指向单个行/列。 –
感谢罗恩我开始怀疑,我不知道如何解释这一点,但:https://usefulgyaan.wordpress.com/2013/06/12/vba-trick-of-the-week-slicing-an -array-without-loop-application-index /然后,还有更多的示例指出其他人以这种形式使用它。 –
在注释中有一些用户在使用'row_num'的数组参数时无法使文章中的示例工作。另请注意,如果使用完全限定的'application.worksheetfunction.index ...',那么当您使用'Array(1,2)'参数时,将会出现类型错误匹配。 –