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

Почему сумма прописью в Excel — это не роскошь, а необходимость

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

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

Прежде чем переходить к инструкциям, ответьте на один вопрос: какой способ вам ближе?

📊 Как вы обычно работаете с суммами прописью в Excel?
Ввожу вручную
Использую формулы
Пишу макросы
У меня есть готовая надстройка
Не работал с этим ранее

Способ 1: Готовая формула для рублей (без VBA)

Если вам нужно быстро преобразовать сумму в рубли прописью без использования макросов, этот метод подойдёт идеально. Мы будем использовать комбинацию функций ТЕКСТ, ВЫБОР и вложенных ЕСЛИ. Формула работает для чисел до 999 999 999,99 и корректно склоняет "рубль", "рубля", "рублей".

Вставьте этот код в ячейку, где должна отображаться сумма прописью (например, =РублиПрописью(A1)):

=ЕСЛИ(A1=0;"ноль рублей";

ЕСЛИ(A1<0;РублиПрописью(-A1)&" минус ";

ЕСЛИ(ЦЕЛОЕ(A1)=0;"";РублиПрописью(ЦЕЛОЕ(A1)));

)&ЕСЛИ(ОСТАТ(A1;1)=0;"";" и "&РублиПрописью((A1-ЦЕЛОЕ(A1))*100)&" копеек"))

Затем создайте именованную функцию РублиПрописью через Формулы → Диспетчер имён → Создать. В поле "Формула" вставьте:

=ЕСЛИ(ИЛИ(A1=0;A1="");"";

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

ЕСЛИ(A1<20;ВЫБОР(A1-9;"десять";"одиннадцать";"двенадцать";"тринадцать";"четырнадцать";"пятнадцать";"шестнадцать";"семнадцать";"восемнадцать";"девятнадцать");

ЕСЛИ(A1<100;ДОЛЯ_ДЕСЯТКОВ(ЦЕЛОЕ(A1/10))&ЕСЛИ(ОСТАТ(A1;10)=0;"";" "&РублиПрописью(ОСТАТ(A1;10)));РублиПрописью(ЦЕЛОЕ(A1/100))&" "&ДОЛЯ_СОТЕН(ОСТАТ(ЦЕЛОЕ(A1);100))&ЕСЛИ(ОСТАТ(A1;100)=0;"";" "&РублиПрописью(ОСТАТ(A1;100)))))))

Дополнительно создайте ещё две именованные функции:

  • 📌 ДОЛЯ_ДЕСЯТКОВ:
    =ВЫБОР(A1;"десять";"двадцать";"тридцать";"сорок";"пятьдесят";"шестьдесят";"семьдесят";"восемьдесят";"девяносто")
  • 📌 ДОЛЯ_СОТЕН:
    =ВЫБОР(A1;"сто";"двести";"триста";"четыреста";"пятьсот";"шестьсот";"семьсот";"восемьсот";"девятьсот")

Скопируйте основную формулу в нужную ячейку

Создайте 3 именованные функции через Диспетчер имён

Проверьте работу на тестовых данных (0, 1, 15, 100, 123,45)

Настройте формат ячейки как "Общий" или "Текстовый"-->

Способ 2: VBA-макрос для универсального преобразования

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

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

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

Dim Rubl As String, Kop As String, Temp As String

Dim DecimalPlace As Integer, Count As Integer

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

If MyNumber < 0 Then

SumProp = "минус " & SumProp(-MyNumber, MyCurrency)

Exit Function

End If

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

DecimalPlace = InStr(MyNumber, ",")

If DecimalPlace > 0 Then

Temp = Mid(MyNumber, DecimalPlace + 1)

Kop = WorksheetFunction.Round(Temp / 100, 2) * 100

MyNumber = Left(MyNumber, DecimalPlace - 1)

Else

Kop = "00"

End If

' Преобразование рублей

Rubl = ConvertLessThanOneThousand(MyNumber, MyCurrency, "рубль", "рубля", "рублей")

' Преобразование копеек

If Kop <> "00" Then

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

SumProp = Rubl & " и " & Kop

Else

SumProp = Rubl

End If

End Function

Function ConvertLessThanOneThousand(ByVal MyNumber As Variant, MyCurrency As String, _

Unit1 As String, Unit2 As String, Unit5 As String) As String

