Excel VBA: преобразование кардинальных чисел в порядковые числа

В Excel VBA вы можете столкнуться с ситуациями, когда вам необходимо преобразовать кардинальные числа (например, 1, 2, 3) в соответствующие им порядковые номера (например, 1-й, 2-й, 3-й). В этой статье блога мы рассмотрим различные методы такого преобразования на примерах кода VBA.

Метод 1: использование оператора Select Case
Оператор Select Case позволяет нам проверить последнюю цифру числа и добавить соответствующий суффикс. Вот пример:

Function GetOrdinalNumber(ByVal num As Integer) As String
    Select Case num Mod 10
        Case 1
            GetOrdinalNumber = num & "st"
        Case 2
            GetOrdinalNumber = num & "nd"
        Case 3
            GetOrdinalNumber = num & "rd"
        Case Else
            GetOrdinalNumber = num & "th"
    End Select
End Function

Использование:

Sub Test()
    Dim result As String
    result = GetOrdinalNumber(5) ' Output: "5th"
    MsgBox result
End Sub

Метод 2: использование функции ВЫБОР
Функция ВЫБОР в Excel позволяет нам возвращать значение из списка параметров на основе индекса. Мы можем использовать эту функцию, чтобы получить желаемый суффикс порядкового номера. Вот пример:

Function GetOrdinalNumber(ByVal num As Integer) As String
    Dim suffix As String
    suffix = Choose(num Mod 10 + 1, "th", "st", "nd", "rd", "th", "th", "th", "th", "th", "th")
    GetOrdinalNumber = num & suffix
End Function

Использование:

Sub Test()
    Dim result As String
    result = GetOrdinalNumber(12) ' Output: "12th"
    MsgBox result
End Sub

Метод 3: использование функции StrConv VBA.
Функция StrConv в VBA позволяет нам преобразовывать строку в указанный регистр. Преобразовав кардинальное число в регистр предложений, мы можем легко добавить соответствующий суффикс. Вот пример:

Function GetOrdinalNumber(ByVal num As Integer) As String
    GetOrdinalNumber = StrConv(num, vbProperCase) & "th"
End Function

Использование:

Sub Test()
    Dim result As String
    result = GetOrdinalNumber(20) ' Output: "20th"
    MsgBox result
End Sub

В этой статье мы рассмотрели три различных метода преобразования кардинальных чисел в порядковые числа с помощью VBA в Excel. Оператор Select Case, функция CHOOSE и функция StrConv предоставляют нам различные варианты достижения желаемого результата. В зависимости от ваших конкретных требований и стиля кодирования вы можете выбрать метод, который подходит вам лучше всего.

Не забудьте оптимизировать код VBA в соответствии с вашими конкретными потребностями и рассмотреть возможность обработки ошибок для обработки недопустимых входных данных.