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

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

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

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

Почему нельзя обойтись стандартными функциями Excel

На первый взгляд, задача кажется простой: есть число 1234,56, нужно получить текст "Одна тысяча двести тридцать четыре рубля 56 копеек". Однако в Excel нет встроенной функции вроде =ТЕКСТ.ПРОПИСЬЮ(), как, например, в или некоторых бухгалтерских программах. Причины этого кроются в архитектуре программы:

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

Во-вторых, поддержка разных языков и валют усложняет задачу. Например, в английской версии Excel потребовалась бы функция для преобразования 1234.56 в "One thousand two hundred thirty-four dollars and fifty-six cents". Microsoft не включает такие инструменты "из коробки", чтобы не усложнять интерфейс для большинства пользователей, которым они не нужны.

В-третьих, гибкость формата вывода — ещё один вызов. Пользователи хотят видеть сумму прописью в разных вариантах:

  • 📌 С заглавной буквы или строчными ("Тысяча" vs "тысяча")
  • 📌 С копейками или без ("56 копеек" vs округлённая сумма)
  • 📌 В разных падежах ("рубля", "рублей", "рублей")

Стандартные функции Excel не способны учесть все эти нюансы без дополнительного программирования.

📊 Какой способ преобразования чисел в пропись вы используете чаще?
Формулы Excel
VBA-макросы
Надстройки (например, "ЧислоПрописью")
Пишу вручную

Способ 1: Формулы Excel без VBA (для рублей)

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

Шаг 1. Создайте справочные таблицы

На отдельном листе (назовите его, например, "Справочник") создайте три таблицы:

  1. Единицы: от "ноль" до "девять"
  2. Десятки: "десять", "двадцать", ..., "девяносто"
  3. Сотни: "сто", "двести", ..., "девятьсот"

Добавьте также таблицы для тысяч, миллионов и миллиардов, если работаете с крупными суммами.

Шаг 2. Разбейте число на разряды

Используйте функции =ЦЕЛОЕ(), =ОСТАТ() и =ПРАВСИМВ(), чтобы выделить единицы, десятки, сотни и т.д. из исходного числа. Например, для числа в ячейке A1:

  • 🔢 Единицы: =ОСТАТ(A1; 10)
  • 🔢 Десятки: =ОСТАТ(ЦЕЛОЕ(A1/10); 10)
  • 🔢 Сотни: =ОСТАТ(ЦЕЛОЕ(A1/100); 10)

Шаг 3. Соберите текст из частей

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

Создать справочные таблицы с названиями чисел|

Выделить разряды (единицы, десятки, сотни) из исходного числа|

Подставить текстовые эквиваленты через ВПР|

Объединить части с учётом склонений ("рубль"/"рубля"/"рублей")|

Добавить обработку копеек (опционально)-->

Пример готовой формулы (упрощённая версия для чисел до 999):

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

СЦЕПИТЬ(

ЕСЛИ(ЦЕЛОЕ(A1/100)>0; ВПР(ЦЕЛОЕ(A1/100); Сотни!A:B; 2; ЛОЖЬ) & " "; "");

ЕСЛИ(ОСТАТ(ЦЕЛОЕ(A1/10);10)>0; ВПР(ОСТАТ(ЦЕЛОЕ(A1/10);10); Десятки!A:B; 2; ЛОЖЬ) & " "; "");

ВПР(ОСТАТ(A1;10); Единицы!A:B; 2; ЛОЖЬ);

" ";

ЕСЛИ(И(ОСТАТ(A1;100)>=11; ОСТАТ(A1;100)<=19); "рублей";

ЕСЛИ(ОСТАТ(A1;10)=1; "рубль";

ЕСЛИ(И(ОСТАТ(A1;10)>=2; ОСТАТ(A1;10)<=4); "рубля"; "рублей")))

)

)

⚠️ Внимание: Эта формула работает только для целых чисел до 999 рублей. Для полноценной обработки сумм с копейками и числами любой длины потребуется значительно более сложная конструкция или VBA.

Способ 2: Пользовательская функция на VBA (универсальный метод)