Dim Txt As String, i As Integer

Dim Ones() As String, Tens() As String, Hundreds() As String

' Массивы для слов

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

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

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

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

"шестьдесят", "семьдесят", "восемьдесят", "девяносто")

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

"шестьсот", "семьсот", "восемьсот", "девятьсот")

' Обработка чисел < 1000

If Val(MyNumber) = 0 Then Exit Function

MyNumber = Right("000" & MyNumber, 3)

' Сотни

If Mid(MyNumber, 1, 1) <> "0" Then

Txt = Hundreds(Mid(MyNumber, 1, 1))

End If

' Десятки и единицы

If Mid(MyNumber, 2, 1) = "1" Then

Txt = Txt & " " & Ones(Val(Mid(MyNumber, 2, 2)) + 1)

Else

Txt = Txt & " " & Tens(Val(Mid(MyNumber, 2, 1)))

If Mid(MyNumber, 3, 1) <> "0" Then

Txt = Txt & " " & Ones(Val(Mid(MyNumber, 3, 1)))

End If

End If

' Склонение валют

i = Val(Mid(MyNumber, 3, 1))

If i = 1 Then Txt = Txt & " " & Unit1

If i > 1 And i < 5 Then Txt = Txt & " " & Unit2

If i = 0 Or i >= 5 Then Txt = Txt & " " & Unit5

ConvertLessThanOneThousand = Application.WorksheetFunction.Trim(Txt)

End Function

Теперь в любой ячейке можно использовать функцию =SumProp(A1; "руб") для рублей или =SumProp(A1; "USD") для долларов (склонение будет автоматически подстроено под валюту).

Способ 3: Надстройка "ЧислоПрописью" — готовое решение

Если вам не хочется возиться с формулами или VBA, можно установить бесплатную надстройку ЧислоПрописью от Excel-Addins.ru. Она поддерживает:

  • 💰 Все основные валюты (рубли, доллары, евро, гривны и др.)
  • 📊 Числа до 999 триллионов
  • 🔄 Автоматическое склонение валют
  • 📑 Отрицательные числа и ноль

Установка занимает 2 минуты:

  1. Скачайте файл ЧислоПрописью.xlam с официального сайта.
  2. Перейдите в Файл → Параметры → Надстройки → Управление: Надстройки Excel → Перейти.
  3. Нажмите "Обзор", выберите скачанный файл и подтвердите установку.

После установки в Excel появится новая функция =ЧислоПрописью(A1; "RUR"). Аргументы:

  • A1 — ячейка с числом
  • "RUR" — код валюты (USD, EUR, UAH и др.)
  • 1 (необязательно) — режим с копейками/центами
Код валюты Пример вывода Склонение
RUR сто двадцать три рубля пятьдесят копеек рубль/рубля/рублей
USD one hundred twenty-three dollars fifty cents dollar/dollars
EUR cent vingt-trois euros cinquante centimes euro/euros
UAH сто двадцять три гривні п'ятдесят копійок гривня/гривні/гривень
Как удалить надстройку, если она не понадобилась?

Перейдите в Файл → Параметры → Надстройки, выберите ЧислоПрописью в списке и нажмите "Перейти". В открывшемся окне снимите галочку и подтвердите удаление. Файл .xlam останется на вашем компьютере, но перестанет влиять на Excel.

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

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

Инструкция:

  1. Выделите исходные данные и перейдите на вкладку Данные → Из таблицы/диапазона (или Получить данные → Из таблицы/диапазона в новых версиях).
  2. В открывшемся редакторе Power Query выберите столбец с суммами, кликните правой кнопкой и выберите Дублировать столбец.
  3. Кликните по дубликату правой кнопкой и выберите Преобразовать → В текст.
  4. Создайте новый пользовательский столбец с формулой:
    = Number.ToText([Сумма], "ru-RU", "RUB")

    Для долларов используйте "en-US" и "USD".

  5. Замените полученный текстовый формат на нужный вам шаблон с помощью функции Text.Replace (например, замените "RUB" на "рублей").
  6. Нажмите Закрыть и загрузить, чтобы вернуть данные в Excel.

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

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

Если вам нужно преобразовать сумму прописью один-два раза, проще воспользоваться онлайн-сервисами. Мы протестировали 5 популярных инструментов и выбрали лучшие:

