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

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

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

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

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

Способ 1: Использование стандартных функций Excel (без VBA)

Если вы не хотите углубляться в программирование, можно обойтись комбинацией стандартных функций. Этот метод подходит для сумм до 999 999 рублей и не требует установки дополнительных надстроек. Основной инструмент здесь — функция ВЫБОР, которая позволяет сопоставлять числам их текстовые эквиваленты.

Пример формулы для преобразования числа от 0 до 999:

=ЕСЛИ(A1=0;"ноль";

ТЕКСТ(ЦЕЛОЕ(A1/100);"0")&""&ВЫБОР(ЦЕЛОЕ(A1/100);"";"сто";"двести";"триста";"четыреста";"пятьсот";"шестьсот";"семьсот";"восемьсот";"девятьсот")&""

&ВЫБОР(ЦЕЛОЕ(ОСТАТ(A1;100)/10);"";"десять";"двадцать";"тридцать";"сорок";"пятьдесят";"шестьдесят";"семьдесят";"восемьдесят";"девяносто")&""

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

&ЕСЛИ(И(ОСТАТ(A1;100)>=10;ОСТАТ(A1;100)<=19);

ВЫБОР(ОСТАТ(A1;100)-9;"десять";"одиннадцать";"двенадцать";"тринадцать";"четырнадцать";"пятнадцать";"шестнадцать";"семнадцать";"восемнадцать";"девятнадцать");"")

)&" руб."&ЕСЛИ(ОСТАТ(A1;1)<>1;"ей";ЕСЛИ(И(ОСТАТ(A1;100)>=11;ОСТАТ(A1;100)<=19);"ей";ЕСЛИ(ОСТАТ(A1;10)>=2;ОСТАТ(A1;10)<=4;"ля";"ль"))))

Эта формула работает следующим образом:

  • 🔢 Разбивает число на сотни, десятки и единицы
  • 📝 Подставляет текстовые эквиваленты для каждого разряда
  • 💰 Корректно склоняет слово"рубль" в зависимости от числа
  • ⚠️ Не обрабатывает копейки и числа больше 999
⚠️ Внимание: При копировании формулы в вашу таблицу замените точку с запятой (;) на запятую (,) если у вас английская версия Excel. Также учтите, что эта формула не обрабатывает отрицательные числа и дробные части (копейки).
📊 Как часто вам нужно преобразовывать суммы прописью в Excel?
Ежедневно
Несколько раз в неделю
Редко, по необходимости
Никогда не пользовался

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

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

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

  • 📌 NumWord — бесплатная надстройка с поддержкой русского языка, работает с суммами до 999 триллионов
  • 💎 Рубль — платное решение с расширенными настройками склонений и поддержкой валют
  • 🌍 SpellNumber — универсальная надстройка с поддержкой 20+ языков, включая русский
  • 📊 Атлант-Информ — отечественное решение с интеграцией в 1С

Установка надстройки NumWord (бесплатный вариант):

  1. Скачайте файл NumWord.xla с официального сайта
  2. В Excel перейдите в Файл → Параметры → Надстройки
  3. Нажмите"Перейти" внизу окна
  4. В появившемся окне нажмите"Обзор" и выберите скачанный файл
  5. Поставьте галочку рядом с NumWord и нажмите"ОК"

После установки в вашем Excel появится новая функция =NUMWORD, которую можно использовать как стандартную. Пример:

=NUMWORD(A1;"рубль";"копейка")
Надстройка Стоимость Макс. сумма Поддержка копеек Склонение валют
NumWord Бесплатно 999 трлн Да Рубль/доллар/евро
Рубль 1 200 ₽ Без ограничений Да 15+ валют
SpellNumber $29.99 Без ограничений Да 20+ языков
Атлант-Информ От 2 500 ₽ Без ограничений Да Интеграция с 1С

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

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

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

Function SumProp(ByVal MyNumber As Currency) As String

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

Dim DecimalPlace As Integer, Count As Integer

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

If MyNumber < 0 Then

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

Exit Function

End If

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

MyNumber = Round(MyNumber, 2)

DecimalPlace = InStr(1, MyNumber,".")

If DecimalPlace > 0 Then

Temp = Mid(MyNumber, DecimalPlace + 1)

If Len(Temp) = 1 Then Temp = Temp &"0"

Kop ="" & ConvertLessThanOneThousand(Temp, True) &" копе" & Choose(Val(Mid(Temp, 2, 1) + 1),"ек","йка","йки")

MyNumber = Trim(Left(MyNumber, DecimalPlace - 1))

End If

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

Count = 1

Do While MyNumber <>""

Temp = ConvertLessThanOneThousand(Right(MyNumber, 3), False)

If Temp <>"" Then RUB = Temp &"" & Choose(Count,"","тысяч","миллион","миллиард","триллион") &"" & RUB

If Len(MyNumber) > 3 Then

MyNumber = Left(MyNumber, Len(MyNumber) - 3)

Else

MyNumber =""

End If

Count = Count + 1

Loop

' Склонение слова"рубль"

Select Case Val(Right(MyNumber, 1))

Case 1: RUB = RUB &"рубль"

Case 2, 3, 4: RUB = RUB &"рубля"

Case Else: RUB = RUB &"рублей"

End Select

SumProp = Application.WorksheetFunction.Trim(RUB & Kop)

End Function

Function ConvertLessThanOneThousand(ByVal MyNumber As Variant, IsKop As Boolean) As String

Dim Result As String, Hundreds As Integer, Tens As Integer, Ones As Integer

MyNumber = Val(MyNumber)

Hundreds = Int(MyNumber / 100)

Tens = Int((MyNumber - Hundreds * 100) / 10)

Ones = MyNumber Mod 10

' Обработка сотен

If Hundreds > 0 Then

