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

Бухгалтерам, финансовым аналитикам и менеджерам регулярно приходится оформлять документы, где суммы указываются не только цифрами, но и прописью. Вручную переписывать "1 254 389 рублей 78 копеек" — утомительно и чревато ошибками. К счастью, Microsoft Excel предлагает несколько способов автоматизировать этот процесс: от встроенных функций до пользовательских макросов.

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

В этой статье мы разберём 5 проверенных методов: от простейших функций до универсальных VBA-скриптов, которые работают с рублями, долларами, евро и даже криптовалютой. Вы узнаете, как избежать типичных ошибок (например, неправильного склонения "рубль/рубля/рублей") и научитесь настраивать вывод суммы прописью под конкретные задачи — будь то договор, счёт или финансовый отчёт.

———

1. Встроенная функция БАТТЕКСТ: плюсы и ограничения

Самый очевидный способ — использовать функцию =БАТТЕКСТ() (в английской версии — =DOLLAR() или =SPELLNUMBER() в зависимости от локализации). Она доступна только в Excel для Microsoft 365 и более новых версий, но зато не требует установки надстроек.

Формат функции прост:

=БАТТЕКСТ(число; [формат])

Где формат — необязательный аргумент, определяющий валютный стиль. Например:

  • 💰 =БАТТЕКСТ(1254,38; 1) → "Один тысяча двести пятьдесят четыре рубля 38 копеек"
  • 💵 =БАТТЕКСТ(1254,38; 2) → "Один тысяча двесот пятьдесят четыре доллара 38 центов"
  • 💶 =БАТТЕКСТ(1254,38; 3) → "Мил двести пятьдесят четыре евро 38 центов"

Однако у БАТТЕКСТ есть критические недостатки:

⚠️ Внимание: Функция не поддерживает склонение валют по падежам (например, "рублей" вместо "рубля" для сумм от 5 до 20). Также она округлит копейки/центы до целых, если дробная часть равна нулю — это может исказить финансовые документы.
ПроблемаПримерРезультат БАТТЕКСТОжидаемый результат
Склонение валюты1005 рублей"Одна тысяча пять рублей""Одна тысяча пять рублей"
Нулевые копейки100,00"Сто рублей""Сто рублей 00 копеек"
Отрицательные числа-150,25"Минус сто пятьдесят рублей 25 копеек""Минус сто пятьдесят рублей 25 копеек"

Если вам нужна 100% точность для официальных документов, лучше использовать альтернативные методы.

📊 Какой версии Excel вы пользуетесь?
Microsoft 365 (подписка)
Excel 2019
Excel 2016
Excel 2013 или старше
Не знаю

2. Пользовательская функция на VBA: универсальное решение

Для тех, кто работает с Excel 2010–2019 или нуждается в гибкой настройке, оптимальный вариант — создать собственную функцию на VBA. Она будет корректно склонять валюту, обрабатывать копейки и даже поддерживать несколько языков.

Откройте редактор VBA (Alt + F11), вставьте новый модуль (Insert → Module) и скопируйте этот код:

Function SumProp(ByVal MyNumber As Currency, Optional MyCurrency As String = "руб") As String

Dim RUB As Variant, Kop As Variant, Temp As String

Dim DecimalPlace As Integer, Count As Integer

' Массивы для склонения валют

RUB = Array("рубль", "рубля", "рублей")

Kop = Array("копейка", "копейки", "копеек")

' Обработка отрицательных чисел

If MyNumber < 0 Then

SumProp = "Минус "

MyNumber = Abs(MyNumber)

End If

' Разделение на рубли и копейки

DecimalPlace = InStr(MyNumber, ",")

If DecimalPlace > 0 Then

Temp = Mid(MyNumber, DecimalPlace + 1)

Count = Len(Temp)

If Count = 1 Then Temp = Temp & "0"

KopSum = Right(Temp, 2)

MyNumber = Left(MyNumber, DecimalPlace - 1)

Else

KopSum = "00"

End If

' Преобразование чисел в текст

