Ranking

Hola.
Me gustaría saber si conoces alguna forma rápida de poner al lado de una lista, por ejemplo, personas con sus correspondientes alturas, un número que exprese su posición en el ranking de mayor a menor o viceversa.
La forma perfecta sería poder saltar la limitación del CONTAR.SI que no me deja poner en la condición mayor o menor que una celda determinada. Si lo pudiese hacer estaría solucionado pues contaría el número de celdas dentro del rango mayores o menores que una determinada del mismo rango.
Hasta el momento, lo he conseguido hacer de una forma un tanto "cutre", y poco automática, pues es una suma de condicionales en los que compara el valor de cada elemento, con el de todos los demás y los suma para saber cuantos son mayores o menores. El problema es que si tengo que añadir algún dato a la lista tengo que añadir un condicional a la fórmula.
Te agradecería tremendamente tu ayuda.
Muchísimas Gracias
1

1 respuesta

Respuesta
No se si es la hora o que, pero como que no te entendí, veamos, tienes la siguiente lista
A | B | C
Mauricio | 1.70
Gloria | 1.68
Edgar | 1.75
Lidia | 1.55
Y tu quieres que en otra columna aparezca un número indicando su posición con respecto a la altura, ¿es esto correcto?, si es así, nuestra lista quedaría así...
A | B | C
Edgar | 1.75 | 1
Mauricio | 1.70 | 2
Gloria | 1.68 | 3
Lidia | 1.55 | 4
Si esto es lo que quieres, tienes que usar una macro, esto es por que si bien con un simple ordenamiento te da el "orden" que quieras, ascendente o descendente, no te da la numeración y menos cuando es dinámico, es decir, cuando le agregas o quitas datos, si no lo haces muy seguido tan fácil como ordenar por alturas y numerar de nuevo, pero si lo haces muy seguido entonces, una macro es ideal, el siguiente código lo hace...
Option Explicit
'Estoy suponiendo que tienes tres columnas
'Nombre | Altura | Posicion
'si estan desde la columna A o desde la Z
'no importa, pero que sean tres y en este orden
Public Sub Ordenar()
Dim rDatos As Range
Dim co1 As Integer
'Obtengo el rando de datos, la celda activa debe de estar
'dentro de mis datos
Set rDatos = ActiveCell.CurrentRegion
'Ordeno por la altura
rDatos.Sort Key1:=rDatos.Range("B1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
'Renumero la posicion de cada uno
For co1 = 2 To rDatos.Rows.Count
rDatos.Cells(co1, 3).Value = co1 - 1
Next co1
'Libero la memoria
Set rDatos = Nothing
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas