Discussion:
Ordenar clasificación deportiva automáticamente
(demasiado antiguo para responder)
Francis
2006-01-04 12:27:17 UTC
Permalink
Hola compañeros.

Tengo una hoja de cálculo que crea una clasificación deportiva a partir de
los resultados que introduzco en un calendario de partidos que he diseñado.

La clasificación me sale perfectamente con los campos "puntos" "partidos
jugados" "partidos ganados" "partidos perdidos", etc..

Pero cada vez que introduzco un resultado, a la hora de ordenar esa
clasificación (por el orden que cada equipo le corresponde según sus
resultados), me toca seleccionar los datos y ordenarla cada vez que
introduzco un dato nuevo.

Quisiera saber si existe un modo de que esa clasificación o ese rango de
celdas se ordene automáticamente cada vez que introduzco un resultado.

Además, el criterio para ordenar esos datos, lo quiero hacer tomando en
cuenta tres columnas distintas (para el caso en el que exista un empate en la
columna que tomé como primera opción).

Llevo meses intentando solucionar este tema.

Os agradecería un poco de ayuda. GRACIAS.
Marianoh
2006-01-04 14:41:51 UTC
Permalink
Hola Francis:
Lo mas facil creo que es grabar una macro con la ordenación que
realizas, por ejemplo, el código para ordenar por las tres primeras
columnas sería:

Selection.Sort Key1:=Range("C4"), Order1:=xlDescending,
Key2:=Range("D4") _
, Order2:=xlDescending, Key3:=Range("E4"), Order3:=xlAscending,
Header _
:=xlGuess, OrderCustom:=1, MatchCase:=False,
Orientation:=xlTopToBottom _
, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal,
DataOption3:= _
xlSortNormal

Luego reemplazas "Selection" por Range("Tabla") o por Range("B3:E10")
si no tiene nombre. Y queda:

Range("Tabla").Sort Key1:=Range("C4"), Order1:=xlDescending,
Key2:=Range("D4") _
, Order2:=xlDescending, Key3:=Range("E4"), Order3:=xlAscending,
Header _
:=xlGuess, OrderCustom:=1, MatchCase:=False,
Orientation:=xlTopToBottom _
, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal,
DataOption3:= _
xlSortNormal

Ahora solo tendrías que ejecutar la macro para que la tabla se ordene.

-Para grabar la macro: Herramientas-Macros-Grabar nueva macro y
realizas los pasos que habitualmente utilizas para ordenar.
-Para Editar el código de la macro grabada: Alt + F11 - Módulos -
Módulo 1

Saludos: MarianoH
Francis
2006-01-05 13:53:02 UTC
Permalink
Mariano, muchísimas gracias. voy a provarlo durante este fin de semana y te
responderé con los avances que consiga.
Post by Marianoh
Lo mas facil creo que es grabar una macro con la ordenación que
realizas, por ejemplo, el código para ordenar por las tres primeras
Selection.Sort Key1:=Range("C4"), Order1:=xlDescending,
Key2:=Range("D4") _
, Order2:=xlDescending, Key3:=Range("E4"), Order3:=xlAscending,
Header _
:=xlGuess, OrderCustom:=1, MatchCase:=False,
Orientation:=xlTopToBottom _
, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal,
DataOption3:= _
xlSortNormal
Luego reemplazas "Selection" por Range("Tabla") o por Range("B3:E10")
Range("Tabla").Sort Key1:=Range("C4"), Order1:=xlDescending,
Key2:=Range("D4") _
, Order2:=xlDescending, Key3:=Range("E4"), Order3:=xlAscending,
Header _
:=xlGuess, OrderCustom:=1, MatchCase:=False,
Orientation:=xlTopToBottom _
, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal,
DataOption3:= _
xlSortNormal
Ahora solo tendrías que ejecutar la macro para que la tabla se ordene.
-Para grabar la macro: Herramientas-Macros-Grabar nueva macro y
realizas los pasos que habitualmente utilizas para ordenar.
-Para Editar el código de la macro grabada: Alt + F11 - Módulos -
Módulo 1
Saludos: MarianoH
Francis
2006-01-09 16:53:02 UTC
Permalink
Hola Mariano. Efectívamente he aprendido a grabar una macro y al ejecutarla
me ordena la tabla tal y como yo le predefiní.