SumProp = SumProp & ConvertLessThanOneThousand(MyNumber) & GetCurrency(MyNumber, RUB)

SumProp = SumProp & " " & KopSum & " " & GetCurrency(KopSum, Kop, True)

' Удаление лишних пробелов

SumProp = Application.WorksheetFunction.Trim(SumProp)

End Function

' Вспомогательные функции

Private Function ConvertLessThanOneThousand(ByVal MyNumber As String) As String

' ... (полный код функции см. в источнике)

End Function

Private Function GetCurrency(ByVal MyNumber As Variant, CurrencyArray As Variant, Optional IsKop As Boolean = False) As String

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

End Function

После вставки кода функция =SumProp() станет доступна в Excel. Примеры использования:

  • 📌 =SumProp(1254,38) → "Одна тысяча двести пятьдесят четыре рубля 38 копеек"
  • 📌 =SumProp(1005; "USD") → "Одна тысяча пять долларов 00 центов"
  • 📌 =SumProp(-200,50; "EUR") → "Минус двести евро 50 центов"
⚠️ Внимание: При первом использовании VBA Excel может заблокировать макросы по соображениям безопасности. Разрешите их выполнение в Файл → Параметры → Центр управления безопасностью → Параметры центра..., выбрав "Включить все макросы".

Включить вкладку "Разработчик" в настройках Excel|Создать резервную копию файла|Проверить настройки безопасности макросов|Сохранить файл в формате .xlsm (с поддержкой макросов)-->

3. Надстройки от сторонних разработчиков: быстро и без кода

Если вам не хочется возиться с формулами или VBA, можно установить готовые надстройки. Они обычно предлагают расширенные возможности: поддержку нескольких валют, настройку форматов вывода и даже интеграцию с 1С.

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

НадстройкаСтоимостьОсобенностиСсылка
Рубли ПрописьюБесплатноТолько для рублей, простой интерфейсСкачать
NumWordОт 500 ₽18 валют, склонение по падежам, экспорт в WordСайт
Excel Add-in Pro1 200 ₽/годВключает сумму прописью + 50 других функцийДемо

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

  1. Скачайте файл с расширением .xlam или .xlsm.
  2. В Excel перейдите в Файл → Параметры → Надстройки → Управление надстройками Excel → Перейти....
  3. Нажмите "Обзор", выберите скачанный файл и подтвердите установку.
  4. Новая функция (например, =RUBPROP()) появится в списке формул.

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

  • ✅ Не требуют знания VBA
  • ✅ Часто обновляются (в отличие от самописных макросов)
  • ✅ Поддержка технической службы

Недостатки:

  • ❌ Плагины могут конфликтовать с другими надстройками
  • ❌ Риск установки вредоносного ПО (скачивайте только с официальных сайтов!)

4. Формулы без VBA: сложно, но возможно

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

Пример формулы для суммы в рублях (вставляйте в одну ячейку!):

=ЕСЛИ(A1<0;"Минус ";"") &

ЕСЛИ(ЦЕЛОЕ(ABS(A1))=0;"";ЧИСЛТЕКСТ(ЦЕЛОЕ(ABS(A1))) & " ") &

ЕСЛИ(И(МОД(ЦЕЛОЕ(ABS(A1));100)>=11;МОД(ЦЕЛОЕ(ABS(A1));100)<=19);" рублей";

ЕСЛИ(МОД(ЦЕЛОЕ(ABS(A1));10)=1;" рубль";

ЕСЛИ(И(МОД(ЦЕЛОЕ(ABS(A1));10)>=2;МОД(ЦЕЛОЕ(ABS(A1));10)<=4);" рубля";" рублей"))) &