Сервис Ссылка Плюсы Минусы
Числа прописью num-word.ru ✅ Поддержка 10 валют
✅ Склонение по падежам
❌ Реклама
❌ Ограничение 1 000 000
CalcSoft calcsoft.ru ✅ Экспорт в Word/Excel
✅ История расчётов
❌ Требует регистрации
TextFromNumber textfromnumber.com ✅ 20+ языков
✅ API для разработчиков
❌ Англоязычный интерфейс

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

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

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

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

⚠️ Внимание: Если сумма прописью отображается как ########, проверьте ширину столбца — текст может не помещаться в ячейку. Растяните столбец или включите перенос текста (Главная → Перенос текста).
  • 🔢 Некорректное склонение валют (например, "1 рубль" вместо "1 рубля"):

    Проблема возникает, если в формуле или макросе не учтено склонение для чисел 1, 2-4 и 5+. Проверьте логику функции ConvertLessThanOneThousand в VBA или используйте надстройку с поддержкой склонения.

  • 💱 Отрицательные числа выводятся без слова "минус":

    Добавьте в начало формулы проверку на отрицательность:

    =ЕСЛИ(A1<0; "минус " & ВашаФормула(-A1); ВашаФормула(A1))

  • 📉 Копейки/центы отображаются как 00:

    Убедитесь, что исходное число имеет дробную часть (например, 123,45, а не 123). Если данных нет, добавьте искусственно:

    =ВашаФормула(A1 & ",00")

⚠️ Внимание: При использовании VBA-макросов в Excel Online или мобильной версии они работать не будут — эти платформы не поддерживают выполнение макросов. Используйте формулы или надстройки.

FAQ: Частые вопросы по сумме прописью в Excel

Можно ли сделать сумму прописью на английском языке?

Да, для этого:

  • В VBA-макросе замените массивы Ones, Tens и Hundreds на английские эквиваленты (one, two, twenty и т. д.).
  • В надстройке "ЧислоПрописью" используйте код валюты USD или EUR — текст будет на английском.
  • В Power Query замените локаль с "ru-RU" на "en-US".

Пример английской версии VBA:

Ones = Array("", "one", "two", "three", ..., "nineteen")

Tens = Array("", "ten", "twenty", "thirty", ...)

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

Используйте функцию =ПРОПНАЧ(ВашаФормула) для первой буквы или =ПРОПИСН(ЛЕВСИМВ(ВашаФормула)) & ПРАВСИМВ(ВашаФормула;ДЛСТР(ВашаФормула)-1) для полного контроля:

=ПРОПИСН(ЛЕВСИМВ(РублиПрописью(A1))) & ПРАВСИМВ(РублиПрописью(A1);ДЛСТР(РублиПрописью(A1))-1)

Для VBA добавьте в конец функции SumProp строку:

SumProp = UCase(Left(SumProp, 1)) & Mid(SumProp, 2)

Почему формула выдаёт ошибку #ИМЯ?

Ошибка #ИМЯ! возникает, если:

  • Вы не создали именованные функции (для Способа 1).
  • В формуле есть опечатка (например, =РублиПрописьюу вместо =РублиПрописью).
  • Ячейка с исходными данными содержит текст вместо числа.

Решение: проверьте Диспетчер имён (Формулы → Диспетчер имён) и синтаксис формулы.

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

Все описанные методы (кроме онлайн-сервисов) обновляются автоматически:

  • Формулы: обновляются при любом изменении исходных данных.
  • VBA: если макрос написан как функция (Function), он пересчитывается при изменении зависимых ячеек.
  • Power Query: обновите запрос через Данные → Обновить все.

Если обновление не происходит, проверьте настройки вычислений (Формулы → Параметры вычислений → Автоматически).

Можно ли использовать эту функцию в Google Таблицах?

В Google Sheets нет встроенной функции для суммы прописью, но есть обходные пути:

  1. Скрипт Apps Script: аналогично VBA, но на JavaScript. Пример кода:
    function RUBLES(number) {
    

    // Логика преобразования (аналогично VBA)

    return result;

    }

    Чтобы использовать, перейдите в Расширения → Apps Script, вставьте код и сохраните. В таблице вызовите функцию как =RUBLES(A1).

  2. Надстройки: в Расширения → Надстройки найдите "Number to Words Converter".