Наиболее надёжный и гибкий способ — создать пользовательскую функцию на языке VBA. Она будет работать с любыми суммами, поддерживать разные валюты и правильно склонять слова. Главный плюс: один раз написав код, вы сможете использовать функцию =СуммаПрописью() в любой книге Excel.

Шаг 1. Откройте редактор VBA

Нажмите комбинацию клавиш Alt + F11, чтобы открыть редактор Visual Basic for Applications. В меню выберите Insert → Module и вставьте следующий код:

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

Dim Рубли As Variant, Копейки As Variant

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

Dim МассивВалют(1 To 3) As String

' Определяем названия валют в зависимости от параметра

Select Case Валюта

Case "доллар": МассивВалют = Array("доллар", "доллара", "долларов")

Case "евро": МассивВалют = Array("евро", "евро", "евро")

Case Else: МассивВалют = Array("рубль", "рубля", "рублей")

End Select

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

Рубли = Int(Число)

Копейки = Round((Число - Рубли) * 100, 0)

' Преобразуем рубли в пропись

ТекстРублей = ЧислоПрописью(Рубли, True) & " " & Склонение(Рубли, МассивВалют)

' Преобразуем копейки (если есть)

If Копейки > 0 Then

ТекстКопеек = ЧислоПрописью(Копейки, False) & " " & Склонение(Копейки, Array("копейка", "копейки", "копеек"))

СуммаПрописью = ТекстРублей & " " & ТекстКопеек

Else

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

End If

End Function

' Вспомогательная функция для преобразования числа в пропись

Function ЧислоПрописью(Число As Long, МужскойРод As Boolean) As String

Dim ЕдиницыМ As Variant, ЕдиницыЖ As Variant, Десятки As Variant, Сотни As Variant

Dim Текст As String, Остаток As Long

' Массивы для мужского и женского рода

ЕдиницыМ = Array("", "один", "два", "три", "четыре", "пять", "шесть", "семь", "восемь", "девять")

ЕдиницыЖ = Array("", "одна", "две", "три", "четыре", "пять", "шесть", "семь", "восемь", "девять")

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

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

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

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

' Обработка миллиардов

If Число >= 1000000000 Then

Текст = ЧислоПрописью(Число \ 1000000000, МужскойРод) & " миллиард"

Остаток = Число Mod 1000000000

If Остаток > 0 Then Текст = Текст & " "

Else

Остаток = Число

End If

' Обработка миллионов

If Остаток >= 1000000 Then

Текст = Текст & ЧислоПрописью(Остаток \ 1000000, МужскойРод) & " миллион"

Остаток = Остаток Mod 1000000

If Остаток > 0 Then Текст = Текст & " "

End If

' Обработка тысяч

If Остаток >= 1000 Then

Текст = Текст & ЧислоПрописью(Остаток \ 1000, МужскойРод) & " тысяча"

Остаток = Остаток Mod 1000

If Остаток > 0 Then Текст = Текст & " "

End If

' Обработка сотен, десятков и единиц

If Остаток >= 100 Then

Текст = Текст & Сотни(Остаток \ 100)

Остаток = Остаток Mod 100

If Остаток > 0 Then Текст = Текст & " "

End If

If Остаток >= 20 Then

Текст = Текст & Десятки(Остаток \ 10)

Остаток = Остаток Mod 10

If Остаток > 0 Then Текст = Текст & " "

ElseIf Остаток >= 10 Then

Select Case Остаток

Case 10: Текст = Текст & "десять"

Case 11: Текст = Текст & "одиннадцать"

Case 12: Текст = Текст & "двенадцать"

Case 13: Текст = Текст & "тринадцать"

Case 14: Текст = Текст & "четырнадцать"

Case 15: Текст = Текст & "пятнадцать"

Case 16: Текст = Текст & "шестнадцать"

Case 17: Текст = Текст & "семнадцать"

Case 18: Текст = Текст & "восемнадцать"

Case 19: Текст = Текст & "девятнадцать"

End Select

Остаток = 0

End If

If Остаток > 0 Then

If МужскойРод Then

Текст = Текст & ЕдиницыМ(Остаток)

Else

Текст = Текст & ЕдиницыЖ(Остаток)

End If

End If

ЧислоПрописью = Текст

End Function

' Функция для правильного склонения валют

