Function 排序(ByVal Arr, ByVal Order) Dim i&, j&, Temp AsVariant Dim OK AsBoolean '先把所有的空值排到前面 j = UBound(Arr) i = LBound(Arr) Do DoWhile Len(Arr(j)) > 0 And i < j j = j - 1 Loop If i < j Then DoWhile Len(Arr(i)) = 0 And i < j i = i + 1 Loop EndIf If i < j Then Temp = Arr(j) Arr(j) = Arr(i) Arr(i) = Temp EndIf LoopUntil i = j '排序 If j > LBound(Arr) Then j = j + 1 If Order = "SX" Then'升序 Do OK = True For i = UBound(Arr) To j + 1 Step -1 If Arr(i - 1) > Arr(i) Then Temp = Arr(i - 1) Arr(i - 1) = Arr(i) Arr(i) = Temp OK = False EndIf Next i LoopUntil OK Else Do OK = True For i = UBound(Arr) To j + 1 Step -1 If Arr(i - 1) < Arr(i) Then Temp = Arr(i - 1) Arr(i - 1) = Arr(i) Arr(i) = Temp OK = False EndIf Next i LoopUntil OK EndIf 排序 = Arr EndFunction
Function 排序(ByVal Arr, ByVal Order) Dim i&, j&, Temp AsVariant Dim OK AsBoolean '先把所有的空值排到前面 j = UBound(Arr) i = LBound(Arr) Do DoWhile Len(Arr(j)) > 0 And i < j j = j - 1 Loop If i < j Then DoWhile Len(Arr(i)) = 0 And i < j i = i + 1 Loop EndIf If i < j Then Temp = Arr(j) Arr(j) = Arr(i) Arr(i) = Temp EndIf LoopUntil i = j '排序 If j > LBound(Arr) Then j = j + 1 If Order = "SX" Then'升序 Do OK = True For i = UBound(Arr) To j + 1 Step -1 If Arr(i - 1) > Arr(i) Then Temp = Arr(i - 1) Arr(i - 1) = Arr(i) Arr(i) = Temp OK = False EndIf Next i LoopUntil OK Else Do OK = True For i = UBound(Arr) To j + 1 Step -1 If Arr(i - 1) < Arr(i) Then Temp = Arr(i - 1) Arr(i - 1) = Arr(i) Arr(i) = Temp OK = False EndIf Next i LoopUntil OK EndIf 排序 = Arr EndFunction
Sub Test() Arr = Array(1, 4, 3, 2, "", "", "") MsgBox Join(排序(Arr, "JX"), ",") End Sub
Function 排序(ByVal Arr, ByVal Order) Dim i&, j&, Temp As Variant Dim OK As Boolean '先把所有的空值排到前面 j = UBound(Arr) i = LBound(Arr) Do Do While Len(Arr(j)) > 0 And i < j j = j - 1 Loop If i < j Then Do While Len(Arr(i)) = 0 And i < j i = i + 1 Loop End If If i < j Then Temp = Arr(j) Arr(j) = Arr(i) Arr(i) = Temp End If Loop Until i = j '排序 If j > LBound(Arr) Then j = j + 1 If Order = "SX" Then '升序 Do OK = True For i = UBound(Arr) To j + 1 Step -1 If Arr(i - 1) > Arr(i) Then Temp = Arr(i - 1) Arr(i - 1) = Arr(i) Arr(i) = Temp OK = False End If Next i Loop Until OK Else Do OK = True For i = UBound(Arr) To j + 1 Step -1 If Arr(i - 1) < Arr(i) Then Temp = Arr(i - 1) Arr(i - 1) = Arr(i) Arr(i) = Temp OK = False End If Next i Loop Until OK End If 排序 = Arr End Function
Function 排序(ByVal Arr, ByVal Order) Dim i&, j&, Temp AsVariant Dim OK AsBoolean j = LBound(Arr) '排序 If Order = "SX" Then'升序 Do OK = True For i = UBound(Arr) To j + 1 Step -1 If Arr(i - 1) > Arr(i) Then Temp = Arr(i - 1) Arr(i - 1) = Arr(i) Arr(i) = Temp OK = False EndIf Next i LoopUntil OK Else Do OK = True For i = UBound(Arr) To j + 1 Step -1 If Arr(i - 1) < Arr(i) Then Temp = Arr(i - 1) Arr(i - 1) = Arr(i) Arr(i) = Temp OK = False EndIf Next i LoopUntil OK EndIf 排序 = Arr EndFunction