'--------------
'自己修改,如果数据量大换快排,,,
Option Explicit
Sub test()
Dim arr, i, m
arr = Range("a1:a" & Cells(Rows.Count, "a").End(xlUp).Row + 1)
Call bsort(arr, 1, UBound(arr, 1) - 1, 1, 1, 1)
For i = 1 To UBound(arr, 1) - 1
If arr(i, 1) <> arr(i + 1, 1) Then
m = m + 1: arr(m, 1) = arr(i, 1)
End If
Next
[c1].Resize(m) = arr
End Sub
Function bsort(arr, first, last, left, right, key)
Dim i, j, k, t
For i = first To last - 1
For j = first To last + first - 1 - i
If StrComp(arr(j, key), arr(j + 1, key), vbTextCompare) = 1 Then
For k = left To right
t = arr(j, k): arr(j, k) = arr(j + 1, k): arr(j + 1, k) = t
Next
End If
Next
Next
End Function
|