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

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

В этой статье мы разберём 3 проверенных метода, как преобразовать число в текст прописью — с учётом копеек, рублей, долларов и евро. Вы узнаете, как обойтись без программирования (если вы не разработчик), какие скрытые ограничения есть у стандартных функций Excel, и почему иногда проще использовать готовые надстройки. А ещё — как избежать типичных ошибок при работе с большими суммами (например, когда число превышает 999 триллионов).

Метод 1: Встроенная функция БАТЕКСТ (для русского языка)

Самый простой способ — использовать функцию БАТЕКСТ (в английской версии Excel — BAHTTEXT). Она была добавлена в Excel 2013 и работает только с тайским языком... но есть хитрость для русского!

Функция преобразует число в текст по правилам тайского языка, но если заменить символ валюты (бат) на рубли и скорректировать окончания, получится вполне читаемый результат. Формула выглядит так:

=ПОДСТАВИТЬ(ПОДСТАВИТЬ(БАТЕКСТ(A1);"бат";"руб.");"сантим";"коп.")

Где A1 — ячейка с числом. Например, для суммы 1234,56 функция вернёт: "Одна тысяча двести тридцать четыре руб. пятьдесят шесть коп.".

  • Плюсы: не требует VBA, работает во всех версиях Excel с 2013 года.
  • Минусы: не идеально склоняет слова (например, "один руб." вместо "один рубль"), не поддерживает миллиарды.
  • 🔧 Исправление: можно обернуть функцию в ПОДСТАВИТЬ для корректировки окончаний.

Метод 2: Пользовательская функция на VBA (для любых валют)

Если вам нужно 100% точное отображение суммы прописью с правильными окончаниями ("рубль", "рубля", "рублей"), придётся написать макрос. Вот готовый код для модуля VBA:

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

Dim RUB(3) As String, COP(3) As String, Temp As String

RUB(0) = "рубль": RUB(1) = "рубля": RUB(2) = "рублей"

COP(0) = "копейка": COP(1) = "копейки": COP(2) = "копеек"

MyNumber = Round(MyNumber, 2)

Temp = NumberToText(Int(MyNumber)) & " " & GetCurrency(Int(MyNumber), RUB) & " "

Temp = Temp & NumberToText((MyNumber - Int(MyNumber)) * 100) & " "

Temp = Temp & GetCurrency((MyNumber - Int(MyNumber)) * 100, COP)

SumProp = Temp

End Function

Function NumberToText(ByVal Number As Integer) As String

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

End Function

Function GetCurrency(ByVal Number As Integer, Currency() As String) As String

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

End Function

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

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

Добавить модуль в VBA|Скопировать код функции SumProp|Сохранить файл как .xlsm|Разрешить макросы при открытии

-->

Этот метод поддерживает:

  • 💰 Любые валюты (рубли, доллары, евро, тенге и др.).
  • 📊 Числа до 999 триллионов.
  • 🔄 Правильное склонение ("1 рубль", "2 рубля", "5 рублей").

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

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

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

НадстройкаСтоимостьПоддержка валютМакс. число
NumToTextБесплатноРубли, доллары, евро999 триллионов
RubToTextПлатная (~500 ₽)Только рубли/копейкиБез ограничений
Excel Number to WordsБесплатно15+ валют1018

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

  1. Скачайте файл .xlam с официального сайта.
  2. В Excel перейдите в Файл → Параметры → Надстройки.
  3. Нажмите Перейти... и выберите скачанный файл.
  4. Готово! Теперь можно использовать новую функцию, например =RUBTOTEXT(A1).

Встроенная функция БАТЕКСТ|VBA-макрос|Сторонняя надстройка|Пишу вручную|Другой способ-->

⚠️ Внимание: Бесплатные надстройки могут содержать рекламу или ограничения. Перед установкой проверьте отзывы и репутацию разработчика.

Ошибки и их решения

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

  • 🚫 "#ИМЯ?" — функция не распознаётся. Решение: проверьте регистр (например, БАТЕКСТ, а не батекст).
  • 🚫 "#ЗНАЧ!" — неверный формат ячейки. Решение: преобразуйте текст в число (=ЗНАЧЕН(A1)).
  • 🚫 Некорректные окончания ("1 руб." вместо "1 рубль"). Решение: используйте VBA-макрос или надстройку.
  • 🚫 Округление копеек (например, 56,1 копейки). Решение: округлите число до 2 знаков (=ОКРУГЛ(A1;2)).
  • 🚫 Ошибка при больших числах (более 999 млрд). Решение: разбейте число на части или используйте надстройку.
Почему функция БАТЕКСТ возвращает "######"?

Это происходит, если ширина столбца слишком мала для отображения полного текста. Растяните столбец или уменьшите шрифт.

Как автоматизировать процесс для большого количества ячеек

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

  1. Копирование формул: введите формулу в одну ячейку, затем потяните за правый нижний угол, чтобы скопировать её на весь столбец.
  2. Специальная вставка: скопируйте ячейку с формулой, выделите диапазон и выберите Главная → Вставить → Формулы.
  3. Power Query: импортируйте данные в Power Query и добавьте пользовательский столбец с функцией преобразования.
  4. Макрос для пакетной обработки: запишите макрос, который автоматически применит функцию ко всем ячейкам.

Пример макроса для пакетного преобразования:

Sub ConvertToText()

Dim rng As Range

For Each rng In Selection

rng.Offset(0, 1).Value = SumProp(rng.Value)

Next rng

End Sub

Этот код добавит текстовое представление суммы в ячейку справа от выделенного диапазона.

Сравнение методов: какой выбрать?

Выбор метода зависит от ваших задач:

КритерийБАТЕКСТVBA-макросНадстройка
Точность склонения❌ Средняя✅ Идеальная✅ Идеальная
Поддержка валют❌ Только рубли✅ Любые✅ Любые
Макс. число❌ До 999 млрд✅ Без ограничений✅ До 1018
Сложность настройки✅ Минимальная🔧 Средняя✅ Минимальная

💡 Рекомендация:

  • Для разовых задач (1–10 ячеек) подойдёт БАТЕКСТ.
  • Для регулярной работы с финансовыми документами лучше написать VBA-макрос.
  • Если вы не знаете VBA, используйте надстройки.

FAQ: Частые вопросы

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

Да, с помощью функции БАТЕКСТ (см. Метод 1) или сторонних надстроек (Метод 3). Однако точность склонения будет ниже, чем у макроса.

Почему макрос не работает в Excel Online?

Excel Online не поддерживает VBA-макросы. Используйте настольную версию Excel или надстройки.

Как добавить поддержку украинской гривны или казахстанского тенге?

В макросе SumProp (Метод 2) добавьте новые массивы для склонения валют, аналогично RUB() и COP(). Пример для гривны:

Dim UAH(3) As String

UAH(0) = "гривна": UAH(1) = "гривны": UAH(2) = "гривен"

Можно ли конвертировать отрицательные числа?

Да, но нужно доработать макрос. Добавьте проверку:

If MyNumber < 0 Then

SumProp = "Минус " & SumProp(Abs(MyNumber))

Exit Function

End If

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

Используйте формулы (Метод 1 или 3) или настройте автоматический пересчёт макросов в Файл → Параметры → Формулы (поставьте галочку "Автоматически").