Fórmula para asignar un sufijo a un rango: SI 1 luego "st", SI 2 luego "nd", etc.

Fórmula para asignar un sufijo a un rango: SI 1 luego "st", SI 2 luego "nd", etc.

Estoy comparando la posición de un récord con su posición el año pasado: This year it is ranked 4th out of 50, in 2015 it was ranked 21st. ¿Es posible agregar "st", "nd", "rd" y "th" al rango automáticamente?

Mis datos están en una tabla:

  • COL A = Nombre del punto de datos (Bob, Jane, Bill, Anne, etc.). Esta es una columna fija.
  • COL B = datos del último año,
  • COL C = clasificación del último año,
  • COL D = datos del año anterior,
  • COL E = rango del año anterior.

Me siento bastante cómodo usando fórmulas SI, pero no estoy seguro de cómo referirme al último dígito de una celda y decir: SI "es un 1, entonces 'st'", SI "es un 2, luego 'nd'", SI "es un 3, entonces 'rd'", en caso contrario 'th'.

Tenga en cuenta que el rango puede ser un número de varios dígitos. Las letras se basan en el último dígito. Entonces el puesto 31 es el 31. También hay excepciones para los adolescentes. Los rangos 11, 12 y 13 usan "th".

¿Se puede hacer esto como una fórmula o es necesario hacerlo mediante VBA?

Respuesta1

Lo siguiente supone que el "rango" está en la celda B50".

=IF(B50=1,"st",IF(B50=2,"nd",IF(B50=3,"rd","th")))

Lo anterior le dará resultados como "st", "nd", etc.

Aunque sospecho que también querrás mostrar el número, así que usa

=IF(B50=1,B50 & "st",IF(B50=2,B50 & "nd",IF(B50=3,B50 & "rd",B50 & "th")))

Esto mostrará resultados como "1º", "2º", etc.

Gracias al comentario de ejbytes, ¡no probé> 10! El siguiente fragmento lo hace para que puedas tener el 22 o el 43, etc.

=IF(RIGHT(B50,1) = "1", B50&"st",IF(RIGHT(B50,1)="2",B50&"nd",IF(RIGHT(B50,1)="3",B50&"rd",B50&"th")))

Ahora entramos en los temas 11, 12 y 13, así como 111, 112, 113, etc., ¡así que debemos manejarlos!

=IF(RIGHT(B50,2)="11",B50 & "th",IF(RIGHT(B50,2)="12",B50&"th",IF(RIGHT(B50,2)="13",B50&"th",IF(RIGHT(B50,1)="1",B50&"st",IF(RIGHT(B50,1)="2",B50&"nd",IF(RIGHT(B50,1)="3",B50&"rd",B50&"th"))))))

Finalmente, nos queda 0... 10.º, 50.º, 100.º, ¡pero también tenemos 0!

=IF(B50=0,0,IF(RIGHT(B50,2)="11",B50&"th",IF(RIGHT(B50,2)="12",B50&"th",IF(RIGHT(B50,2)="13",B50&"th",IF(RIGHT(B50,1)="1",B50&"st",IF(RIGHT(B50,1)="2",B50&"nd",IF(RIGHT(B50,1)="3",B50&"rd",B50&"th")))))))

Respuesta2

Al trabajar con la fórmula @Dave IF, tuve que hacer algunas modificaciones en mi hoja de datos.

Reconocer el dígito más a la izquierda significaba que necesitaba agregar otra columna de "ayuda".

  • La columna A es el número de clasificación original.
  • La columna B es una nueva columna auxiliar =VALOR(DERECHA(A1,1)) Esto me da el último dígito.
  • La columna C tiene la fórmula

    =IF(A1=12,A1&"th",IF(A1=13,A1&"th",IF(B1=1,A1&"st",IF(B1=2,A1&"nd",IF(B1=3,A1&"rd",A1&"th")))))
    

Tuve que manejar 12 y 13 específicamente…¡por el inglés!

Funciona, pero puede dañar los ojos. Gracias

información relacionada