我想在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)'參數時,將會出現類型錯誤匹配。 –