Как в Excel сделать, чтобы сумма писалась прописью: от простых формул до VBA

Почему Excel не умеет преобразовывать числа в текст прописью «из коробки»?

Microsoft Excel — мощнейший инструмент для работы с числовыми данными, но у него есть странный пробел: нет встроенной функции для преобразования чисел в текст прописью. В то время как бухгалтерские программы вроде или QuickBooks легко выводят «Один миллион двадцать три тысячи пятьсот рублей», Excel требует ручной настройки. Почему так?

Дело в локализации: в англоязычных версиях Excel есть функция BAHTTEXT() для тайского бата, но для русского, украинского или казахского языков аналога нет. Microsoft считает, что это задача для надстроек или пользовательских решений. К счастью, обойти ограничение можно пятью способами — от простых формул до автоматизации через VBA.

В этой статье разберём все методы — от универсальных (работают в Excel 2010–2023 и Office 365) до специализированных (например, для бухгалтерских документов с копейками). Вы узнаете, как:

  • 🔹 Преобразовать число в текст прописью без макросов (формулы + надстройки)
  • 🔹 Добавить рубли/доллары/евро с правильным склонением
  • 🔹 Автоматизировать процесс для тысяч строк через VBA
  • 🔹 Избежать ошибок с отрицательными числами и нулями
📊 Как часто вам нужно преобразовывать числа в текст прописью?
Ежедневно
Несколько раз в неделю
Редко, по необходимости
Никогда не пользовался

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

Если вам нужно быстрое решение без погружения в формулы, используйте бесплатные надстройки. Они добавляют в Excel новую функцию (например, =РУБЛИПРОПИСЬЮ(A1)), которая работает как родная.

Топ-3 проверенных надстройки:

  • 📌 NumWord — поддерживает русские рубли, доллары, евро и даже биткоины. Скачать с официального сайта.
  • 📌 ЧислоПрописью от PlanetaExcel — легковесная, работает в Excel 2007+.
  • 📌 RubToStr — специализирована на бухгалтерских документах (правильно склоняет «рубль/рубля/рублей»).

Как установить надстройку:

  1. Скачайте файл с расширением .xlam или .xlsm.
  2. Откройте Excel → Файл → Параметры → Надстройки.
  3. Нажмите «Перейти» → «Обзор» и выберите скачанный файл.
  4. Поставьте галочку напротив названия надстройки и нажмите «ОК».

☑️ Проверка работы надстройки

Выполнено: 0 / 4
⚠️ Внимание: Надстройки из ненадёжных источников могут содержать вредоносный код. Скачивайте только с официальных сайтов или проверенных репозиториев (например, GitHub). Если после установки Excel начинает «тормозить», отключите надстройку в параметрах.

Способ 2: Формулы без VBA (для Excel 2019 и новее)

Если надстройки не подходят, можно обойтись встроенными функциями Excel. Минус метода — формула получается громоздкой (до 500 символов), но зато не требует макросов.

Пример формулы для числа в ячейке A1 (до 999 999 рублей):

