Añadir columna en la que aparezca el numero de la fila.

Estoy creando una App para crear un Ranking y quisiera mostrar una columna con el numero de la ordenación que corresponda, es decir, que salga el número del orden del Ranking. Pongo una foto de mi app para que se entienda mejor. Como se ve en la imagen sale un listado ordenado de mayor a menor por los puntos que tiene cada persona pero me gustaría autogenerar en la columna1 los números 1,2,3... para ver claramente la posición de cada usuario.

Tengo una tabla Ranking con los idSocio de los socios que tienen puntos y una columna virtual que me hace el sumatorio de los puntos por cada idSocio.

Captura de pantalla 2023-01-23 a las 21.11.00.png

Solved Solved
0 22 637
1 ACCEPTED SOLUTION


@Ventury92 wrote:

no en el orden correcto


COUNT(
  SPLIT(
    ANY(
      SPLIT(
        (" , " & SORT(UNIQUE(Ranking[PuntosTotales]), TRUE) & " , "),
        (" , " & [PuntosTotales] & " , ")
      )
    ),
    " , "
  )
)

View solution in original post

22 REPLIES 22

This will affect performance FOR SURE:

INDEXOF() - Google Cloud Community

Make sure to order things in your expression so that it's the same that you have in your UI

He investigado sobre esto pero no es lo que necesito... 

Gracias!

No es lo que necesitas o no lograste implementarlo?

Yo creo que eso no es correcto ya que no me va a autogenerar los números.

Básicamente es que muestre 1,2,3,4,... siempre fijo en la primera columna, independientemente de la ordenación que realice en las otras filas, es decir, que me muestre el número de fila que ocupa en la lista en ese momento.

Aclararé algo en caso de dudas:
No hay un método oficial para hacer lo que solicitas.

La alternativa es que dependiendo de los datos que tenga tu vista, utilices una columna virtual que calcule su ubicación en relación a todo el rango de datos, por eso te envié el post de @Steve ya que su expresión hace exactamente eso.

Deberás asegurarte de usar una expresión que use exactamente el mismo rango que en la vista y que tenga el mismo orden. Si utilizas un método que permite reordenar las filas, no funcionará

En ese caso, debe de ser culpa mía el no saber implementar dicha expresión ya que soy nuevo en esto y voy un poco perdido... ¿serías tan amable de ayudarme? Ahora mismo la configuración de la tabla es la siguiente: 

Captura de pantalla 2023-02-06 a las 6.55.43.png

La columna idSocio simplemente contiene los id de aquellos socios que tengan algún punto registrado y esta referenciado a la tabla "Socios" para coger el nombre de cada uno de ellos.

PuntosTotales es una columna virtual de un sumatorio de varias hojas de excel filtrando por el id del socio.

Posición es la columna virtual que estoy intentando hacer para que muestre la posición, si inserto la expresión que comentas del post me aparece el número 3 todo el rato ( no entiendo el motivo de esto tampoco). 

Captura de pantalla 2023-02-06 a las 7.04.07.png

Veo que en el ejemplo hay un EnumList y Enum... no sé que debería poner en mi caso.

Necesitas un número de posición que hace de Rankin dependiendo de los puntos totales, cierto?
Esto es un Rankin general?

correcto, eso es.

Considera que si dos tienen el mismo puntaje total, compartirán la posición (favor probar la expresión y volver con comentarios)

COUNT(
  SPLIT(
    ANY(
      SPLIT(
        (" , " & [PuntosTotales] & " , "),
        (" , " & Ranking[PuntosTotales] & " , ")
      )
    ),
    " , "
  )
)

El resultado es el mismo que con el ejemplo, me aparece todo el rato Pos = 3 si hay más de un resultado.

Captura de pantalla 2023-02-06 a las 21.46.59.png

Si solo hay un resultado muestra Pos = 1.

Captura de pantalla 2023-02-06 a las 22.19.14.png

La configuración de la tabla queda de la siguiente manera (PuntosTotales y Posicion son columnas virtuales): 

Captura de pantalla 2023-02-06 a las 21.49.03.png

Lo voy a chequear.

Por cierto, por qué la cantidad de resultados varía? Tienes más de una vista? Es una Inline? Todo esto afectaría la posibilidad de crear un ranking.

Te recuerdo nuevamente que esto es un workaround, no hay forma de hacerlo nativamente

En el ejemplo únicamente varia para hacer la comprobación de como funcionaba la columna. No tengo más de una vista.  

Captura de pantalla 2023-02-06 a las 22.41.22.png

Por qué una imágen dice "Pos." y la otra "Posicion" así como "PuntosTotales" vs "Puntos"?

Son cambios visuales que voy haciendo nada más. La estructura interna no cambia.

Por favor prueba con esta variación:

 

COUNT(
  SPLIT(
    ANY(
      SPLIT(
        (" , " & [PuntosTotales] & " , "),
        (" , " & SORT(UNIQUE(Ranking[PuntosTotales]), TRUE) & " , ")
      )
    ),
    " , "
  )
)

 

Destaco que no aplica para vistas Inline 

 Sigue saliendo lo mismo... :S No entiendo muy bien de donde viene ese 3, no tiene ningún sentido...

Captura de pantalla 2023-02-06 a las 22.48.29.png

Si te sirve y quieres realizar alguna prueba. tengo 5 tablas:

-Asfalto, Trail, Ciclismo (tablas en la que se registran los puntos para cada socio según la modalidad)

-Socios (Datos de los socios)

-Ranking ( tabla que únicamente registra el NumeroSocio que tiene algún punto registrado, al hacer insert en alguna tabla de Asfalto, Trail, Cilcismo se copia el NumeroSocio si no existe ya a esta tabla)

Podrías por favor postear acá la cadena completa de la expresión según el asistente?

Esto lo encuentras con el botón "Test" que aparece en la esquina inferior al momento de escribir la expresión

Captura de pantalla 2023-02-07 a las 16.36.14.png

Cometí un error.

Por favor, intenta esta vez con la siguiente expresión:

COUNT(
  SPLIT(
    ANY(
      SPLIT(
        (" , " & Ranking[PuntosTotales] & " , "),
        (" , " & [PuntosTotales] & " , ")
      )
    ),
    " , "
  )
)

Parece ser que ahora si saca distintos números  pero no en el orden correcto según la puntuación. Comprobando la excel lo que hace es sacar el número de la posición que tiene en la columna como si fuera el _ROWNUMBER

Captura de pantalla 2023-02-07 a las 17.20.55.png


@Ventury92 wrote:

no en el orden correcto


COUNT(
  SPLIT(
    ANY(
      SPLIT(
        (" , " & SORT(UNIQUE(Ranking[PuntosTotales]), TRUE) & " , "),
        (" , " & [PuntosTotales] & " , ")
      )
    ),
    " , "
  )
)

Esta si es la solución, muchísimas  gracias! 

Captura de pantalla 2023-02-07 a las 21.53.46.png

Top Labels in this Space