標題:
[發問]
請問在vba中的陣列如何排序?
[打印本頁]
作者:
linshin1999
時間:
2011-1-7 23:29
標題:
請問在vba中的陣列如何排序?
如何在VBA中的陣列去作排序的動作,(非 range, worksheet) ? 號去找 SORT 找不到, 嘗試用 Swap 指令行不通, 難到要用這樣的東西嗎?
Dim rd(5) As String
Dim tmp As string
Dim i, j As long
For i = 1 to 4
for j = i + 1 to 5
If rd(i) > rd(j) Then
tmp = rd(i)
rd(i) = rd(j)
rd(j) = tmp
Endif
next
嗎?
作者:
Hsieh
時間:
2011-1-7 23:45
回復
1#
linshin1999
氣泡式排序法,在VB中最常見的排序法
但在EXCEL.VBA裡面可用到工作表函數幫忙
陣列排序 / Sorting Array / Sort Array
作者:
linshin1999
時間:
2011-1-7 23:59
回復
2#
Hsieh
如木工版主所言不是很懂,但是再用力去了解看看,如Hsieh所言看來VBA中没支援陣列排序,謝謝!!
作者:
Hsieh
時間:
2011-1-8 00:08
本帖最後由 Hsieh 於 2011-1-8 00:12 編輯
回復
3#
linshin1999
你的寫法在VB環境中並無函數可利用
所以使用氣泡排序法
在EXCEL的VBA中,因為已經有工作表函數可利用所以就可善加利用
再參考這帖
請問如何將陣列中元素將其大小序號寫入第二維中?
作者:
linshin1999
時間:
2011-1-8 00:24
本帖最後由 linshin1999 於 2011-1-8 00:32 編輯
回復
4#
Hsieh
常常看到版主用到 Dictionary 的用法,要再用力去學, 那麼不同項目出現次數的加總,好像 Dictionary 就是為此設計的是嗎?我會去研究它.,謝謝!!
作者:
oobird
時間:
2011-1-9 15:37
陣列中排序看過許多方法,如一樓的冒泡法,還有桶排序法,希爾排序法,選擇排序法,快速排序法等等並一而足。效率相去不遠,也有人很費心的用遞迴編寫較高效率的排序。
這些方法永遠比不上excel自帶的排序,所以把陣列寫入工作表,用內建排序指令排序好再放入新的陣列是最快的方法!
作者:
asus103
時間:
2011-1-9 17:30
回復
6#
oobird
如超級版主所言
"把陣列寫入工作表,用內建排序指令排序好再放入新的陣列是最快的方法!"
可否請您寫一段程式碼示範,讓我有多一個學習的機會
謝謝
作者:
GBKEE
時間:
2011-1-9 19:23
回復
7#
asus103
Sub Ex()
Dim Ar, Rng As Range
Ar = Array("SD", 100, "SA", 50, 777, "AAA", 5)
With ActiveSheet
Set Rng = .[a1].Resize(UBound(Ar) + 1)
Rng.Value = Application.Transpose(Ar)
Rng.Sort Key1:=Rng(1), Order1:=xlAscending, Header:=xlNo
Ar = Application.Transpose(Rng)
End With
End Sub
複製代碼
作者:
linshin1999
時間:
2011-1-9 22:21
有些資料是不適合到 工作表 去處理的,我的資料是要作設定用的,在工作表上的欄列很大,約有(2000~10000),如果有與資料檔上相同的資料要被作記號,比如字型被黑體字代替,因為資料檔有大小次序所以要排好次序以再去比對會比較快,它是背景作業不是前景作業,只能用陣列來寫不能用 Range 處理,我知道 Excell 上的 sort 功能,但是用不上. 所以看是不是有直接的方式去呼叫,没有就自己寫了,謝謝大家.
作者:
Hsieh
時間:
2011-1-9 22:33
回復
9#
linshin1999
txt檔排序顛倒
作者:
linshin1999
時間:
2011-1-9 23:09
回復
10#
Hsieh
版主 好像没有問題可以難倒你的,我會實際去測一下 徫婕 版主所示範的 Sort 指令 謝謝 !! 人老了所以我喜歡將字放大一點
作者:
linshin1999
時間:
2011-1-9 23:25
回復
8#
GBKEE
版主你好,我想將你的程式存起來,你的程式方塊的下方有一個
複製代碼
點下去以後,會存到剪貼簿去. 請問剪貼簿是在那裡?
作者:
asus103
時間:
2011-1-10 07:49
回復
8#
GBKEE
感謝您版主大大
這對我們初學者是很好的觀摩、學習機會
作者:
asus103
時間:
2011-1-10 07:54
回復
12#
linshin1999
對不起、班門弄斧了
剪貼簿是系統存放暫時複製資料的地方
您只要開個記事本或WORD之類的文書處理軟體
再按貼上就可以了
作者:
linshin1999
時間:
2011-1-10 09:16
回復
14#
asus103
可以了,我以為會跑到某個地方存起來,很多東西都還摸索所以連這種問題都要問,謝謝!!
.
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)