Ahora, ¿puede una macro ejecutarse automáticamente? lo que quiero decir es
que si puede predeterminarse para que se ejecute simplemente cuando detecte
un cambio en los datos por los que se ordena.

Si no es así, ¿hay algún modo de que se inserte un boton en la propia hoja
de cálculo y la macro se ejecute (un estilo a un acceso directo)?

Gracias de nuevo.
Post by Marianoh
Lo mas facil creo que es grabar una macro con la ordenación que
realizas, por ejemplo, el código para ordenar por las tres primeras
Selection.Sort Key1:=Range("C4"), Order1:=xlDescending,
Key2:=Range("D4") _
, Order2:=xlDescending, Key3:=Range("E4"), Order3:=xlAscending,
Header _
:=xlGuess, OrderCustom:=1, MatchCase:=False,
Orientation:=xlTopToBottom _
, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal,
DataOption3:= _
xlSortNormal
Luego reemplazas "Selection" por Range("Tabla") o por Range("B3:E10")
Range("Tabla").Sort Key1:=Range("C4"), Order1:=xlDescending,
Key2:=Range("D4") _
, Order2:=xlDescending, Key3:=Range("E4"), Order3:=xlAscending,
Header _
:=xlGuess, OrderCustom:=1, MatchCase:=False,
Orientation:=xlTopToBottom _
, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal,
DataOption3:= _
xlSortNormal
Ahora solo tendrías que ejecutar la macro para que la tabla se ordene.
-Para grabar la macro: Herramientas-Macros-Grabar nueva macro y
realizas los pasos que habitualmente utilizas para ordenar.
-Para Editar el código de la macro grabada: Alt + F11 - Módulos -
Módulo 1
Saludos: MarianoH
KL
2006-01-09 18:15:57 UTC
Permalink
Hola Francis,



Suponiendo que...
1) tu tabla de clasificacion esta en el rango A1:I30
P.ej.:
[A] Equipo
[B] Partidos jugados
[C] Victorias
[D] Empates
[E] Derrotas
[F] Goles Marcados
[G] Goles Encajados
[H] Diferencia de goles
[I] Puntos Totales
2) quieres ordenar la tabla al cambiar algun dato en el rango [C2:G30]
3) quieres ordenar la tabla usando como criterio las columnas [I] y en caso de igualdad [H]

prueba hacer lo siguiente:

1) Haz clic-derecho sobre el nombre de la hoja en cuestion (en una de las pestanas de la parte de abajo de la ventana de Excel).
2) Elige la opcion Ver Codigo para abrir el editor VBA.
3) Una vez en el Editor VBA, en la ventana mas grande a la derecha pega el codigo que te pongo a continuacion:

'--------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [C2:G30]) Is Nothing Then Exit Sub
Range("A1:I30").Sort _
Key1:=Range("I2"), _
Order1:=xlDescending, _
Key2:=Range("H2"), _
Order2:=xlDescending, _
Header:=xlGuess
End Sub
'--------------------

4) Ahora pulsa Alt+F11 para volver a la hoja.
5) Prueba cambiar los valores en el rango [C2:G30]