ЕСЛИ(ОКРУГЛ(ABS(A1)-ЦЕЛОЕ(ABS(A1));2)*100=0;"";" " &

ТЕКСТ(ОКРУГЛ((ABS(A1)-ЦЕЛОЕ(ABS(A1)))*100;0);"00") & " " &

ЕСЛИ(И(ОКРУГЛ((ABS(A1)-ЦЕЛОЕ(ABS(A1)))*100;0)>=11;ОКРУГЛ((ABS(A1)-ЦЕЛОЕ(ABS(A1)))*100;0)<=19);" копеек";

ЕСЛИ(МОД(ОКРУГЛ((ABS(A1)-ЦЕЛОЕ(ABS(A1)))*100;0);10)=1;" копейка";

ЕСЛИ(И(МОД(ОКРУГЛ((ABS(A1)-ЦЕЛОЕ(ABS(A1)))*100;0);10)>=2;МОД(ОКРУГЛ((ABS(A1)-ЦЕЛОЕ(ABS(A1)))*100;0);10)<=4);" копейки";" копеек")))

Как это работает:

  1. ЧИСЛТЕКСТ() — преобразует целую часть числа в текст (доступна с Excel 2013).
  2. МОД() и вложенные ЕСЛИ() — обрабатывают склонение валют.
  3. ОКРУГЛ() — корректно выделяет копейки.
⚠️ Внимание: Эта формула не работает с числами больше 999 999 999,99 из-за ограничений функции ЧИСЛТЕКСТ(). Для миллиардов потребуется разбивать число на части или использовать VBA.
Альтернатива для Excel 2007–2010

В старых версиях вместо ЧИСЛТЕКСТ() можно использовать комбинацию функций ПОИСКПОЗ() и массивов с названиями чисел (единицы, десятки, сотни). Однако такой подход требует создания отдельной таблицы соответствий и значительно усложняет формулу. Пример реализации см. в этом гайде.

5. Сумма прописью для других валют: доллары, евро, тенге

Если вам нужно оформить сумму в долларах, евро или другой валюте, достаточно модифицировать базовую функцию. Для VBA-решения это делается через дополнительный аргумент, для формул — заменой названий валют.

Примеры для разных валют:

  • 💲 Доллары:
    =SumProp(1254,38; "USD")

    Результат: "One thousand two hundred fifty-four dollars 38 cents"

  • 💶 Евро:
    =SumProp(1254,38; "EUR")

    Результат: "Mille deux cent cinquante-quatre euros 38 cents"

  • Тенге (Казахстан):
    =SumProp(1254,38; "KZT")

    Результат: "Оң мың екі жүз елу төрт теңге 38 тиын"

Для мультивалютных документов удобно создать отдельную таблицу соответствий:

Код валютыНазваниеЕдиницыДробные
RUBРоссийский рубльрубль/рубля/рублейкопейка/копейки/копеек
USDДоллар СШАdollar/dollarscent/cents
EURЕвроeuro/euroscent/centimes
KZTКазахстанский тенгетеңгетиын

Затем в VBA-функцию добавляется логика выбора валюты по коду:

Select Case MyCurrency

Case "USD", "DOLLAR"

RUB = Array("dollar", "dollars")

Kop = Array("cent", "cents")

Case "EUR", "EURO"

RUB = Array("euro", "euros")

Kop = Array("cent", "cents")

Case Else ' По умолчанию - рубли

RUB = Array("рубль", "рубля", "рублей")

Kop = Array("копейка", "копейки", "копеек")

End Select

6. Автоматизация для бухгалтерских документов

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

Пример структуры шаблона счета:

  • 📄 Ячейка A1: Название документа ("Счёт на оплату №123").
  • 📄 Ячейка B5: Сумма цифрами (например, 12 345,67).
  • 📄 Ячейка B6: Формула суммы прописью:
    =ЕСЛИ(B5="";"";SumProp(B5))
  • 📄 Ячейка A10: Реквизиты банка (подтягиваются из другой таблицы по ВПР()).

Дополнительные фишки для бухгалтеров:

  • 🔹 Проверка контрольной суммы: Сравните цифровое и текстовое значение с помощью =ЕСЛИ(B5=ЗНАЧЕН(SumProp(B5));"OK";"ОШИБКА").
  • 🔹 Автонумерация документов: Используйте =ТЕКСТ(СЕГОДНЯ();"ггггммдд")&"-"&СЧЁТЕСЛИ(Лист2!A:A;"*")+1 для генерации уникальных номеров.
  • 🔹 Экспорт в Word: Надстройка Kutools for Excel позволяет конвертировать таблицы в документ Word с сохранением форматирования.
⚠️ Внимание: При печати документов с суммами прописью убедитесь, что в настройках принтера отключено "масштабирование по размеру страницы" (Файл → Печать → Параметры принтера). Иначе длинные тексты могут обрезаться.
📊 Какие документы вы чаще всего оформляете с суммами прописью?
Счета на оплату
Договоры
Акты выполненных работ
Платёжные поручения
Другое

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

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

ОшибкаПричинаРешение
#ИМЯ?Опечатка в названии функции или отсутствует надстройкаПроверьте регистр (например, SumProp, а не sumprop)
Неправильное склонение ("1 рубль" вместо "1 рубля")Ошибка в логике VBA или формулыИспользуйте тестовую таблицу для проверки склонений (см. раздел 4)
Округление копеек (например, 99,99 → "99 рублей 99 копеек", а 100,00 → "100 рублей")Функция игнорирует нулевые копейкиДобавьте в формулу проверку: =ЕСЛИ(ОКРУГЛ((A1-ЦЕЛОЕ(A1))*100;0)=0;"00 копеек";...)
Медленная работа файлаСлишком много вызовов VBA-функцийЗамените формулы на значения (Копировать → Специальная вставка → Значения)
Сумма на английском вместо русскогоНеверные региональные настройкиУстановите русский язык по умолчанию в Файл → Параметры → Язык

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

  1. Тестируйте функцию на крайних значениях: 0, 1, 5, 11, 21, 99, 100, 999, 1000.
  2. Проверяйте отрицательные числа и дробные части (например, -123,45).
  3. Сравнивайте результат с эталонными сервисами (например, NumWord).

Если ошибка повторяется, воспользуйтесь отладчиком VBA (F8 для пошагового выполнения кода).

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

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

Да, но с ограничениями. В Google Таблицах нет аналога БАТТЕКСТ(), но можно:

  1. Использовать надстройки (например, Number to Words).
  2. Подключить скрипт на Google Apps Script (аналог VBA). Пример кода см. здесь.
  3. Экспортировать данные в Excel, обработать там и импортировать обратно.
❓ Почему функция возвращает "######" вместо текста?

Это означает, что ширина столбца недостаточна для отображения длинного текста. Решения:

  • Расширьте столбец двойным кликом по правой границе заголовка.
  • Примените перенос текста (Главная → Перенос текста).
  • Уменьшите шрифт или измените ориентацию текста (Главная → Ориентация → Повернуть текст).
❓ Как написать сумму прописью с заглавной буквы?

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

=ПРОПИСН(ЛЕВСИМВ(SumProp(A1);1)) & СТРОЧН(ПРАВСИМВ(SumProp(A1);ДЛСТР(SumProp(A1))-1))

Или в VBA добавьте строку:

SumProp = UCase(Left(SumProp, 1)) & LCase(Right(SumProp, Len(SumProp) - 1))
❓ Работает ли этот метод в Excel Online?

Частично. В Excel Online:

  • ✅ Работает БАТТЕКСТ() (если у вас подписка Microsoft 365).
  • Не работают пользовательские функции VBA и надстройки.
  • ⚠️ Формулы без VBA (раздел 4) работают, но могут тормозить при большом объёме данных.

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

❓ Как добавить сумму прописью в пользовательскую форму Excel?

Если вы создаёте форму с помощью Вставка → Формы или Power Apps:

  1. Свяжите поле формы с ячейкой, где хранится числовое значение.
  2. В другой ячейке используйте формулу суммы прописью.
  3. Настройте форму так, чтобы она отображала текст из второй ячейки (например, через СЦЕПИТЬ() или ТЕКСТ()).

Для Power Apps потребуется создать отдельную функцию на Power Fx или интегрировать Excel через Power Automate.