Function Склонение(Число As Long, Валюта As Variant) As String

Dim Остаток As Long

Остаток = Число Mod 100

If Остаток >= 11 And Остаток <= 19 Then

Склонение = Валюта(3)

Else

Остаток = Число Mod 10

Select Case Остаток

Case 1: Склонение = Валюта(1)

Case 2, 3, 4: Склонение = Валюта(2)

Case Else: Склонение = Валюта(3)

End Select

End If

End Function

Шаг 2. Используйте функцию в Excel

Теперь в любой ячейке можно ввести формулу:

  • 💰 Для рублей: =СуммаПрописью(A1)
  • 💵 Для долларов: =СуммаПрописью(A1; "доллар")
  • 💶 Для евро: =СуммаПрописью(A1; "евро")

Пример работы функции:

Число в A1ФормулаРезультат
1234,56=СуммаПрописью(A1)одна тысяча двести тридцать четыре рубля пятьдесят шесть копеек
5001=СуммаПрописью(A1)пять тысяч один рубль ноль копеек
999999,99=СуммаПрописью(A1; "доллар")девятьсот девяносто девять тысяч девятьсот девяносто девять долларов девяносто девять центов
1000000=СуммаПрописью(A1)один миллион рублей ноль копеек
0,01=СуммаПрописью(A1)ноль рублей одна копейка

Способ 3: Надстройки и сторонние решения

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

Популярные надстройки для Excel:

  • 📦 ЧислоПрописью — бесплатная надстройка с открытым исходным кодом. Поддерживает рубли, доллары, евро и гривны. Скачать на GitHub.
  • 📦 RubToStr — плагин с гибкими настройками формата вывода (заглавные буквы, сокращения и т.д.). Подходит для коммерческого использования.
  • 📦 Excel Number to Words — надстройка с поддержкой 20+ языков, включая русский. Есть пробная версия.

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

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

После установки в Excel появится новая функция (например, =RUBTOSTR() или =NUMTOWORDS()), которую можно использовать как стандартную.

⚠️ Внимание: Перед установкой надстроек от сторонних разработчиков проверьте их на вирусы и совместимость с вашей версией Excel. Некоторые плагины могут конфликтовать с корпоративными политиками безопасности.
Как удалить надстройку, если она работает некорректно?

Чтобы удалить надстройку, перейдите в Файл → Параметры → Надстройки, выберите Управление: Надстройки Excel → Перейти и снимите галочку напротив ненужного плагина. После этого перезапустите Excel. Если надстройка установлена как COM-добавка, удалите её через Панель управления → Программы и компоненты (Windows).

Обработка копеек и округление сумм

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

  • 💱 Выводить копейки всегда, даже если они равны 00 (например, для платёжных поручений).
  • 💱 Округлять сумму до целых рублей и не показывать копейки.
  • 💱 Округлять копейки до ближайшего целого (например, 1234,561235 рублей).

Примеры реализации:

1. Вывод копеек всегда (даже если 00):

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

=ЕСЛИ(

ОСТАТ(A1;1)=0;

СуммаПрописью(ЦЕЛОЕ(A1)) & " 00 копеек";

СуммаПрописью(A1)

)

2. Округление до целых рублей:

Используйте функцию =ОКРУГЛ() перед преобразованием:

=СуммаПрописью(ОКРУГЛ(A1; 0))

3. Округление копеек по правилам бухгалтерии:

Для округления до ближайшего целого (50 копеек и более — в большую сторону, менее 50 — в меньшую):

=СуммаПрописью(ОКРУГЛ(A1; 0) + ЕСЛИ(ОСТАТ(A1;1)>=0,5; 1; 0))
Исходная суммаТребованиеФормулаРезультат
1234,00Вывести копейки=СуммаПрописью(A1)одна тысяча двести тридцать четыре рубля ноль копеек
1234,49Округлить копейки=СуммаПрописью(ОКРУГЛ(A1;0))одна тысяча двести тридцать четыре рубля
1234,50Округлить по бух. правилам=СуммаПрописью(ОКРУГЛ(A1;0)+ЕСЛИ(ОСТАТ(A1;1)>=0,5;1;0))одна тысяча двести тридцать пять рублей

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

