Fórmula para atribuir um sufixo a uma classificação: SE 1 então "st", SE 2 então "nd", etc.

Fórmula para atribuir um sufixo a uma classificação: SE 1 então "st", SE 2 então "nd", etc.

Estou comparando a posição de um disco com a posição dele no ano passado: This year it is ranked 4th out of 50, in 2015 it was ranked 21st. É possível adicionar "st", "nd", "rd" e "th" à classificação automaticamente?

Meus dados estão em uma tabela:

  • COL A = Nome do ponto de dados (Bob, Jane, Bill, Anne, etc.). Esta é uma coluna fixa.
  • COL B = dados do último ano,
  • COL C = classificação do último ano,
  • COL D = dados do ano anterior,
  • COL E = classificação do ano anterior.

Sinto-me bastante confortável usando fórmulas IF, mas não tenho certeza de como me referir ao último dígito de uma célula e dizer: SE "é 1, então 'st'", SE "é 2, então 'nd'", SE "é um 3 então 'rd'", senão 'th'.

Observe que a classificação pode ser um número de vários dígitos. As letras são baseadas no último dígito. Portanto, a posição 31 é a 31ª. Também há exceções para os adolescentes. As classificações 11, 12 e 13 usam "th".

Isso pode ser feito como uma fórmula ou precisa ser feito pelo VBA?

Responder1

O seguinte pressupõe que a "classificação" esteja na célula B50"

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

O texto acima fornecerá resultados como "st", "nd" etc.

Embora eu suspeite que você também queira mostrar o número, então use

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

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

Graças ao comentário do ejbytes, não testei> 10! O trecho a seguir faz isso para que você possa ter o 22º ou o 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")))

Agora entramos nas questões 11, 12 e 13, bem como 111, 112, 113, etc., então precisamos lidar com elas!

=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, ficamos com 0... 10, 50, 100, mas também temos 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")))))))

Responder2

Trabalhando com a fórmula @Dave IF, tive que fazer algumas alterações em minha planilha de dados.

Reconhecer o dígito mais à esquerda significava que eu precisava adicionar outra coluna 'auxiliar'.

  • A coluna A é o número da classificação original
  • A coluna B é uma nova coluna auxiliar =VALUE(RIGHT(A1,1)) Isso me dá o último dígito.
  • A coluna C tem a 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")))))
    

Tive que lidar especificamente com 12 e 13… por causa do inglês!

Funciona, mas pode machucar os olhos. Obrigado

informação relacionada