標題:
[發問]
請問如何將陣列中元素將其大小序號寫入第二維中?[已解決]
[打印本頁]
作者:
asus103
時間:
2011-1-7 17:13
標題:
請問如何將陣列中元素將其大小序號寫入第二維中?[已解決]
本帖最後由 asus103 於 2011-1-8 06:26 編輯
各位大大:
如題
我想將陣列中元素將其大小順序之序號寫入第二維中?
該如何寫?
作者:
Hsieh
時間:
2011-1-7 20:43
回復
1#
asus103
Sub getarray()
Dim ar(10, 10)
For i = 0 To 9
Randomize
ar(i, 0) = Rnd '給第一維元素賦值
Next
For i = 0 To 9
s = Application.Match(Application.Large(Application.Index(ar, , 1), i + 1), Application.Index(ar, , 1), 0) - 1 '計算第i+1大的值在第一維的位置
ar(s, 1) = i + 1 ''給第一維元素賦值
Next
[A1].Resize(10, 2) = ar
End Sub
複製代碼
作者:
asus103
時間:
2011-1-7 22:53
本帖最後由 asus103 於 2011-1-8 06:31 編輯
回復
2#
Hsieh
感謝Hsieh大大
您寫的例子就是我正想要的
想再請教您
如此取亂數有可能重複嗎(預計需要1500個)?
如果要避免亂數值相同,該如何檢驗與處理
謝謝您
作者:
Hsieh
時間:
2011-1-8 00:06
回復
3#
asus103
會重複,試試看
Sub getarray()
Set d = CreateObject("Scripting.Dictionary")
Dim ar(1500, 1500)
Do Until d.Count = 1500
Randomize
x = Rnd
If d.exists(x) = False Then d.Add x, i: ar(i, 0) = x: i = i + 1 '給第一維元素賦值
Loop
ay = Application.Index(ar, , 1)
For i = 0 To 1499
x = Application.Large(ay, i + 1)
s = Application.Match(x, ay, 0) - 1
ar(s, 1) = i + 1
Next
[A1].Resize(1500, 2) = ar
End Sub
複製代碼
作者:
asus103
時間:
2011-1-8 06:25
回復
4#
Hsieh
利用Dictionary來檢查重複,這真是高招
感謝您
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)