Hola que tal.
Este código ordena de forma ascendente o descendente una matriz que está guardado en memoria en función de la columna deseada. Hay que llamar a la función enviandole como dato el número de columna, para ti sería del 0 (que sería la primera columna) al 4 (última). Pero funcionaría para cualquier nº de columnas.
Public Sub Ordenar(Columna As Byte)
Dim K As Byte
Dim T As Byte
Dim I As Byte
For T = 0 To UBound(A, 1)
For I = 0 To UBound(A, 1) - 1
If LCase(A(I, Columna)) > LCase(A(I + 1, Columna)) Then
If Ascendente = True Then CambiarOrden (I)
ElseIf LCase(A(I, Columna)) < LCase(A(I + 1, Columna)) Then
If Ascendente = False Then CambiarOrden (I)
End If
Next I
Next T
End Sub
Public Sub CambiarOrden(Fila As Byte)
Dim K As Byte
For K = 0 To UBound(A, 2)
TemP(K) = A(Fila, K)
A(Fila, K) = A(Fila + 1, K)
A(Fila + 1, K) = TemP(K)
Next K
End Sub
Si necesitas que te explique el código lo haré, pero no es muy difícil de entenderlo (eso creo, je, je, je)
Espero que te sirva, aunque supongo que te he respondido muy tarde
Un saludo
Je, je, je
Se me olvidaba decirte que:
A(NºFilas,NºColumnas) es una matriz
Temp(NºColumnas) es otra matriz
Si se tetrada de caráctes alfanumericos serán d tipo String
Ascendente es de tipo booleano
Estas variables las he declarado en el Option explicit
Un saludo