ordenar matriz

11/12/2009 - 20:08 por bishop365 | Informe spam
Hola, trabajo en excel 2007.
Tengo que ordenar una matriz segun varios criterios, pero no logro hacerlo.

Esta es la martriz

ATLETA 1 2 3
a 2,6 2,2 2,7
b 2,7 2,5 3
c 2,8 2,6 3


Las filas las ordene con K.ESIMO.MAYOR(B2:D2;1), luego lo mismo pero
cambiando por 2 y 3.
Lo repito en las otras 2 filas, y queda asi :

ATLETA 1º 2º 3º
a 3 2,8 2,6
b 3 2,7 2,5
c 2,7 2,6 2,2


Luego debo 'detectar' que en la columna 1º hay un 'empate' y ordenar segun
el 2º resultado y si fuera necesario segun el 3º resultado, pero no lo
logro.

Y deberia quedar asi (lo ordene a 'mano' y no automaticamente).

ATLETA 1º 2º 3º
c 3 2,8 2,6
b 3 2,7 2,5
a 2,7 2,6 2,2


Para los atletas, esta es una tabla de salto en largo.Se ordena de mayor a
menor y si hay empate se mmira el 2º mejor salto y asi.

Que funcion debo usar para ordenar automaticamente ?

Gracias.

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
12/12/2009 - 01:53 | Informe spam
hola, !

aqui encuentras algunas formas de "clasificar"...
Ranking Data In List (and associated topics)
http://www.cpearson.com/Excel/rank.aspx

saludos,
hector.

__ OP __
Tengo que ordenar una matriz segun varios criterios, pero no logro hacerlo.
Esta es la martriz
ATLETA 1 2 3
a 2,6 2,2 2,7
b 2,7 2,5 3
c 2,8 2,6 3
Las filas las ordene con K.ESIMO.MAYOR(B2:D2;1), luego lo mismo pero cambiando por 2 y 3.
Lo repito en las otras 2 filas, y queda asi:
ATLETA 1º 2º 3º
a 3 2,8 2,6
b 3 2,7 2,5
c 2,7 2,6 2,2
Luego debo 'detectar' que en la columna 1º hay un 'empate' y ordenar segun el 2º resultado
y si fuera necesario segun el 3º resultado, pero no lo logro.
Y deberia quedar asi (lo ordene a 'mano' y no automaticamente).
ATLETA 1º 2º 3º
c 3 2,8 2,6
b 3 2,7 2,5
a 2,7 2,6 2,2
Para los atletas, esta es una tabla de salto en largo.
Se ordena de mayor a menor y si hay empate se mmira el 2º mejor salto y asi.
Que funcion debo usar para ordenar automaticamente ?
Respuesta Responder a este mensaje
#2 bishop365
13/12/2009 - 20:34 | Informe spam
No es lo que busco, pero gracias.

bishop365


"Héctor Miguel" escribió en el mensaje
news:
hola, !

aqui encuentras algunas formas de "clasificar"...
Ranking Data In List (and associated topics)
http://www.cpearson.com/Excel/rank.aspx

saludos,
hector.

__ OP __
Tengo que ordenar una matriz segun varios criterios, pero no logro
hacerlo.
Esta es la martriz
ATLETA 1 2 3
a 2,6 2,2 2,7
b 2,7 2,5 3
c 2,8 2,6 3
Las filas las ordene con K.ESIMO.MAYOR(B2:D2;1), luego lo mismo pero
cambiando por 2 y 3.
Lo repito en las otras 2 filas, y queda asi:
ATLETA 1º 2º 3º
a 3 2,8 2,6
b 3 2,7 2,5
c 2,7 2,6 2,2
Luego debo 'detectar' que en la columna 1º hay un 'empate' y ordenar
segun el 2º resultado
y si fuera necesario segun el 3º resultado, pero no lo logro.
Y deberia quedar asi (lo ordene a 'mano' y no automaticamente).
ATLETA 1º 2º 3º
c 3 2,8 2,6
b 3 2,7 2,5
a 2,7 2,6 2,2
Para los atletas, esta es una tabla de salto en largo.
Se ordena de mayor a menor y si hay empate se mmira el 2º mejor salto y
asi.
Que funcion debo usar para ordenar automaticamente ?




Respuesta Responder a este mensaje
#3 Héctor Miguel
13/12/2009 - 22:49 | Informe spam
hola, !

No es lo que busco, pero gracias...



ok... prueba con este procedimiento (pero, primero): considera los separadores que usa mi sistema:
- argumentos: coma
- columnas en matrices constantes: punto_y_coma (entre llaves p.e. {..;..;..} ok ?)

1) los datos de tu consulta original en el rango [A1:D4]
titulos en la fila 1 (atleta, 1, 2, 3)
atletas en el rango [A2:A4] (a, b, c)
datos en el rango [B2:D4] (2,6;2,2;2,7 / 2,7;2,5;3 / 2,8;2,6;3)

