Actually you have a double sort
1-a, 2-a, 2-b, 3-a

Sometime the best way just doesn't look all that efficient, Fortunately, looping arrays is very fast.

IF your list is already in an array, that's great, but sometimes you need to add them on the fly. Add them to a Dictionary, using a counter as the Key. Then
Redim ArrRaw(1 to Dictionary.Count - 1, 1 to 2)
For i = 1 to Dictionary.Count
ArrRaw(i) = Split(Dictionary(i), "-")
Next
now check out http://stackoverflow.com/questions/1...-sort-function