Re: [VBA ] VBA 如何陣列排序??
※ 引述《evantw (安安小成)》之銘言:
: Private Type AocOut
: OEM As String
: Su_NO As String
: In_Pcs As Long
: Ck_Pcs As Long
: Out_Pcs As Long
: End Type
: 如何將陣列中依序 Su_No 及 In_Pcs 來做從小排序到大呢??
二個層次的排序就是先用第一個排列,在符合第一個排列次序前提下要用第二個排列.
氣泡排序法最中間會看到一段碼長這樣:
If a(i) < a(j) Then Call Swap(a, i, j)
而快速排序法靠外面也會看到一段類似的碼
If a(i) < a(j) Then
leftPart.add a(i)
Else
rightPart.add a(i)
End If
現在 a(i) < a(j) 這種比較式要改成抽象的 before(a(i), a(j)),
然後就可以自己定義什麼叫作before. before的定義應該是:
Function before(a As AocOut, b As AocOut) As Boolean
If a.Su_NO < b.Su_NO Then
before = True
ElseIf a.Su_NO = b.Su_NO and a.In_Pcs < b.In_Pcs then
before = True
Else
before = False
End If
End Function
然後你可能會在參數部份遇到障礙,說UDF無法和variant互轉之類的錯誤.
此時只要把Type AocOut改成class module即可.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.231.66.119
※ 編輯: yauhh 來自: 61.231.66.119 (02/29 21:50)
→
02/29 22:29, , 1F
02/29 22:29, 1F
推
03/02 00:19, , 2F
03/02 00:19, 2F
→
03/02 00:20, , 3F
03/02 00:20, 3F
→
03/02 00:39, , 4F
03/02 00:39, 4F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):