Как в Excel написать число словами: от простых цифр до финансовых документов

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

Многие ошибочно считают, что для этой операции обязательно нужен опыт программирования. На самом деле даже пользователь с базовыми навыками работы в Excel сможет настроить автоматическое отображение чисел прописью, используя готовые формулы или бесплатные дополнения. Главное — понимать, какой именно формат вам нужен: простая расшифровка числа (например, "сто двадцать три") или финансовый формат с валютами ("сто двадцать три рубля 50 копеек").

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

📊 Для чего вам нужно преобразовывать числа в слова в Excel?
Для бухгалтерских документов
Для договоров и актов
Для личных финансов
Для учебных задач
Другое

Прежде чем переходить к практике, важно уточнить один нюанс: Excel оперирует числами и текстом по-разному. Число 123 и текст "сто двадцать три" для программы — абсолютно разные типы данных. Это означает, что после преобразования вы не сможете использовать результат в математических формулах (например, сложить два текстовых значения). Зато такой текст идеально подходит для печати в документах или отчётах.

Способ 1: Использование встроенных функций Excel (без VBA)

Если вам нужно одноразово преобразовать небольшое количество чисел, можно обойтись без программирования. Для этого подойдёт комбинация стандартных функций ТЕКСТ, ПОИСКПОЗ и ВЫБОР. Метод не самый гибкий, но работает во всех версиях Excel, включая онлайн-редактор.

Пример формулы для чисел от 0 до 999:

=ВЫБОР(ЦЕЛОЕ(A1/100);"";"сто";"двести";"триста";"четыреста";"пятьсот";"шестьсот";"семьсот";"восемьсот";"девятьсот") & " " &

ВЫБОР(ЦЕЛОЕ(ОСТАТ(A1;100)/10);"";"десять";"двадцать";"тридцать";"сорок";"пятьдесят";"шестьдесят";"семьдесят";"восемьдесят";"девяносто") & " " &

ВЫБОР(ОСТАТ(A1;10);"";"один";"два";"три";"четыре";"пять";"шесть";"семь";"восемь";"девять")

Эта формула разбивает число на сотни, десятки и единицы, а затем "склеивает" их в текст. Обратите внимание: она не учитывает падежи (например, "один рубль" vs "одного рубля") и работает только с целыми числами. Для дробных значений (копейки) потребуется отдельная логика.

⚠️ Внимание: При копировании формулы в ячейки с числами >999 Excel выдаст ошибку #ЗНАЧ!. Чтобы обработать большие числа, нужно расширять логику для тысяч, миллионов и т.д., что делает метод громоздким.
  • Плюсы: Не требует установки дополнений, работает в Excel Online.
  • Минусы: Ограниченный диапазон чисел, нет поддержки валют и падежей.
  • 🔧 Когда использовать: Для разовых задач с числами до 1000 без требований к формату.

Способ 2: Готовые надстройки для Excel (самый простой вариант)

Если вам нужно регулярно преобразовывать числа в слова с учётом рублей, долларов или евро, лучшее решение — установить специализированную надстройку. Такие инструменты автоматически обрабатывают падежи, копейки и даже поддерживают разные языки.

Топ-3 бесплатных надстройки для русскоязычных пользователей:

Название Особенности Ссылка на скачивание
NumWord Поддерживает рубли/доллары, копейки/центы, правильные падежи. Работает в Excel 2010-2023. Скачать
ЧислоПрописью Простой интерфейс, возможность настройки формата вывода (с валютами или без). Скачать
RubToStr Специализируется на финансовых документах (договора, акты, счета). Скачать

Установка надстройки занимает не больше минуты:

  1. Скачайте файл с расширением .xlam.
  2. Откройте Excel, перейдите в Файл → Параметры → Надстройки.
  3. Внизу окна выберите Перейти...Обзор и укажите путь к скачанному файлу.
  4. Готово! Новая функция (например, =ЧИСЛОПРОПИСЬЮ(A1)) появится в списке.

Пример использования надстройки NumWord:

=NumWord_RUB(A1;1)

Где A1 — ячейка с числом, а 1 — параметр для отображения копеек.

Способ 3: VBA-макрос для продвинутых пользователей

Если вы готовы немного погрузиться в программирование, VBA-макрос даст максимальную гибкость. Этот метод позволяет обрабатывать числа любой длины, настраивать валюты и даже добавлять собственные правила для падежей.

Ниже приведён код макроса, который преобразует число в рубли с копейками (например, 1234,56"одна тысяча двести тридцать четыре рубля 56 копеек"). Скопируйте его в редактор VBA (Alt + F11):

Function RUB(Amount As Currency, Optional ShowKopecks As Boolean = True) As String

Dim Rubles As Variant, Kopecks As Variant

Dim Temp As String

Rubles = Application.WorksheetFunction.Floor(Amount, 1)

Kopecks = Application.WorksheetFunction.Round((Amount - Rubles) * 100, 0)

If Rubles = 0 Then

Temp = "ноль рублей"

Else

Temp = ConvertLessThanOneThousand(Rubles)

Temp = GetRubles(Rubles, Temp)

End If

If ShowKopecks Then

Temp = Temp & " " & ConvertLessThanOneThousand(Kopecks) & GetKopecks(Kopecks)

End If

RUB = Application.WorksheetFunction.Proper(Temp)

End Function

Function ConvertLessThanOneThousand(ByVal Amount)

Dim Result As String

If Amount = 0 Then Exit Function

Select Case Amount