Result = Choose(Hundreds,"","сто","двести","триста","четыреста", _

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

End If

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

If Tens > 1 Then

Result = Result &"" & Choose(Tens,"","","двадцать","тридцать","сорок", _

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

Result = Result &"" & Choose(Ones,"","один","два","три","четыре", _

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

ElseIf Tens = 1 Then

Result = Result &"" & Choose(Ones,"десять","одиннадцать","двенадцать", _

"тринадцать","четырнадцать","пятнадцать", _

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

Else

If Not IsKop Then

Result = Result &"" & Choose(Ones,"","один","два","три","четыре", _

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

Else

Result = Result &"" & Choose(Ones,"","одна","две","три","четыре", _

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

End If

End If

ConvertLessThanOneThousand = Application.WorksheetFunction.Trim(Result)

End Function

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

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

Макросы включены в настройках Excel (Файл → Параметры → Центр управления безопасностью)

Скрипт вставлен в стандартный модуль (не в лист!)

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

Файл сохранен в формате.xlsm (с поддержкой макросов)

-->

⚠️ Внимание: При первом использовании макросов Excel может показать предупреждение о безопасности. Разрешите выполнение макросов только если вы доверяете источнику кода. Для корпоративных пользователей может потребоваться разрешение администратора.

Способ 4: Power Query для продвинутых пользователей

Power Query — это мощный инструмент для преобразования данных, который входит в состав Excel 2016 и новее (а также доступен как надстройка для Excel 2010/2013). С его помощью можно создать пользовательскую функцию для преобразования чисел в текстовый формат.

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

  • 🔄 Автоматическое обновление при изменении исходных данных
  • 📊 Возможность интеграции с другими источниками данных
  • 🛠 Гибкая настройка формата вывода
  • 💾 Сохранение логики преобразования внутри файла

Алгоритм создания функции в Power Query:

  1. Перейдите на вкладку Данные и выберите Получить данные → Другие источники → Пустой запрос
  2. В открывшемся редакторе Power Query перейдите на вкладку Домашняя → Дополнительно → Дополнительный редактор
  3. Вставьте следующий код:
    (Number as number) as text =>
    

    let

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

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

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

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

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

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

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

    ConvertLessThanThousand = (n as number, isFemale as logical) as text =>

    let

    hundred = Number.IntegerDivide(n, 100),

    remainder = n - hundred * 100,

    ten = Number.IntegerDivide(remainder, 10),

    one = remainder - ten * 10,

    result =

    (if hundred > 0 then Hundreds{hundred} else"") &"" &

    (if ten = 1 then Teens{one} else

    (if ten > 1 then Tens{ten} else"") &

    (if ten <> 1 and one > 0 then

    (if isFemale and one = 1 then"одна" else

    if isFemale and one = 2 then"две" else Units{one})

    else""))

    in

    Text.Trim(result),

    Convert = (n as number) as text =>

    let

    rubles = Number.IntegerDivide(n, 1),

    kop = Number.Round((n - rubles) * 100, 0),

    parts = {rubles, kop},

    scales = {"","тысяч","миллион","миллиард"},

    result =

    List.Accumulate(

    List.Transform(

    {0..List.Count(parts)-1},

    each {parts{_}, scales{_}}

    ),

    "",

    (state, current) =>

    let

    num = current{0},

    scale = current{1},

    text = if num = 0 then"" else

    (if scale ="" then

    ConvertLessThanThousand(num, false)

    else

    ConvertLessThanThousand(num, true) &"" & scale &

    (if num = 1 then"" else

    if num > 1 and num < 5 then"а" else

    if num > 4 then"ей" else""))

    in

    if text ="" then state else

    if state ="" then text else text &"" & state

    ),

    rubText = if rubles = 0 then"" else

    result &" рубл" &

    (if rubles = 1 then"ь" else

    if rubles > 1 and rubles < 5 then"я" else"ей"),

    kopText = if kop = 0 then"" else

    ConvertLessThanThousand(kop, true) &" копе" &

    (if kop = 1 then"йка" else

    if kop > 1 and kop < 5 then"йки" else"ек")

    in

    Text.Trim(rubText &"" & kopText)

    in

    Convert(Number)

  4. Закройте редактор и сохраните запрос с именем SumToText
  5. Теперь вы можете использовать эту функцию в своих запросах или создать на ее основе столбец в таблице

Важная особенность: Функция Power Query работает только внутри механизма запросов и не может быть вызвана напрямую из ячейки Excel как стандартная функция. Чтобы использовать результат в таблице, нужно создать запрос, который преобразует ваши данные и загружает их обратно в Excel.

Способ 5: Онлайн-сервисы для разового преобразования

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

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

  • 🌐 numword.com — поддерживает несколько языков, включая русский
  • 💰 summa-propisyu.ru — специализируется на финансовых суммах с копейками
  • 📝 text.ru/num-to-txt — простой интерфейс с возможностью копирования результата
  • 🔢 calconline.pro — включает дополнительные финансовые калькуляторы

Как использовать онлайн-сервисы эффективно:

  1. Скопируйте числа из вашей таблицы Excel
  2. Вставьте их в поле на сайте сервиса (обычно поддерживается пакетная обработка)
  3. Скопируйте полученные текстовые эквиваленты
  4. Вставьте их обратно в Excel в нужные ячейки
Преимущества и недостатки онлайн-сервисов

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

- Не требуют установки программ

- Работают на любом устройстве с доступом в интернет

- Часто поддерживают дополнительные функции (склонение валют, разные языки)

❌ Недостатки:

- Риск утечки конфиденциальных данных (если вы работаете с реальными финансовыми документами)

- Невозможно автоматизировать процесс для больших таблиц

- Требуется ручное копирование результатов

⚠️ Внимание: При работе с конфиденциальными финансовыми данными избегайте использования онлайн-сервисов. Даже если сервис обещает защиту данных, всегда существует риск перехвата информации при передаче по сети. Для корпоративного использования лучше выбрать оффлайн-решения (надстройки или VBA).

Сравнение методов: какой выбрать для ваших задач

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

Метод Сложность Макс. сумма Копейки Автоматизация Безопасность Лучше для
Стандартные функции Средняя 999 999 Нет Да Высокая Простых задач
Надстройки Низкая Без ограничений Да Да Высокая Регулярного использования
VBA-скрипт Высокая Без ограничений Да Да Высокая Продвинутых пользователей
Power Query Высокая Без ограничений Да Да Высокая Комплексной обработки данных
Онлайн-сервисы Низкая Без ограничений Да Нет Низкая Разовых задач

Рекомендации по выбору:

  • 📌 Если вам нужно однократное преобразование небольшого количества чисел — используйте онлайн-сервисы
  • 💼 Для регулярной работы с финансовыми документами лучший выбор — надстройки (например, NumWord)
  • 🛠 Если вам нужна максимальная гибкость и вы готовы изучить VBA — пишите собственный скрипт
  • 📊 Для комплексной обработки данных из разных источников подойдет Power Query
  • 📝 Если вы работаете с простыми суммами и не хотите устанавливать ничего дополнительного — используйте стандартные функции

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

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

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

Проблема: Функция выводит"1 рубль","2 рубля", но"5 рубль" вместо"5 рублей".

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

2. Округление копеек

Проблема: Сумма 123.456 рублей преобразуется в"123 рубля 46 копеек" вместо"123 рублей 46 копеек".

Решение: Перед преобразованием округлите число до двух знаков после запятой с помощью функции =ОКРУГЛ(A1;2). В VBA используйте Round(MyNumber, 2).

3. Отрицательные числа

Проблема: Функция не обрабатывает отрицательные суммы или выдает ошибку.

Решение: Добавьте проверку на отрицательное значение в начале вашей функции. В нашем VBA-примере это реализовано строкой If MyNumber < 0 Then.

4. Большие числа

Проблема: При суммах больше миллиарда функция выдает некорректный результат или ошибку.

Решение: Убедитесь, что ваша функция поддерживает нужный диапазон чисел. В VBA-скрипте из нашего примера реализована поддержка чисел до триллионов. Для стандартных функций Excel вам придется значительно усложнить формулу.

5. Конфликт с региональными настройками

Проблема: Формулы работают некорректно при изменении языковых настроек Excel.

Решение: Используйте универсальные разделители (запятые вместо точек с запятой в формулах) или настройте региональные параметры в Параметры Excel → Язык.

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

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

Да, все рассмотренные методы, кроме онлайн-сервисов, поддерживают автоматическое обновление. Для стандартных функций и VBA достаточно изменить исходное число — текстовое представление обновится автоматически. В Power Query нужно обновить запрос (правый клик по таблице → Обновить).

Как сделать, чтобы сумма прописью отображалась в верхнем регистре (ЗАГЛАВНЫМИ БУКВАМИ)?

Вы можете использовать функцию =ПРОПИСН для преобразования результата в верхний регистр. Например, если ваша функция суммы прописью находится в ячейке B1, введите в другой ячейке: =ПРОПИСН(B1). Для VBA-решения добавьте строку SumProp = UCase(SumProp) перед выходом из функции.

Почему моя функция работает некорректно с числами, содержащими копейки?

Наиболее вероятная причина — отсутствие обработки дробной части числа. Убедитесь, что ваша функция:

  1. Корректно разделяет число на целую и дробную части
  2. Округляет копейки до двух знаков
  3. Применяет правильное склонение для слова"копейка"

В нашем VBA-примере эта логика реализована в строках, где обрабатывается переменная Kop.

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

Да, но с некоторыми ограничениями. В Google Таблицах нет VBA, но вы можете:

  • Использовать App Script (аналог VBA для Google)
  • Установить надстройки из Google Workspace Marketplace
  • Использовать сложные формулы (аналогично первому способу в этой статье)

Готовый скрипт для Google App Script можно найти на специализированных форумах или адаптировать наш VBA-пример.

Как добавить поддержку других валют (доллары, евро)?

Для