Hello gsurge,
This macro will sort a list in either ascending (A-Z) or descending (Z-A) order. The default is ascending. The list can be either 1-D or 2-D single column.
Function SortArray(ByVal Data As Variant, Optional Descending As Boolean) As Variant
' Written: July 05, 2011
' Author: Leith Ross
' Summary: Sorts a 1-D Array or 2-D Array in either ascending (default)
' or descending order using the Bubble sort algorithm. The function
' returns the original 2-D array with the first column sorted or
' the 1-D array as a sorted 2-D (UB x 1) array. if Data is not an
' array then the reutrn value is set to a boolean False.
Dim arr As Variant
Dim LB As Long
Dim I As Long
Dim J As Long
Dim UB As Long
Dim Temp As Variant
Select Case TypeName(Data)
Case Is = "Range", "Variant()"
arr = Data
On Error Resume Next
UB = UBound(Data, 2)
On Error GoTo 0
If UB > 0 Then
' 2-D Array with multiple columns
arr = Data
Else
' 1-D Array - Convert to a 2-D (UB x 1)
arr = WorksheetFunction.Transpose(Data)
End If
Case Else
SortArray = False
End Select
LB = LBound(arr)
UB = UBound(arr)
For I = LB To UB
For J = LB To UB - 1
If Descending Xor (arr(I, LB) < arr(J, LB)) Then
Temp = arr(J, LB)
arr(J, LB) = arr(I, LB)
arr(I, LB) = Temp
End If
Next J
Next I
SortArray = arr
End Function
Bookmarks