標題:
[發問]
三維陣列找最大值
[打印本頁]
作者:
acdx
時間:
2018-5-15 17:59
標題:
三維陣列找最大值
一個三維陣列PR(1 To 3, 1 To 30)
[ 5, 6, 2, 15, 11, ....]
[10, 21, 17, 5, 25, ...]
[11, 14, 8, 21, 24, ...]
該怎麼找PR(1, ), PR(2, ), PR(3, )的最大值?
作者:
准提部林
時間:
2018-5-19 20:58
Sub UTest()
Dim PR(1 To 3, 1 To 30), MX(1 To 3)
For i = 1 To 3
For j = 1 To 30
PR(i, j) = Int(Rnd * 1000)
If PR(i, j) > MX(i) Then MX(i) = PR(i, j)
Next
Next
MsgBox Join(MX, "_")
End Sub
作者:
Kubi
時間:
2018-5-20 20:32
回復
1#
acdx
底下是二維陣列:
PR(1 To 3, 1 To 30)
雖不曾寫過三維陣列,但三維應該像如下表示式:
PR(1 To 3, 1 To 30, 1 To 10)
作者:
quickfixer
時間:
2018-5-20 21:23
本帖最後由 quickfixer 於 2018-5-20 21:32 編輯
[attach]28742[/attach]
'自己把第7行的資料來源改成pr()2維陣列
Sub test()
Dim findmax As Object, mx(1 To 3)
Set findmax = CreateObject("System.Collections.ArrayList")
For i = 1 To 3
For j = 1 To 30
findmax.Add Cells(i, j).Value
Next j
findmax.Sort: findmax.Reverse
mx(i) = findmax.Item(0)
findmax.Clear
Next i
MsgBox Join(mx, "_")
Set findmax = Nothing
End Sub
複製代碼
作者:
acdx
時間:
2018-5-24 14:32
回復
4#
quickfixer
這寫法是我從沒嘗試過的 讓我開眼界了!
請問findmax.Sort: findmax.Reverse 是什麼意思?
感謝
作者:
nolookyou
時間:
2018-5-24 15:17
回復
5#
acdx
這邊有詳細的ArrayList解說與範例(英文)
http://www.snb-vba.eu/VBA_Arraylist_en.html#L_11.1
作者:
quickfixer
時間:
2018-5-24 16:31
本帖最後由 quickfixer 於 2018-5-24 16:42 編輯
回復
5#
acdx
從01 S大,那邊學來的,他常常有一些很特别的寫法出現
sort是從小到大排序
Reverse是把排序好的,改成從大到小排序
這樣item(0)就固定是最大值
資料少還沒什麼感覺,資料多時這個方式超快
其實資料不多,可以用worksheetfunction.max代替,程式比較短,速度一樣快
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)