Case 1 To 19: Result = Array("", "один", "два", "три", "четыре", "пять", "шесть", "семь", "восемь", "девять", _

"десять", "одиннадцать", "двенадцать", "тринадцать", "четырнадцать", _

"пятнадцать", "шестнадцать", "семнадцать", "восемнадцать", "девятнадцать")(Amount)

Case 20 To 99:

Result = Array("", "", "двадцать", "тридцать", "сорок", "пятьдесят", _

"шестьдесят", "семьдесят", "восемьдесят", "девяносто")(Amount \ 10)

If Amount Mod 10 <> 0 Then Result = Result & " " & ConvertLessThanOneThousand(Amount Mod 10)

Case 100 To 999:

Result = Array("", "сто", "двести", "триста", "четыреста", "пятьсот", _

"шестьсот", "семьсот", "восемьсот", "девятьсот")(Amount \ 100)

If Amount Mod 100 <> 0 Then Result = Result & " " & ConvertLessThanOneThousand(Amount Mod 10)

End Select

ConvertLessThanOneThousand = Result

End Function

Function GetRubles(ByVal Amount, ByVal Temp)

Dim Mod100 As Integer

Mod100 = Amount Mod 100

Select Case Mod100

Case 11 To 19: Temp = Temp & " рублей"

Case Else

Select Case Amount Mod 10

Case 1: Temp = Temp & " рубль"

Case 2, 3, 4: Temp = Temp & " рубля"

Case Else: Temp = Temp & " рублей"

End Select

End Select

GetRubles = Temp

End Function

Function GetKopecks(ByVal Amount)

Dim Temp As String

Select Case Amount

Case 11 To 19: Temp = "копеек"

Case Else

Select Case Amount Mod 10

Case 1: Temp = "копейка"

Case 2, 3, 4: Temp = "копейки"

Case Else: Temp = "копеек"

End Select

End Select

GetKopecks = Temp

End Function

После добавления кода в редакторе VBA сохраните файл как .xlsm (с поддержкой макросов). Теперь в любой ячейке можно использовать функцию:

=RUB(A1)

Макросы разрешены в настройках Excel (Файл → Параметры → Центр управления безопасностью)

Файл сохранён с расширением .xlsm (не .xlsx!)

Включён режим разработчика (Файл → Параметры → Настройка ленты → "Разработчик")

Тестирование проводится на копии оригинального файла (на случай ошибок)

-->

⚠️ Внимание: Макросы могут блокироваться антивирусами или корпоративными политиками безопасности. Если после вставки кода функция не появляется, проверьте настройки доверия к макросам в Файл → Параметры → Центр управления безопасностью.

Способ 4: Power Query для массовой обработки данных

Если вам нужно преобразовать большой массив чисел (например, столбец из 1000 строк), ручной ввод или даже VBA могут оказаться неэффективными. В этом случае поможет инструмент Power Query, встроенный в Excel начиная с версии 2016.

Алгоритм действий:

  1. Выделите исходный столбец с числами.
  2. Перейдите на вкладку ДанныеИз таблицы/диапазона (Excel автоматически преобразует данные в таблицу).
  3. В открывшемся редакторе Power Query выберите столбец → Добавить столбецПользовательский столбец.
  4. Введите формулу на языке M (пример для рублей без копеек):
    if [Column1] = 0 then "ноль рублей"
    

    else

    let

    units = {"", "один", "два", "три", "четыре", "пять", "шесть", "семь", "восемь", "девять"},

    teens = {"десять", "одиннадцать", "двенадцать", "тринадцать", "четырнадцать", "пятнадцать", "шестнадцать", "семнадцать", "восемнадцать", "девятнадцать"},

    tens = {"", "десять", "двадцать", "тридцать", "сорок", "пятьдесят", "шестьдесят", "семьдесят", "восемьдесят", "девяносто"},

    hundreds = {"", "сто", "двести", "триста", "четыреста", "пятьсот", "шестьсот", "семьсот", "восемьсот", "девятьсот"},

    number = Number.Abs([Column1]),

    rub = if number = 0 then "рублей" else

    let

    n = Number.Mod(number, 100),

    m = if n >= 11 and n <= 19 then "рублей" else

    let

    lastDigit = Number.Mod(n, 10)

    in

    if lastDigit = 1 then "рубль" else

    if lastDigit >= 2 and lastDigit <= 4 then "рубля" else "рублей"

    in m,

    text = // Логика преобразования числа в текст (упрощённо)

    if number < 20 then teens{number - 10} & " " & rub

    else if number < 100 then tens{Number.IntegerDivide(number, 10)} & " " & units{Number.Mod(number, 10)} & " " & rub

    else // ... (продолжение логики для сотен, тысяч и т.д.)

    in

    text

  5. Нажмите ОК, затем Закрыть и загрузить.

Этот метод требует знания языка M (формулы Power Query), но зато позволяет обрабатывать десятки тысяч строк без замедления работы Excel. Для упрощения задачи можно скачать готовые шаблоны Power Query с сайтов вроде Power BI Community.

Почему Power Query лучше VBA для больших данных?

Power Query оптимизирован для работы с большими массивами (миллионы строк) и не перегружает оперативную память, в отличие от VBA. Кроме того, запросы можно обновлять одним кликом при изменении исходных данных, тогда как макросы требуют повторного запуска.

Способ 5: Онлайн-конвертеры (для разовых задач)

Если вам нужно преобразовать числа в слова один раз и нет желания настраивать Excel, можно воспользоваться онлайн-сервисами. Они подойдут для небольших объёмов данных (до 100-200 чисел).

Популярные сервисы: