Excel: как преобразовать числа в слова (прописанные) несколькими методами

В Excel существует несколько методов преобразования чисел в соответствующие им слова. Это может быть полезно в различных сценариях, таких как создание счетов, выписка чеков или создание отчетов. В этой статье блога мы рассмотрим несколько методов достижения такого преобразования с использованием формул Excel и макросов VBA. Давайте погрузимся!

Метод 1. Формула Excel
Для преобразования чисел в слова можно использовать комбинацию функций Excel, таких как ТЕКСТ, MID и ВПР. Вот пример формулы:

=VLOOKUP(MID(TEXT(A1,"00000000"),ROW(INDIRECT("1:"&LEN(TEXT(A1,"00000000"))))),NumberWords,2,FALSE)

В этой формуле A1 относится к ячейке, содержащей число, которое вы хотите преобразовать. NumberWords — это именованный диапазон, содержащий таблицу с числами и соответствующими им словами. Отрегулируйте диапазон в соответствии с вашими требованиями.

Метод 2: использование макроса VBA
Если вы предпочитаете работать с макросами VBA, вы можете использовать возможности пользовательских функций. Вот пример фрагмента кода VBA:

Function NumberToWords(ByVal MyNumber)
    Dim Units As String
    Dim SubUnits As String
    Dim DecimalPlace As String
    Dim Count As Integer
    Dim DecimalSeparator As String
    Dim UnitName As String
    Dim SubUnitName As String
    Dim SubUnitDenomination As String
    Dim SubUnitNameDecimal As String

    ReDim Place(9) As String
    Place(2) = " Thousand "
    Place(3) = " Million "
    Place(4) = " Billion "
    Place(5) = " Trillion "

    DecimalSeparator = " and "
    ReDim Numbers(99) As String
    Numbers(0) = "Zero"
    Numbers(1) = "One"
    '...
    'Complete the array with numbers up to 99

    MyNumber = Trim(CStr(MyNumber))

    Count = 1
    If MyNumber <> "" Then
        ReDim DecimalPlace(3) As String
        DecimalPlace(1) = " Dollar "
        DecimalPlace(2) = " Cents "
        ReDim Units(3) As String
        Units(1) = ""
        Units(2) = " Thousand "
        Units(3) = " Million "

        ReDim SubUnits(1 To 2) As String
        SubUnits(1) = " Cent "
        SubUnits(2) = " Cents "

        DecimalPlace = GetTens(Mid(MyNumber, DecimalPlace + 1) & "00")
        MyNumber = Trim(Left(MyNumber, DecimalPlace - 1))
        Count = 1
        Do While MyNumber <> ""
            Temp = GetHundreds(Right(MyNumber, 3))
            If Temp <> "" Then Units(Count) = Temp & Place(Count) & Units(Count)
            If Len(MyNumber) > 3 Then
                MyNumber = Left(MyNumber, Len(MyNumber) - 3)
            Else
                MyNumber = ""
            End If
            Count = Count + 1
        Loop
        NumberToWords = Trim(Units(3) & Units(2) & Units(1))
        If DecimalPlace <> "" Then
            NumberToWords = NumberToWords & DecimalSeparator & DecimalPlace
        End If
    End If
End Function
Function GetHundreds(ByVal MyNumber)
    Dim Result As String
    If Val(MyNumber) = 0 Then Exit Function
    MyNumber = Right("000" & MyNumber, 3)
    '...
    'Handle hundreds place values

    GetHundreds = Result
End Function
Function GetTens(TensText)
    Dim Result As String
    Result = ""           ' Null out the temporary function value.
    '...
    'Handle tens and ones place values

    GetTens = Result
End Function

Чтобы использовать приведенный выше код VBA, откройте редактор Visual Basic в Excel (Alt + F11), вставьте новый модуль и вставьте код. Затем вы можете использовать функцию NumberToWordsна своем листе для преобразования чисел в слова.

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