При преобразовании чисел в пропись пользователи часто сталкиваются с следующими проблемами:

1. Неправильное склонение валют

Ошибка: "два рубля" вместо "два рубля" (правильно) или "пять рублей" вместо "пять рублей" (правильно, но выглядит странно).

Решение: Используйте функцию склонения из VBA-примера выше или проверяйте формулы на тестовых данных: 1, 2, 5, 11, 21, 101, 105.

2. Ошибки с большими числами

Ошибка: Для числа 1000001 функция выдаёт "один миллион один" вместо "один миллион один рубль".

Решение: Убедитесь, что ваша формула или VBA-код корректно обрабатывает все разряды (тысячи, миллионы, миллиарды). В приведённом выше коде это реализовано через рекурсивный вызов функции ЧислоПрописью.

3. Проблемы с отрицательными числами

Ошибка: Для -1234 функция возвращает ошибку или некорректный текст.

Решение: Добавьте проверку знака в начале функции:

If Число < 0 Then

СуммаПрописью = "минус " & СуммаПрописью(Abs(Число), Валюта)

Exit Function

End If

4. Неправильная обработка нуля

Ошибка: Для 0 функция возвращает пустую строку или "ноль рублей ноль копеек" (что не всегда уместно).

Решение: Добавьте специальную обработку нуля:

If Число = 0 Then

СуммаПрописью = "ноль рублей ноль копеек"

Exit Function

End If

5. Проблемы с локализацией

Ошибка: На английской версии Excel русские названия чисел отображаются как ######.

Решение: Убедитесь, что в настройках региональных стандартов Windows выбрана Русская (Россия) локализация, или используйте шрифты с поддержкой кириллицы (например, Arial или Times New Roman).

Альтернативные решения: онлайн-сервисы и другие программы

Если Excel по какой-то причине не подходит для вашей задачи, рассмотрите альтернативные способы преобразования чисел в пропись:

1. Онлайн-конвертеры

Сервисы вроде Calculat.org или Summa-Propisyu.ru позволяют ввести сумму и получить текст прописью без регистрации. Минус: не подходит для автоматизации большого количества данных.

2. 1С и бухгалтерские программы

В 1С:Бухгалтерия, 1С:Зарплата и Управление Персоналом и других подобных системах есть встроенная функция вывода суммы прописью. Можно экспортировать данные из Excel в 1С, а затем обратно.

3. Google Таблицы

В Google Sheets также нет встроенной функции, но можно использовать Apps Script (аналог VBA) для создания кастомной функции. Пример кода:

function RUB(число) {

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

return результат;

}

4. Python и другие языки программирования

Если вы работаете с большими массивами данных, можно написать скрипт на Python с использованием библиотеки num2words:

from num2words import num2words

print(num2words(1234.56, lang='ru', to='currency', currency='RUB'))

Вывод: одна тысяча двести тридцать четыре рубля пятьдесят шесть копеек

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

Можно ли обойтись без VBA и формул? Есть ли более простой способ?

Да, если вам не нужно автоматизировать процесс для большого количества ячеек, можно использовать надстройки (например, ЧислоПрописью) или онлайн-конвертеры. Также в некоторых версиях Excel (начиная с 2016) доступны Power Query или Office Scripts, которые позволяют создавать кастомные преобразования без VBA.

Почему моя формула выдаёт ошибку #ИМЯ? при использовании пользовательской функции?

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

  • 🔴 Функция написана с опечаткой (например, =СуммаПрописьюу вместо =СуммаПрописью).
  • 🔴 Макросы отключены в настройках Excel (Файл → Параметры → Центр управления безопасностью → Параметры центра управления безопасностью → Параметры макросов).
  • 🔴 Код VBA не сохранён (закройте и снова откройте файл .xlsm).

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

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

СуммаПрописью = UCase(Left(СуммаПрописью, 1)) & LCase(Mid(СуммаПрописью, 2))

Для формул используйте функцию =ПРОПНАЧ():

=ПРОПНАЧ(СуммаПрописью(A1))

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

Да, для этого нужно:

  1. Добавить массивы с названиями чисел на украинском/казахском языке.
  2. Изменить