返回列表 上一主題 發帖

[發問] 請問如何將陣列中元素將其大小序號寫入第二維中?[已解決]

[發問] 請問如何將陣列中元素將其大小序號寫入第二維中?[已解決]

本帖最後由 asus103 於 2011-1-8 06:26 編輯

各位大大:
如題
我想將陣列中元素將其大小順序之序號寫入第二維中?
如何寫?
ASUS

回復 1# asus103
  1. Sub getarray()
  2. Dim ar(10, 10)
  3. For i = 0 To 9
  4. Randomize
  5.   ar(i, 0) = Rnd '給第一維元素賦值
  6. Next
  7. For i = 0 To 9
  8. s = Application.Match(Application.Large(Application.Index(ar, , 1), i + 1), Application.Index(ar, , 1), 0) - 1 '計算第i+1大的值在第一維的位置
  9. ar(s, 1) = i + 1 ''給第一維元素賦值
  10. Next
  11. [A1].Resize(10, 2) = ar
  12. End Sub
複製代碼
學海無涯_不恥下問

TOP

本帖最後由 asus103 於 2011-1-8 06:31 編輯

回復 2# Hsieh
感謝Hsieh大大
您寫的例子就是我正想要的

想再請教您
如此取亂數有可能重複嗎(預計需要1500個)?
如果要避免亂數值相同,該如何檢驗與處理
謝謝您
ASUS

TOP

回復 3# asus103
會重複,試試看
  1. Sub getarray()
  2. Set d = CreateObject("Scripting.Dictionary")
  3. Dim ar(1500, 1500)
  4. Do Until d.Count = 1500
  5. Randomize
  6. x = Rnd
  7. If d.exists(x) = False Then d.Add x, i: ar(i, 0) = x: i = i + 1 '給第一維元素賦值
  8. Loop
  9. ay = Application.Index(ar, , 1)
  10. For i = 0 To 1499
  11. x = Application.Large(ay, i + 1)
  12.   s = Application.Match(x, ay, 0) - 1
  13.   ar(s, 1) = i + 1
  14. Next
  15. [A1].Resize(1500, 2) = ar
  16. End Sub
複製代碼
學海無涯_不恥下問

TOP

回復 4# Hsieh

利用Dictionary來檢查重複,這真是高招
感謝您
ASUS

TOP

        靜思自在 : 小事不做、大事難成。
返回列表 上一主題