Как заменить столбец чисел в Excel их окончанием "th" и "nd"? - PullRequest
2 голосов
/ 18 марта 2020

У меня есть столбец чисел в excel, который я хотел бы заменить их двумя буквами, заканчивающимися "th" и "nd", как в 13-м или 62-м. Как мне сделать это в Excel? У меня есть большой ключ с номером и окончанием на отдельном листе.

1 Ответ

2 голосов
/ 18 марта 2020

Кардинальные числа являются обычными числами c числа и имеют вид: 1, 2, 3, 4 и т. Д. c.

Порядковые числа имеют суффикс и выглядит так: 1-й, 2-й, 3-й, 4-й, и т. д. c.

Обратите внимание, что в порядковой форме числа на самом деле являются текстовыми и должны использоваться только для отображения; Excel больше не будет считать их числами.

Если кардинальное число находится в A1, эта формула приведет к порядковому представлению ...

=IF(OR(--RIGHT(A1,2)={11,12,13}),"th",IFERROR(CHOOSE(RIGHT(A1),"st","nd","rd"),"th"))

Приведенная выше формула НЕ нужна быть введен массив. Достаточно обычного подтверждения.

Для полноты здесь можно использовать приведенную выше удивительно лаконичную формулу в качестве UDF. Поместите следующую функцию в модуль стандартного кода VBA ...

Function Ordinal(n)
  Ordinal = n & Evaluate("IF(OR(--RIGHT(" & n & ",2)={11,12,13}),""th"",IFERROR(CHOOSE(RIGHT(" & n & "),""st"",""nd"",""rd""),""th""))")
End Function

Теперь вы можете вызывать ее из формулы на листе. Например, в ячейке A1 вы можете иметь следующую формулу:

=Ordinal(123)

Или из подпрограммы VBA ...

Msgbox Ordinal(21)

И получить и сохранить массив Первые 255 порядковых чисел в VBA вы можете использовать следующую вариацию как функцию ...

Function Ordinals()
  Ordinals = [ROW(1:255)&IF((--RIGHT(ROW(1:255),2)>10)*(--RIGHT(ROW(1:255),2)<14),"th",IFERROR(CHOOSE(RIGHT(ROW(1:255)),"st","nd","rd"),"th"))]
End Function

Теперь получите массив следующим образом ...

Sub Test()
  Dim v  
  v = Ordinals  '<-- v is now a 2d array and holds the first 255 ordinals
  MsgBox v(211, 1)
End Sub
...