-
Here is a 2D bubble sort I use. You should be able to adapt it
[vba]
Function BubbleSort2D(ByVal List As Variant, _
ByVal SortCol As Long, _
Optional ByVal SortColNumeric As Boolean = False, _
Optional ByVal Order As XlSortOrder = xlAscending) As Variant
' Sorts an array using bubble sort algorithm
Dim First As Integer, Last As Integer
Dim i As Integer, j As Integer, k As Long
Dim iColumn
Dim Temp
First = LBound(List, 1)
Last = UBound(List, 1)
iColumn = LBound(List, 2) + SortCol - 1
For i = First To Last - 1
For j = i + 1 To Last
If Order = xlAscending Then
If SortColNumeric Then
If CDbl(List(i, iColumn)) > CDbl(List(j, iColumn)) Then
For k = LBound(List, 2) To UBound(List, 2)
Temp = List(j, k)
List(j, k) = List(i, k)
List(i, k) = Temp
Next k
End If
Else
If List(i, iColumn) > List(j, iColumn) Then
For k = LBound(List, 2) To UBound(List, 2)
Temp = List(j, k)
List(j, k) = List(i, k)
List(i, k) = Temp
Next k
End If
End If
Else
If SortColNumeric Then
If CDbl(List(i, iColumn)) < CDbl(List(j, iColumn)) Then
For k = LBound(List, 2) To UBound(List, 2)
Temp = List(j, k)
List(j, k) = List(i, k)
List(i, k) = Temp
Next k
End If
Else
If List(i, iColumn) < List(j, iColumn) Then
For k = LBound(List, 2) To UBound(List, 2)
Temp = List(j, k)
List(j, k) = List(i, k)
List(i, k) = Temp
Next k
End If
End If
End If
Next j
Next i
BubbleSort2D = List
End Function
[/vba]
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules