標題:
[發問]
多維矩陣內擇取其中一維的陣列資料元素
[打印本頁]
作者:
Scott090
時間:
2014-4-28 20:57
標題:
多維矩陣內擇取其中一維的陣列資料元素
本帖最後由 Scott090 於 2014-4-28 20:58 編輯
請問高手先進:
由於矩陣內數據多,不想用迴圈的方式來取得一個個的元素;請問有何法可解?
以下為虛擬 VBA 程序:
Sub qq()
'複數個一維矩陣組成陣列 aa
'===========================
aa = Array(Array(123, 234, 345), Array("aaa", "bbb", "ccc"), Array(567, 678, 789))
'從矩陣 aa 取得 矩陣 bb
'========================
bb = aa(1)
'把矩陣 aa 轉換成 實際的 3x3 矩陣
'=================================
cc = Application.Transpose(Application.Transpose(aa))
'如何不用迴圈的方式把 cc 矩陣中的 cc(2,1), cc(2,2), cc(2,3) 轉入 dd()
'====================================================================
dd = cc((2)) '這個是不對的,純屬示意
End Sub
複製代碼
作者:
GBKEE
時間:
2014-4-29 07:21
回復
1#
Scott090
Transpose 後陣列索引值下限從1 開始.
dd = Application.Index(cc, 2)
複製代碼
作者:
Scott090
時間:
2014-4-29 12:12
回復
2#
GBKEE
非常感恩大師的解惑
作者:
stillfish00
時間:
2014-5-22 17:10
回復
3#
Scott090
GBKEE
分享一下個人經驗,陣列小的話,application.index很方便
但是大一點的陣列,這個函數的效率就很差(越大越明顯),
如果是重視執行時間的情況下,就盡量還是用迴圈去取會快很多。
Sub testForIndex()
Dim ar2d(1 To 200, 1 To 500)
Dim test1, test2
Dim i As Long, j As Long
Dim t
t = Timer
ReDim test1(1 To UBound(ar2d, 2))
For i = 1 To UBound(ar2d) '等於跑兩百次
For j = 1 To UBound(ar2d, 2)
test1(j) = ar2d(i, j)
Next
Next
Debug.Print Timer - t '約0.027343秒
t = Timer
For i = 1 To UBound(ar2d) '等於跑兩百次
test2 = Application.index(ar2d, i)
Next
Debug.Print Timer - t '約3.867188秒
End Sub
複製代碼
作者:
Scott090
時間:
2014-5-22 22:43
回復
4#
stillfish00
謝謝分享
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)