Я сравниваю положение записи с ее позицией в прошлом году: в This year it is ranked 4th out of 50, in 2015 it was ranked 21st . Можно ли автоматически добавлять "st", "nd", "rd" и "th" в ранг?

Мои данные в таблице:

  • COL A = Имя точки данных (Боб, Джейн, Билл, Энн и т.д.). Это фиксированный столбец.
  • COL B = данные за последний год,
  • COL C = ранг последнего года,
  • COL D = данные за предыдущий год,
  • COL E = ранг предыдущего года.

Мне довольно удобно использовать формулы IF, но я не уверен, как обратиться к последней цифре в ячейке и сказать: ЕСЛИ «это 1, то« st »», ЕСЛИ «это 2, а затем« nd »», ЕСЛИ «это 3, то« третий », иначе« й ».

Обратите внимание, что ранг может быть многозначным числом. Буквы основаны на последней цифре. Таким образом, ранг 31 является 31-м. Это также исключения для подростков. Ряды 11, 12 и 13 используют "th".

Можно ли это сделать как формулу или это нужно делать VBA?

2 ответа2

1

Работая с формулой @Dave IF, мне пришлось внести некоторые изменения в свой лист данных.

Распознавание самой левой цифры означало, что мне нужно было добавить еще один столбец «помощник».

  • Столбец А является исходным номером ранга
  • Столбец B - это новый вспомогательный столбец = VALUE(RIGHT(A1,1)). Это дает мне последнюю цифру.
  • Столбец С имеет формулу

    =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")))))
    

Мне пришлось обращаться с 12 и 13 конкретно ... из-за английского!

Это работает, но это может повредить глаза. Спасибо

0

Далее предполагается, что "ранг" находится в ячейке B50 »

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

Выше приведены результаты, такие как "st", "nd" и т.д.

Хотя я подозреваю, что вы также хотите показать номер, так что используйте

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

Это покажет результаты как "1-й", "2-й" и т.д.

Благодаря комментарию ejbytes я не тестировал> 10! Следующий фрагмент делает это, чтобы вы могли иметь 22-й или 43-й и т.д.

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

Теперь мы переходим к вопросам 11, 12 и 13, а также к 111, 112, 113 и т.д., Поэтому нам нужно разобраться с ними!

=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"))))))

Наконец, у нас осталось 0 ... 10th, 50th, 100th, но у нас также есть 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")))))))

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .