Hacer un ranking por puntajes y romper el empate..

Tengo un problema resulta que estoy haciendo un cuadro para un campeonato de snooker y necesito que genere automáticamente el ranking de jugadores con sus respectivos puntosluego de haber puesto todas sus puntuaciones, por ejemplo tengo 11 jugadores al final de la fecha todos acumulan sus puntos y tengo una tabla columna nombre y columna puntaje el ranking se genera a partir de quien más tenga más puntos hasta el menor pero surge que puede haber empate para romper eso tengo otra tabla columna nombre y columna AVERAGE que son los puntos acumulados según la cantidad de billas hayan introducido a las buchacas así que quien tenga mayor puntaje AVERAGE entre esos empatados pasa arriba en el ranking y así...
Creo que con esos 2 criterios bastan para generar el ranking, espero que me puedan ayudar,
He subido la imagen de mi problema para que tengan una mejor idea de lo que me refiero

Les estoy muy agradecido por anticipado :)

1 respuesta

Respuesta
1
Si lo quieres con fórmulas se puede pero si te vale con macros te cree esta que lo que hace es copiar la tabla y ordenarla según valores de mayor a menor
suponiendo que la tabla 1ª empiece en A1 y la 2ª tabla en E1 pega este código en un modulo y luego lo ejecutas esto te creara la tabla 3ª a partir de I1 ya ordenada con los 2 criterios
Sub ordenar_tablas()
    Range("A1:G12").Select
    Selection.Copy
    Range("I1").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone ', SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    ActiveWorkbook.Worksheets("Hoja1").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Hoja1").Sort.SortFields.Add Key:=Range("K2:K12"), _
        SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("Hoja1").Sort.SortFields.Add Key:=Range("O2:O12"), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Hoja1").Sort
        .SetRange Range("J1:O12")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Columns("M:P").Select
    Selection.Delete Shift:=xlToLeft
    Range("I1").Select
End Sub
Si te vale así dímelo
Ademas se podría crear un código para que se ejecute sola al cambiar algún dato de las tablas si quieres eso o bien si no sabes como pasar el código dímelo y te lo explico
Muchas gracias por la ayuda, en realidad nunca he aplicado una macro y si me gustaría que como dices se ejecute sola
gracias :)
Acabo de aplicar la macro con un pequeño cambio en la linea
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
puse
SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
como se trata de ordenar en forma ascendente
Ahora si funciona bien, con una combinación de teclas que le puse
Solo faltaría saber si ese macro se puede ejecutar automáticamente según cambie los datos de las 2 tablas de puntaje y average
Muchísimas gracias pot tu ayuda, me ha servido para aprender un poco más :)
Corrijo en el anterior post quise decir:
Como se trata de ordenar en forma "descendente"
Gracias
Este código que te paso lo pegas en la hoja que tienes las tablas para eso cuando estés en el editor de proiectos a la izquierda veras las hojas pinchas 2 veces en el nombre de la hoja que tienes las tablas y en la ventana que se te abrirá pegas este código
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Range("A1:A10"), Target) Is Nothing Then
ordenar_tablas
End If
End Sub
El rango que te puse es A1:A10 cambialo por el que tu quieras
Ya me cuentas si te vale

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas