返回列表 上一主題 發帖

[分享] 陣列排序方式

[分享] 陣列排序方式

Sub TOP_Value()
    '排序
    Dim TT As Variant
   
    TT = Array(5, 4, 2, 1, 2)

    '由大到小排序
    MsgBox Application.WorksheetFunction.Large(TT, 1)
    MsgBox Application.WorksheetFunction.Large(TT, 2)
    MsgBox Application.WorksheetFunction.Large(TT, 3)
    MsgBox Application.WorksheetFunction.Large(TT, 4)
    MsgBox Application.WorksheetFunction.Large(TT, 5)
   
    '由小到大排序
    MsgBox Application.WorksheetFunction.Small(TT, 1)
    MsgBox Application.WorksheetFunction.Small(TT, 2)
    MsgBox Application.WorksheetFunction.Small(TT, 3)
    MsgBox Application.WorksheetFunction.Small(TT, 4)
    MsgBox Application.WorksheetFunction.Small(TT, 5)
End Sub

不好意思,我才剛學VBA,對Array的用法不是太過有概念,可以教我一下嗎?
如果可以有簡易明的例子說明一下就好了,謝!
50 字節以內
不支持自定義 Discuz! 代碼

TOP

回復 1# Min


    通常陣列公式
都是寫的很複雜
版主寫的很容易懂
謝謝!!

TOP

不好意思,我才剛學VBA,對Array的用法不是太過有概念,可以教我一下嗎?
如果可以有簡易明的例子說明一下就好 ...
am0251 發表於 2010/5/4 11:25 PM


其實Array觀念不難!
就重一維陣列的型態開始說起...
以excel cells來說 一維陣列就像是只有一欄的資料型態 ex.只有A1~A65536
那cells只能用cells(1,1) cells(2,1) cells(3,1)....cells(65536,1) 所以就只有row可以用!
dim arr()
arr(0) arr(1) arr(2)....arr(65536)
但須注意的是array預設是由0開始!

二維陣列更是簡單 excel的cells本身就是二維
cells(1,1) 就如同arr(0,0)
cells(123,321) 就如同arr(123,321)

那三圍... 錯是三維啦! >"<
三維陣列就要想像是立體空間了!

會不會還有人問四維陣列阿~
四維.... 四維可以稱四度空間>"< 算了!我不知道怎麼解釋...

TOP

板主
您不要這樣....
這樣
我們要向您學習的人也會慌了手腳喔!!
如果您覺得不知道要如何解釋的讓我們這些初學者易懂
不訪您先在筆記本上先寫好您要告訴我們這些初學者的東西
淺顯易懂
是我們需要的...但是也是您版主辛苦得地方...知易行難!!!
感謝您!!!!無私奉獻!

TOP

本帖最後由 Hsieh 於 2010-5-7 21:54 編輯

回復 5# PD961A


    淺顯易懂的文字敘述?
那各位版主就先來去修語文課程
把語言精煉後再來發文
開開玩笑啦!
陣列:
相信對一維陣列的話大家比較容易接受
就一堆資料規則的放入一排內就是一維陣列
以實物舉例
大家有上過學,學校有朝會或任何全校到操場集合的經驗吧!
當要各班整隊時
班長說排頭伍為準
這一伍的成員就是一維陣列的元素
我們把這排頭底下要對齊他的這些人
就是二維陣列的第二維的元素了
再把集合好的班級(二維陣列)
帶到操場時
操場上會分年級站好
每一個年級就會有好多班
這一個年級就是多個二維陣列的集合(三維陣列)
每個學校會有多個年級
那集合這麼多年級(三維陣列)就成了四維陣列
這樣對陣列的解釋不知是否比較實體化
比較容易了解呢?
  1. Sub nn()
  2. Dim Ar(3, 10, 10, 4) '定義Ar為4維陣列:每隊4排,每排10人,每年級有10班,共有3個年級(年級,班,人,排)
  3. k = 42048
  4. mystr = Chr(k)
  5. For y = 0 To 2
  6.    For x = 0 To 9
  7.        For i = 0 To 3
  8.          For j = 0 To 9
  9.          Do Until mystr <> "?"
  10.          k = k + 1
  11.          mystr = Chr(k)
  12.          Loop
  13.               Ar(y, x, j, i) = Chr(k): k = k + 1: mystr = Chr(k): Next: Next: Next: Next
  14. For y = 0 To 2
  15.    For x = 0 To 9
  16.        For i = 0 To 3
  17.          For j = 0 To 9
  18.              Cells(r + 1, 1) = y + 1 & "年" & x + 1 & "班第" & i + 1 & "排第" & j + 1 & "位同學姓:": _
  19.              Cells(r + 1, 2) = Ar(y, x, j, i): r = r + 1: _
  20.              Next: Next: Next: Next
  21. End Sub
複製代碼
學海無涯_不恥下問

TOP

回復 4# Min
就重一維陣列的型態開始說起...
以excel cells來說 一維陣列就像是只有一欄的資料型態 ex.只有A1~A65536

如果:A = [A1:A65536]   整欄
A是(1  To 65536 ,  1) 的二維陣列   
如果:A = [A1:IV1]         整列
A是(1 , 1 To 256 ) 的二維陣列

TOP

回復 6# Hsieh

板主您的淺顯易懂表達方式..在寫到3維及4維後..反而讓人不知所云..
   
閔板主敘述就一維陣列的型態
dim arr()
arr(0) arr(1) arr(2)....arr(65536)
但須注意的是array預設是由0開始!

二維陣列更是簡單 excel的cells本身就是二維
cells(1,1) 就如同arr(0,0)
cells(123,321) 就如同arr(123,321)的回答
和gbkee版主所說的都一樣...
所以應該是階級還不到寫出3維或4維的陣列
因此沒辦法想像
還是謝謝您!

TOP

回復 8# PD961A


    我所說的是多維陣列的概念大致就像排隊集合一樣
只是當你在寫成陣列與法時是用他的INDEX表示
如Dim Ar(0 to 10,0 to 20,0 to 10,0 to 30)
這樣就宣告了一個4維陣列
只訂出這陣列中第一個元素就寫成
Ar(0,0,0,0)
最後一個元素就是Ar(10,20,10,30)
第一維有11個元素
第二維有21個元素
第三維有11個元素
第四維有11個元素

Sub nn()
Dim Ar(11, 21, 11, 31)
For i = 0 To 10
   For j = 0 To 20
      For x = 0 To 10
         For y = 0 To 30
              Ar(i, j, x, y) = i + j + x + y: Next: Next: Next: Next
For i = 0 To 10
   For j = 0 To 20
      For x = 0 To 10
         For y = 0 To 30
              MsgBox "Ar(" & i & "," & j & "," & x & "," & y & ")=" & i & "+" & j & "+" & x & "+" & y & "=" & Ar(i, j, x, y): Next: Next: Next: Next
              
End Sub
學海無涯_不恥下問

TOP

回復 9# Hsieh


    板主
您真的很用心很認真
其實當您寫到3/4維陣列時當下的表示方式真的是一頭霧水...
不過當您花時間在回覆這封主題時
所寫出來的陣列就相當請楚了
只是當時想說不知您可以寫成這樣的方式嗎?
結果
看到回帖
正是想要表達的意思
謝謝!!

TOP

        靜思自在 : 信心、毅力、勇氣三者具備,則天下沒有做不成的事。
返回列表 上一主題