Saludos,
KL
Post by Francis
Hola Mariano. Efectívamente he aprendido a grabar una macro y al ejecutarla
me ordena la tabla tal y como yo le predefiní.
Ahora, ¿puede una macro ejecutarse automáticamente? lo que quiero decir es
que si puede predeterminarse para que se ejecute simplemente cuando detecte
un cambio en los datos por los que se ordena.
Si no es así, ¿hay algún modo de que se inserte un boton en la propia hoja
de cálculo y la macro se ejecute (un estilo a un acceso directo)?
Gracias de nuevo.
Post by Marianoh
Lo mas facil creo que es grabar una macro con la ordenación que
realizas, por ejemplo, el código para ordenar por las tres primeras
Selection.Sort Key1:=Range("C4"), Order1:=xlDescending,
Key2:=Range("D4") _
, Order2:=xlDescending, Key3:=Range("E4"), Order3:=xlAscending,
Header _
:=xlGuess, OrderCustom:=1, MatchCase:=False,
Orientation:=xlTopToBottom _
, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal,
DataOption3:= _
xlSortNormal
Luego reemplazas "Selection" por Range("Tabla") o por Range("B3:E10")
Range("Tabla").Sort Key1:=Range("C4"), Order1:=xlDescending,
Key2:=Range("D4") _
, Order2:=xlDescending, Key3:=Range("E4"), Order3:=xlAscending,
Header _
:=xlGuess, OrderCustom:=1, MatchCase:=False,
Orientation:=xlTopToBottom _
, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal,
DataOption3:= _
xlSortNormal
Ahora solo tendrías que ejecutar la macro para que la tabla se ordene.
-Para grabar la macro: Herramientas-Macros-Grabar nueva macro y
realizas los pasos que habitualmente utilizas para ordenar.
-Para Editar el código de la macro grabada: Alt + F11 - Módulos -
Módulo 1
Saludos: MarianoH
Marianoh
2006-01-09 22:17:41 UTC
Permalink
Francis:

Como te indican abajo, la fórmula "JERARQUIA" te puede servir para
resolver tu problema, pero para ordenar la lista automáticamente
entiendo que la única solución es el código, ya que, de otra manera,
una celda solo puede cambiar de valor sin tu acción cuando contiene
una fórmula.

Lo que me preguntas debería haberlo incluido desde un principio. De
hecho si se puede ejecutar una macro cuando cambia el valor de una
celda (o mejor dicho cuando este es editado), para ello se utiliza el
evento Change y la función Intersect.

El evento Change de la hoja se dispara cuando cambia un valor de la
misma, y ejecuta el código que le asignes. Un ejemplo es más claro:

Private Sub Worksheet_Change(ByVal Target As Range)
Lo que escribas aca, se ejecuta cada vez que cambia un valor en la
hoja
End Sub

Así como editaste el código que la grabadora de macros aloja en un
módulo, este va en la hoja, para lo que haces doble click en esta en
el editor de VBA.

Y para que la lista se ordene cuando el valor que cambia esté dentro
de la tabla..:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("Tabla")) Is Nothing Then
'En castellano: Si el rango resultado de la intersección entre
la celda con el
'valor que cambió (Target) y la tabla no es vacío...que ocurra
lo que escribo aca.
End If
End Sub

Saludos: MarianoH
KL
2006-01-09 23:31:41 UTC
Permalink
Hola Marianoh,
Post by Marianoh
para ordenar la lista automáticamente
entiendo que la única solución es el código
Creo que te equivocas - el articulo cuyo enlace expuse en el otro mensaje habla precisamente de como hacer una clasificacion
dinamica mediante formulas sin necesidad de recurrir a macros ;-)

Saludos,
KL

Leandro
2006-01-04 22:01:33 UTC
Permalink
Hola FRancis me puedes comentar para que deporte es yo tengo hecho hace
mucho tiempo un programa en Excel que me hace todo eso es para 4 equipos
para 8,10,12,16 lo hice expresamente para voleibol pero sirve para varios
deportes y hace la ordenacion de la clasificacion automaticamente con una
macro en el programa lo tengo especificado.
En mi pagina personal tengo colgado el programa se llama tablas6.xls la
direccion es http://personales.mundivia.es/lemafra
Un Saludo
Leandro
Hola compañeros.
Tengo una hoja de cálculo que crea una clasificación deportiva a partir de
los resultados que introduzco en un calendario de partidos que he diseñado.
La clasificación me sale perfectamente con los campos "puntos" "partidos
jugados" "partidos ganados" "partidos perdidos", etc..
Pero cada vez que introduzco un resultado, a la hora de ordenar esa
clasificación (por el orden que cada equipo le corresponde según sus
resultados), me toca seleccionar los datos y ordenarla cada vez que
introduzco un dato nuevo.
Quisiera saber si existe un modo de que esa clasificación o ese rango de
celdas se ordene automáticamente cada vez que introduzco un resultado.
Además, el criterio para ordenar esos datos, lo quiero hacer tomando en
cuenta tres columnas distintas (para el caso en el que exista un empate en la
columna que tomé como primera opción).
Llevo meses intentando solucionar este tema.
Os agradecería un poco de ayuda. GRACIAS.
Francis
2006-01-05 14:01:02 UTC
Permalink
Hola Leandro.

Lo que estoy intentando hacer es una hoja de cálculo y supersimple en donde,
en la misma pagina de impresión aparezcan, el calendario, clasificación, etc.

Veo por lo que he visto en tu página web, que tú manejas mucho mejor que yo
el excel, así que yo te voy a enseñar poco. Además, lo tengo solo para futbol
sala, y un grupo de 4 a ida y vuelta. pero pienso adecuar una hoja de cálculo
para cada una de las modalidades deportivas (modificando simplemente las
fórmulas y algún campo más). Esta hoja que sigo diseñando, lo probé el verano
pasado con un torneo y me vino muy bien. Mejor que lo que hay por ahí en
internet.

Si quieres, te lo envío a tu correo electrónico, ya que cuando termine de
diseñarlo pienso distribuirlo a mucha gente que conozco y le vendrá bien.
Hola FRancis me puedes comentar para que deporte es yo tengo hecho hace
mucho tiempo un programa en Excel que me hace todo eso es para 4 equipos
para 8,10,12,16 lo hice expresamente para voleibol pero sirve para varios
deportes y hace la ordenacion de la clasificacion automaticamente con una
macro en el programa lo tengo especificado.
En mi pagina personal tengo colgado el programa se llama tablas6.xls la
direccion es http://personales.mundivia.es/lemafra
Un Saludo
Leandro
Hola compañeros.
Tengo una hoja de cálculo que crea una clasificación deportiva a partir de
los resultados que introduzco en un calendario de partidos que he diseñado.
La clasificación me sale perfectamente con los campos "puntos" "partidos
jugados" "partidos ganados" "partidos perdidos", etc..
Pero cada vez que introduzco un resultado, a la hora de ordenar esa
clasificación (por el orden que cada equipo le corresponde según sus
resultados), me toca seleccionar los datos y ordenarla cada vez que
introduzco un dato nuevo.
Quisiera saber si existe un modo de que esa clasificación o ese rango de
celdas se ordene automáticamente cada vez que introduzco un resultado.
Además, el criterio para ordenar esos datos, lo quiero hacer tomando en
cuenta tres columnas distintas (para el caso en el que exista un empate en la
columna que tomé como primera opción).
Llevo meses intentando solucionar este tema.
Os agradecería un poco de ayuda. GRACIAS.
Gabriel Raigosa
2006-01-06 07:00:22 UTC
Permalink
Saludos;

Para ordenar una base de datos por varios criterios, tres, no es
indispensable el uso de macros

- Primera fila de encabezados debe estar completa y no deben haber columnas
en blanco
- NO debe haber una fila en blanco entre la fila de encabezados y el primer
registro de datos
- No deben existir filas en blanco en la base de datos, todos los registros
deben ser consecutivos

- Se selecciona la base de datos completa (CRTL + *)
- Menu "datos", "ordenar"

Aparece una ventana, donde se seleccionan las columnas por las cuales se
quiere ordenar la base de datos, tres criterios, (recomiendo observe bien
las las opciones), escoge las que necesite.

QAP...
--
Gabriel Raigosa
Medellín - Colombia
***@hot.mail.com
------------------------------------------------
Post by Francis
Hola compañeros.
Tengo una hoja de cálculo que crea una clasificación deportiva a partir de
los resultados que introduzco en un calendario de partidos que he diseñado.
La clasificación me sale perfectamente con los campos "puntos" "partidos
jugados" "partidos ganados" "partidos perdidos", etc..
Pero cada vez que introduzco un resultado, a la hora de ordenar esa
clasificación (por el orden que cada equipo le corresponde según sus
resultados), me toca seleccionar los datos y ordenarla cada vez que
introduzco un dato nuevo.
Quisiera saber si existe un modo de que esa clasificación o ese rango de
celdas se ordene automáticamente cada vez que introduzco un resultado.
Además, el criterio para ordenar esos datos, lo quiero hacer tomando en
cuenta tres columnas distintas (para el caso en el que exista un empate en la
columna que tomé como primera opción).
Llevo meses intentando solucionar este tema.
Os agradecería un poco de ayuda. GRACIAS.
Francis
2006-01-09 10:22:01 UTC
Permalink
Hola Gabriel. Gracias por tu ayuda.