2) obtienes por columna los valores mas altos (por cada fila)
a) selecciona el rango [F2:H2] e introduce UNA UNICA FORMULA (en F2)
b) la formula matricial (se confirma con ctrl + shift + enter): =k.esimo.mayor($b2:$d2,{1;2;3})
c) copia/arrastra las formulas del rango [F2:H4] hacia abajo => cubriendo en rango [F2:H4]

3) obtienes textualmente la concatenacion de los valores "ordenados" por fila
a) formula en [J2] ò&"|"&g2&"|"&h2
b) copia/arrastra esta formula hacia abajo => cubriendo el rango [J2:J4]

4) obtienes la "jerarquia" de los valores ordenados (desempates automaticos)
a) formula en [K2] =1+contar.si(j$2:j$4,">"&j$2:j$4)
b) copia/arrastra esta formula hacia abajo => cubriendo el rango [K2:K4]

5) obtienes la nueva lista jerarquizada en el rango [M2:P4]
a) formula en [M2] =indice(a$2:a$4,coincidir(fila(m1),$k$2:$k$4,0))
b) formula en [N2] =indice(f$2:f$4,coincidir(fila(m1),$k$2:$k$4,0))
c) copias/arrastras esta formula a la derecha => cubriendo en rango [N2:P2)
d) copias/arrastras las formulas del rango [M2:P2] hacia abajo => cubriendo el rango [M2:P4]

saludos,
hector.

p.d. corrige los rangos y todo lo que mis supuestos sea diferente de tu arreglo real
Respuesta Responder a este mensaje
#4 bishop365
14/12/2009 - 01:37 | Informe spam
Gracias, pero en 'tiempo real' no puedo hacer esto. Necesito una macro que
me permita elegir un rango dado y que lo ordene automaticamente.

Gracias nuevamente.


"Héctor Miguel" escribió en el mensaje
news:
hola, !

No es lo que busco, pero gracias...



ok... prueba con este procedimiento (pero, primero): considera los
separadores que usa mi sistema:
- argumentos: coma
- columnas en matrices constantes: punto_y_coma (entre llaves p.e.
{..;..;..} ok ?)

1) los datos de tu consulta original en el rango [A1:D4]
titulos en la fila 1 (atleta, 1, 2, 3)
atletas en el rango [A2:A4] (a, b, c)
datos en el rango [B2:D4] (2,6;2,2;2,7 / 2,7;2,5;3 / 2,8;2,6;3)

2) obtienes por columna los valores mas altos (por cada fila)
a) selecciona el rango [F2:H2] e introduce UNA UNICA FORMULA (en F2)
b) la formula matricial (se confirma con ctrl + shift + enter):
=k.esimo.mayor($b2:$d2,{1;2;3})
c) copia/arrastra las formulas del rango [F2:H4] hacia abajo =>
cubriendo en rango [F2:H4]

3) obtienes textualmente la concatenacion de los valores "ordenados" por
fila
a) formula en [J2] ò&"|"&g2&"|"&h2
b) copia/arrastra esta formula hacia abajo => cubriendo el rango
[J2:J4]

4) obtienes la "jerarquia" de los valores ordenados (desempates
automaticos)
a) formula en [K2] =1+contar.si(j$2:j$4,">"&j$2:j$4)
b) copia/arrastra esta formula hacia abajo => cubriendo el rango
[K2:K4]

5) obtienes la nueva lista jerarquizada en el rango [M2:P4]
a) formula en [M2] =indice(a$2:a$4,coincidir(fila(m1),$k$2:$k$4,0))
b) formula en [N2] =indice(f$2:f$4,coincidir(fila(m1),$k$2:$k$4,0))
c) copias/arrastras esta formula a la derecha => cubriendo en rango
[N2:P2)
d) copias/arrastras las formulas del rango [M2:P2] hacia abajo =>
cubriendo el rango [M2:P4]

saludos,
hector.

p.d. corrige los rangos y todo lo que mis supuestos sea diferente de tu
arreglo real

Respuesta Responder a este mensaje
#5 Héctor Miguel
14/12/2009 - 01:50 | Informe spam
hola, !

Gracias, pero en 'tiempo real' no puedo hacer esto.
Necesito una macro que me permita elegir un rango dado y que lo ordene automaticamente.
Gracias nuevamente.



ok, (creo que) cuando los requerimientos van cambiando de funciones de hoja de calculo a macros...
y/o de las consultas no se pueden desprender los detalles para (re)construir "el modelo" de forma clara...
hay que esperar a que se "asome" (por el grupo) alguien a quien ya le haya llegado su "bolita de cristal" :))

saludos,
hector.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida