'自己修改,,,
Option Explicit
Const NUM = 20
Sub test()
Dim i, j, k, n
[a:h].ClearContents
ReDim arr(1 To 2 * NUM, 1 To 2), m(1 To UBound(arr, 2))
For i = 1 To NUM
arr(i, 1) = Chr(65 + Int(26 * Rnd)) & 1
arr(i, 2) = Chr(65 + Int(26 * Rnd)) & 1
Next
[a1].Resize(NUM, 2) = arr '无序
For i = 1 To 2
Call dsort(arr, 1, NUM, i, i, i)
Next
[d1].Resize(NUM, 2) = arr '有序
m(1) = NUM: m(2) = NUM
For i = 1 To UBound(arr, 1)
n = 0
If Len(arr(i, 1)) > 0 And Len(arr(i, 2)) > 0 Then
If arr(i, 1) > arr(i, 2) Then
n = 1
ElseIf arr(i, 1) < arr(i, 2) Then
n = 2
End If
End If
If n > 0 Then
m(n) = m(n) + 1
For j = m(n) To i + 1 Step -1
arr(j, n) = arr(j - 1, n)
Next
arr(j, n) = vbNullString
End If
Next
[g1].Resize(UBound(arr, 1), UBound(arr, 2)) = arr
End Sub
Function dsort(arr, first, last, left, right, key)
Dim i, j, k, t
For i = first To last - 1
For j = i + 1 To last
If StrComp(arr(i, key), arr(j, key), vbTextCompare) = 1 Then
For k = left To right
t = arr(i, k): arr(i, k) = arr(j, k): arr(j, k) = t
Next
End If
Next
Next
End Function |