Me comentas el modo de ordenar un rango de celdas. Y eso sí lo sabía hacer.
Lo que yo no sé cómo hacer es el conseguir que esa ordenación se produzca
también automáticamente cada vez que los datos que aparecen en ese rango sean
modificados, sin yo tener que volverlo a ordenar cada vez.

A lo mejor yo no te he entendido y sí es eso lo que me querías explicar. Te
pido por favor que me lo aclares si te es posible.

De nuevo, gracias.

Un saludo.

Francis.
Post by Gabriel Raigosa
Saludos;
Para ordenar una base de datos por varios criterios, tres, no es
indispensable el uso de macros
- Primera fila de encabezados debe estar completa y no deben haber columnas
en blanco
- NO debe haber una fila en blanco entre la fila de encabezados y el primer
registro de datos
- No deben existir filas en blanco en la base de datos, todos los registros
deben ser consecutivos
- Se selecciona la base de datos completa (CRTL + *)
- Menu "datos", "ordenar"
Aparece una ventana, donde se seleccionan las columnas por las cuales se
quiere ordenar la base de datos, tres criterios, (recomiendo observe bien
las las opciones), escoge las que necesite.
QAP...
--
Gabriel Raigosa
Medellín - Colombia
------------------------------------------------
Post by Francis
Hola compañeros.
Tengo una hoja de cálculo que crea una clasificación deportiva a partir de
los resultados que introduzco en un calendario de partidos que he diseñado.
La clasificación me sale perfectamente con los campos "puntos" "partidos
jugados" "partidos ganados" "partidos perdidos", etc..
Pero cada vez que introduzco un resultado, a la hora de ordenar esa
clasificación (por el orden que cada equipo le corresponde según sus
resultados), me toca seleccionar los datos y ordenarla cada vez que
introduzco un dato nuevo.
Quisiera saber si existe un modo de que esa clasificación o ese rango de
celdas se ordene automáticamente cada vez que introduzco un resultado.
Además, el criterio para ordenar esos datos, lo quiero hacer tomando en
cuenta tres columnas distintas (para el caso en el que exista un empate en la
columna que tomé como primera opción).
Llevo meses intentando solucionar este tema.
Os agradecería un poco de ayuda. GRACIAS.
KL
2006-01-09 17:49:36 UTC
Permalink
Hola Francis,

Veo que llego un poco tarde. Solo comentarte que esto lo que planteas se puede hacer sin recurrir a los macros. Revisa el siguiente
enlace:
http://www.cpearson.com/excel/rank.htm

y un ejemplo aqui:
http://www.cpearson.com/Zips/RANK.ZIP

Saludos,
KL
Post by Francis
Hola compañeros.
Tengo una hoja de cálculo que crea una clasificación deportiva a partir de
los resultados que introduzco en un calendario de partidos que he diseñado.
La clasificación me sale perfectamente con los campos "puntos" "partidos
jugados" "partidos ganados" "partidos perdidos", etc..
Pero cada vez que introduzco un resultado, a la hora de ordenar esa
clasificación (por el orden que cada equipo le corresponde según sus
resultados), me toca seleccionar los datos y ordenarla cada vez que
introduzco un dato nuevo.
Quisiera saber si existe un modo de que esa clasificación o ese rango de
celdas se ordene automáticamente cada vez que introduzco un resultado.
Además, el criterio para ordenar esos datos, lo quiero hacer tomando en
cuenta tres columnas distintas (para el caso en el que exista un empate en la
columna que tomé como primera opción).
Llevo meses intentando solucionar este tema.
Os agradecería un poco de ayuda. GRACIAS.
Loading...