'再将数组中的值从小到大排序
For j = 1 To UBound(nIndex())
nColIndex = nIndex(j)
For k = j To UBound(nIndex())
If nColIndex > nIndex(k) Then
nIndex(j) = nIndex(k)
nIndex(k) = nColIndex
nColIndex = nIndex(j)
End If
Next k
Option Compare Text '不区分英文字母的大小写
Public Sub Quicksort(sArr() As String, First As Long, Last As Long)
Dim vSplit As String, vT As String
Dim i, j, iRand As Long
If First < Last Then
If Last - First = 1 Then
If sArr(First) > sArr(Last) Then
vT = sArr(First): sArr(First) = sArr(Last): sArr(Last) = vT
End If
Else
iRand = Int(First + (Rnd * (Last - First + 1)))
vT = sArr(Last): sArr(Last) = sArr(iRand): sArr(iRand) = vT
vSplit = sArr(Last)
Do
i = First: j = Last
Do While (i < j) And (sArr(i) <= vSplit)
i = i + 1
Loop
Do While (j > i) And (sArr(j) >= vSplit)
j = j - 1
Loop
If i < j Then
vT = sArr(i): sArr(i) = sArr(j): sArr(j) = vT
End If
Loop While i < j
vT = sArr(i): sArr(i) = sArr(Last): sArr(Last) = vT
If (i - First) < (Last - i) Then
Quicksort sArr(), First, i - 1
Quicksort sArr(), i + 1, Last
Else
Quicksort sArr(), i + 1, Last
Quicksort sArr(), First, i - 1
End If
End If
End If
End Sub