=ЕСЛИ(A1=0;"ноль";ЕСЛИ(A1<0;"минус ";"")&

ВЫБОР(ЦЕЛОЕ(ABS(A1)/1000000)+1;"один миллион ";"два миллиона ";"";"три миллиона ";"четыре миллиона ";"пять миллионов ";"шесть миллионов ";"семь миллионов ";"восемь миллионов ";"девять миллионов ")&

ВЫБОР(ЦЕЛОЕ(ОСТАТ(ABS(A1);1000000)/1000)+1;"одна тысяча ";"две тысячи ";"три тысячи ";"четыре тысячи ";"пять тысяч ";"шесть тысяч ";"семь тысяч ";"восемь тысяч ";"девять тысяч ")&

... [продолжение для сотен, десятков и единиц] &

ЕСЛИ(ОСТАТ(A1;1)=1;" рубль";ЕСЛИ(И(ОСТАТ(A1;100)>10;ОСТАТ(A1;100)<20);" рублей";ЕСЛИ(И(ОСТАТ(A1;10)>1;ОСТАТ(A1;10)<5);" рубля";" рублей")))

Полную версию формулы (на 1 000+ символов) можно скачать здесь. Она покрывает числа до 999 миллиардов и правильно склоняет валюту.

Как работает формула?

Формула разбивает число на части (миллионы, тысячи, сотни и т.д.), затем с помощью функции ВЫБОР() подставляет текстовые эквиваленты. Для склонения валют используется вложенная функция ЕСЛИ(), которая проверяет остаток от деления на 10 и 100.

Число в ячейке Результат формулы Примечание
1234,56 одна тысяча двести тридцать четыре рубля 56 копеек Копейки добавляются отдельной частью формулы
-500 минус пятьсот рублей Отрицательные числа поддерживаются
1000001 один миллион один рубль Правильное склонение для «рубль»
0 ноль рублей Нуль обрабатывается отдельным условием
⚠️ Внимание: Формула не работает с дробными числами (например, 1234.567). Для копеек/центов нужно отдельно умножать дробную часть на 100 и обрабатывать её как целое число.

Способ 3: VBA-макрос для профессионалов (гибкость + скорость)

Если вам нужно обрабатывать тысячи строк или кастомизировать вывод (например, добавить «включая НДС»), VBA — лучший выбор. Макрос работает в 10–100 раз быстрее формул и поддерживает:

  • 💰 Любые валюты (рубли, доллары, евро, тенге и др.)
  • 📊 Отрицательные числа и нули
  • ⚡ Дробные части (копейки, центы)
  • 🔄 Падежи («рублей», «рубля», «рубль»)

Код макроса для вставки в Alt + F11:

Function РублиПрописью(Число As Double, Optional Валюта As String = "руб") As String

Dim Рубль As String, Копейка As String, Текст As String

Select Case Валюта

Case "руб": Рубль = "рубль|рубля|рублей"; Копейка = "копейка|копейки|копеек"

Case "усд", "долл": Рубль = "доллар|доллара|долларов"; Копейка = "цент|цента|центов"

Case "евро": Рубль = "евро|евро|евро"; Копейка = "цент|цента|центов"

End Select

' Основная логика преобразования (упрощено)

Текст = ConvertLessThanOneThousand(Int(Число)) & " " & GetCurrencyForm(Int(Число), Рубль)

If Число - Int(Число) > 0 Then

Текст = Текст & " " & ConvertLessThanOneThousand(Round((Число - Int(Число)) 100, 0)) & " " & GetCurrencyForm(Round((Число - Int(Число)) 100, 0), Копейка)

End If

РублиПрописью = Текст

End Function

' Вспомогательные функции (полный код см. по ссылке)

Function ConvertLessThanOneThousand(ByVal Число As Integer) As String

' ... логика для чисел < 1000

End Function

Function GetCurrencyForm(ByVal Число As Integer, CurrencyForms As String) As String

' ... логика склонения валют

End Function

Как использовать:

  1. Нажмите Alt + F11, чтобы открыть редактор VBA.
  2. Вставьте код в модуль (Insert → Module).
  3. Сохраните файл как .xlsm (с поддержкой макросов).
  4. В ячейке используйте формулу =РублиПрописью(A1; "руб").

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

Если у вас Excel 2016+ или Office 365, можно использовать Power Query — инструмент для преобразования данных. Это актуально, если нужно обработать тысячи строк из внешних источников (например, выгрузки из 1С).

Алгоритм:

  1. Выделите исходные данные → Данные → Из таблицы/диапазона.
  2. В редакторе Power Query добавьте пользовательский столбец с формулой на языке M:
= (Число) =>

let

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

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

// ... остальной код (полная версия ~200 строк)

in

Текст & " " & Валюта

Преимущества метода:

  • 🔄 Обработка миллионов строк без «тормозов».
  • 🔄 Возможность сохранять шаги преобразования для повторного использования.
  • 🔄 Интеграция с другими источниками (SQL, CSV, JSON).
⚠️ Внимание: Power Query не поддерживает склонение валют «из коробки». Для правильного вывода «рубль/рубля/рублей» нужно дописывать логику вручную или комбинировать с VBA.

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

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

Топ-5 проверенных сервисов:

  • 🌐 Calculat.org — поддерживает рубли, доллары, евро и гривны.
  • 🌐 NumWord.com — расширенные настройки (падежи, регистр).
  • 🌐 AbakBot — для бухгалтерских документов (с НДС).
  • 🌐 PlanetCalc — калькулятор с историей вычислений.
  • 🌐 Студия Лебедева — минималистичный дизайн, без рекламы.

Как перенести результат в Excel:

  1. Скопируйте число из Excel.
  2. Вставьте в поле на сайте → получите текст прописью.
  3. Скопируйте результат и вставьте в Excel как значение (чтобы избежать формул).

Типичные ошибки и как их избежать

Даже с готовыми решениями пользователи сталкиваются с проблемами. Вот 5 самых частых ошибок и способы их исправления:

Ошибка Причина Решение
Формула выдаёт #ИМЯ? Опечатка в названии функции или отсутствует надстройка Проверьте регистр (например, =РУБЛИПРОПИСЬЮ, а не =рублипрописью)
Неправильное склонение («1 рубль» → «1 рублей») Ошибка в логике функции ЕСЛИ() Добавьте проверку на ОСТАТ(Число;100) для чисел 11–19
Макрос не работает в .xlsx Файл сохранён без поддержки макросов Сохраните как .xlsm и разрешите выполнение макросов
Отрицательные числа выводятся без «минус» В формуле нет обработки знака Добавьте ЕСЛИ(A1<0; "минус "; "") в начало формулы
Power Query «завис» на больших данных Слишком много строк или сложные преобразования Разбейте данные на части или оптимизируйте код на M

Если вы используете бухгалтерские шаблоны, проверьте:

  • 📋 Соответствие валюты в формуле и документе (например, не выводите «доллары» вместо «рублей»).
  • 📋 Правильность округления копеек (в России принято округление до 2 знаков).
  • 📋 Наличие пробелов между словами (иногда формулы «склеивают» текст).

FAQ: Ответы на частые вопросы

Можно ли преобразовать сумму прописью в Google Таблицах?

Да, но только через пользовательскую функцию на Google Apps Script. Вот пример кода:

function РублиПрописью(число) {

const единицы = ["", "один", "два", ..., "девять"];

const десятки = ["", "десять", "двадцать", ..., "девяносто"];

// ... остальной код (аналогично VBA)

return текст;

}

Чтобы использовать:

  1. Откройте Google Таблицу → Расширения → Apps Script.
  2. Вставьте код и сохраните.
  3. В ячейке используйте =РублиПрописью(A1).
Как добавить «включая НДС» или другие постфиксы?

Добавьте текст вручную после функции или модифицируйте макрос. Пример для VBA:

Function РублиПрописьюНДС(Число As Double) As String

РублиПрописьюНДС = РублиПрописью(Число) & " (включая НДС 20%)"

End Function

Почему в формуле не работает дробная часть (копейки)?

Формулы из примера выше обрабатывают только целую часть. Для копеек:

  1. Умножьте дробную часть на 100: =ОКРУГЛ((A1-ЦЕЛОЕ(A1))*100;0).
  2. Обработайте результат отдельной функцией (аналогично целой части).
  3. Объедините результаты: =РублиПрописью(ЦЕЛОЕ(A1)) & " " & КопейкиПрописью(ОКРУГЛ((A1-ЦЕЛОЕ(A1))*100;0)).
Можно ли автоматически заполнить прописью весь столбец?

Да, двумя способами:

  1. Протягивание формулы: Введите формулу в первую ячейку, затем протяните маркер автозаполнения вниз.
  2. VBA для массовой обработки: Используйте цикл For Each:
Sub ЗаполнитьСтолбецПрописью()

Dim ячейка As Range

For Each ячейка In Range("B1:B100")

ячейка.Value = РублиПрописью(ячейка.Offset(0, -1).Value)

Next ячейка

End Sub

Как сделать, чтобы первая буква была заглавной?

Используйте функцию ПРОПНАЧ() (для русского языка) или PROPER() (для английского):

=ПРОПНАЧ(РублиПрописью(A1))

Для VBA добавьте строку:

РублиПрописью = UCase(Left(Текст, 1)) & Mid(Текст, 2)