Ordenar Datos de Matriz

22/11/2006 - 11:47 por Lorenzo Zotano | Informe spam
Buenas a Tod@s.

Necesito ordenar de mayor a menor los datos contenidos en una matriz por uno
de sus campos me explico mejor con un ejemplo :
Matriz SaldoBono(n,m) donde n=string y m=integer

SaldoBono(1,1) = "Bono 1"
SaldoBono(1,2) = 10
SaldoBono(2,1) = "Bono 3"
SaldoBono(2,2) = 25
SaldoBono(3,1) = "Bono 2"
SaldoBono(3,2) = 3

Necesito que me ordene los registros de mayor a menor segun el campo
integer, es decir, que quede asi ...

SaldoBono(1,1) = "Bono 3"
SaldoBono(1,2) = 30
SaldoBono(2,1) = "Bono 1"
SaldoBono(2,2) = 10
SaldoBono(3,1) = "Bono 2"
SaldoBono(3,2) = 3

No me importe tener que usar alguna matriz adicional o temporal, pero
necesito que al final la matriz resultante quede ordenada para poder meterla
en un listbox y que los datos aparezcan ordenados de mayor a menor

¿Alguna idea?

Gracias.
 

Leer las respuestas

#1 Juan M
22/11/2006 - 14:38 | Informe spam
Hola Lorenzo

Buenas a

Necesito ordenar de mayor a menor los datos contenidos en una matriz por
uno de sus campos me explico mejor con un ejemplo :
Matriz SaldoBono(n,m) donde n=string y m=integer

SaldoBono(1,1) = "Bono 1"
SaldoBono(1,2) = 10
SaldoBono(2,1) = "Bono 3"
SaldoBono(2,2) = 25
SaldoBono(3,1) = "Bono 2"
SaldoBono(3,2) = 3

Necesito que me ordene los registros de mayor a menor segun el campo
integer, es decir, que quede asi ...

SaldoBono(1,1) = "Bono 3"
SaldoBono(1,2) = 30
SaldoBono(2,1) = "Bono 1"
SaldoBono(2,2) = 10
SaldoBono(3,1) = "Bono 2"
SaldoBono(3,2) = 3

No me importe tener que usar alguna matriz adicional o temporal, pero
necesito que al final la matriz resultante quede ordenada para poder
meterla en un listbox y que los datos aparezcan ordenados de mayor a menor


¿Alguna idea?

Gracias.



Una pregunta, ¿esos datos son fijos o vienen de alguna parte? es decir los
lees de algun rango en concreto?
Es porque puedes emplear los metodos de ordenacion que tiene excel. Sino
tendrias que ir a un objeto/control que tenga el metodo de ordenar o lo que
puede
ser mas 'complejo' programar un metodo de ordenacion adecuado a tus
necesidades. Ten encuenta que la ultima solucion aunque esta bastante
estudiada/resuelta adaptarla a tu matriz sera algo mas laborioso.

Para ordenar con los rangos de excel:

Sub Orden()
Range("A3:B6").Sort Key1:=Range("B3"), Order1:=xlDescending, _
Header:=xlGuess, OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
End Sub

Unos enlaces para que veas lo que se puede hacer...

Archivo de ejemplo con los metodos de ordenacion
(Ole P. Erlandsen)
http://www.erlandsendata.no/downloa...amples.zip

Articulos sobre ordenacion:
Son para VB con unos ligeros retoques se pueden aprovechar.
http://www.devx.com/vb2themax/article/19900
http://www.devx.com/vb2themax/Door/18897?cat59&type=1

Un saludo
Juan

Preguntas similares