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

Преобразование числовых значений в текстовый формат прописью — одна из самых востребованных задач в Microsoft Excel, особенно при работе с финансовыми документами, счетами и отчетами. Когда нужно оформить сумму не просто цифрами, а прописными словами (например, "Три тысячи пятьсот рублей 00 копеек"), стандартные функции программы не помогут — требуется либо ручной ввод, либо специальная формула.

Многие пользователи ошибочно считают, что для этой задачи обязательно нужен VBA-скрипт или сторонние надстройки. На самом деле существуют рабочие решения без макросов, основанные на комбинации текстовых функций. В этой статье мы разберём пошагово, как реализовать преобразование суммы в пропись с учётом рублей, долларов, евро и копеек/центов, а также рассмотрим нюансы для разных версий Excel (включая Excel 365 и Excel 2019).

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

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

Почему стандартных функций Excel недостаточно

В арсенале Excel есть текстовые функции вроде ТЕКСТ() или ФОРМУЛАТЕКСТ(), но ни одна из них не умеет преобразовывать числа в слова. Например, формула =ТЕКСТ(1234;"0") вернёт "1234", а не "Одна тысяча двести тридцать четыре". Причина проста: алгоритм преобразования чисел в текст требует сложной логики с учётом:

  • 🔢 Разрядов чисел (единицы, десятки, сотни, тысячи и т.д.).
  • 💰 Валюты и её склонения (рубль/рубля/рублей, доллар/доллара/долларов).
  • 📏 Дробной части (копейки, центы) и их отображения (с нулём или без).
  • 🌍 Локализации (русский, английский, украинский языки).

Без дополнительных инструментов Excel просто не "понимает", как соотнести цифру 5 со словом "пять". Поэтому приходится либо использовать пользовательские функции на VBA, либо собирать сложную формулу из вложенных ЕСЛИ(), ВЫБОР() и ПОИСКПОЗ().

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

📊 Как часто вам нужно преобразовывать суммы прописью в Excel?
Ежедневно
Несколько раз в неделю
Редко, но метко
Никогда не приходилось

Способ 1: Формула без макросов (для чисел до 999 999)

Это решение основано на вложенных функциях ВЫБОР() и ЕСЛИ() и подходит для сумм до 999 999 рублей/долларов. Его плюс — работает в любой версии Excel, включая Excel Online. Минус — формула получается громоздкой, и её сложно модифицировать под другие валюты.

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

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

ВЫБОР(

ПОЛУЧИТЬДАННЫЕ("единица";A1);

"один","два","три","четыре","пять","шесть","семь","восемь","девять"

) &

ЕСЛИ(

И(A1>=11;A1<=19);

"надцать";

ВЫБОР(

ОСТАТ(A1;10);

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

) &

ЕСЛИ(

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

"";

ВЫБОР(

ОСТАТ(A1;10);

"один","два","три","четыре","пять","шесть","семь","восемь","девять"

)

)

) &

" " &

ВЫБОР(

ПОЛУЧИТЬДАННЫЕ("разряд";A1);

"рубль","рубля","рублей"

)

)

Эта формула работает только для целых чисел от 1 до 999. Для тысяч и миллионов потребуется её усложнить, добавив дополнительные условия. Полную версию формулы (с учётом тысяч и копеек) вы найдёте в следующем разделе.

Способ 2: Универсальная формула с учётом копеек и тысяч

Для полноценной работы с финансовыми суммами (например, 1 234,56 руб.) потребуется формула, которая обрабатывает:

  1. Целые рубли/доллары (с правильным склонением).
  2. Дробные копейки/центы (с нулём или без).
  3. Тысячи и миллионы.

Ниже приведена готовая формула для ячейки A1 (где хранится число, например, 1234,56). Скопируйте её в ячейку, где должен отображаться результат прописью:

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

ТЕКСТ(ЦЕЛОЕ(A1);"[$-419]0") & " (" &

ЕСЛИ(

ЦЕЛОЕ(A1)=1;

"один рубль";

ЕСЛИ(

И(ЦЕЛОЕ(A1)>1;ЦЕЛОЕ(A1)<5);

ТЕКСТ(ЦЕЛОЕ(A1);"[$-419]0") & " рубля";

ТЕКСТ(ЦЕЛОЕ(A1);"[$-419]0") & " рублей"

)

) & ") " &

ЕСЛИ(

(A1-ЦЕЛОЕ(A1))*100=0;

"00 копеек";

ТЕКСТ(ОКРУГЛ((A1-ЦЕЛОЕ(A1))*100;0);"[$-419]00") & " копеек"

)

)

Эта формула:

  • 💵 Преобразует целую часть в текст (например, 1234"1234 (одна тысяча двести тридцать четыре рубля)").
  • 🪙 Добавляет копейки (например, 0,56"56 копеек").
  • 🔄 Корректно склоняет слово "рубль" в зависимости от числа.

Для других валют (доллары, евро) замените в формуле слова "рубль/рубля/рублей" на "доллар/доллара/долларов" и "копеек" на "центов".

Как адаптировать формулу под украинскую гривну?

Замените в формуле:

- "рубль/рубля/рублей" → "гривня/гривні/гривень"

- "копеек" → "копійок"

- Добавьте перед числом символ "₴" через функцию СИМВОЛ(8372)

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

Если вам нужно обрабатывать очень большие числа (миллиарды), или требуется поддержка нескольких валют, лучший вариант — создать пользовательскую функцию на VBA. Она будет работать как стандартная функция Excel (например, =СУММ()), но с расширенными возможностями.

Вот пошаговая инструкция:

  1. Нажмите Alt + F11, чтобы открыть редактор VBA.
  2. В меню выберите Insert → Module.
  3. Скопируйте в модуль следующий код:
    Function SumProp(ByVal MyNumber As Currency) As String
    

    Dim Rubles As String, Kopecks As String, Temp As String

    Dim DecimalPlace As Integer, Count As Integer

    ' Обработка целой части (рубли)

    Rubles = ConvertDigits(Int(MyNumber))

    ' Обработка копеек

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

    If DecimalPlace > 0 Then

    Temp = Mid(MyNumber, DecimalPlace + 1)

    Kopecks = Right("00" & Temp, 2)

    Else

    Kopecks = "00"

    End If

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

    Count = Int(MyNumber) Mod 100

    If Count >= 11 And Count <= 19 Then

    Rubles = Rubles & " рублей"

    Else

    Select Case Int(MyNumber) Mod 10

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

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

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

    End Select

    End If

    ' Формирование итоговой строки

    SumProp = Rubles & " " & Kopecks & " копеек"

    End Function

    Function ConvertDigits(ByVal MyNumber As Variant) As String

    Dim Txt As String, i As Integer

    Dim Ones(1 To 9) As String, Teens(10 To 19) As String, Tens(2 To 9) As String

    ' Массивы для чисел

    Ones(1) = "один": Ones(2) = "два": Ones(3) = "три": Ones(4) = "четыре"

    Ones(5) = "пять": Ones(6) = "шесть": Ones(7) = "семь"

    Ones(8) = "восемь": Ones(9) = "девять"

    Teens(10) = "десять": Teens(11) = "одиннадцать": Teens(12) = "двенадцать"

    Teens(13) = "тринадцать": Teens(14) = "четырнадцать": Teens(15) = "пятнадцать"

    Teens(16) = "шестнадцать": Teens(17) = "семнадцать": Teens(18) = "восемнадцать"

    Teens(19) = "девятнадцать"

    Tens(2) = "двадцать": Tens(3) = "тридцать": Tens(4) = "сорок"

    Tens(5) = "пятьдесят": Tens(6) = "шестьдесят": Tens(7) = "семьдесят"

    Tens(8) = "восемьдесят": Tens(9) = "девяносто"

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

    If MyNumber = 0 Then

    ConvertDigits = "ноль"

    Exit Function

    End If

    If MyNumber < 10 Then

    ConvertDigits = Ones(MyNumber)

    ElseIf MyNumber >= 10 And MyNumber <= 19 Then

    ConvertDigits = Teens(MyNumber)

    ElseIf MyNumber >= 20 And MyNumber <= 99 Then

    Txt = Tens(Int(MyNumber / 10))

    If MyNumber Mod 10 <> 0 Then Txt = Txt & " " & Ones(MyNumber Mod 10)

    ConvertDigits = Txt

    ElseIf MyNumber >= 100 And MyNumber <= 999 Then

    Txt = Ones(Int(MyNumber / 100)) & " сто"

    If MyNumber Mod 100 <> 0 Then Txt = Txt & " " & ConvertDigits(MyNumber Mod 100)

    ConvertDigits = Txt

    ElseIf MyNumber >= 1000 And MyNumber <= 999999 Then

    Txt = ConvertDigits(Int(MyNumber / 1000)) & " тысяч"

    Count = Int(MyNumber / 1000) Mod 10

    If Count = 1 Then Txt = Replace(Txt, "тысяч", "тысяча")

    If Count > 1 And Count < 5 Then Txt = Replace(Txt, "тысяч", "тысячи")

    If MyNumber Mod 1000 <> 0 Then Txt = Txt & " " & ConvertDigits(MyNumber Mod 1000)

    ConvertDigits = Txt

    End If

    End Function

  4. Закройте редактор VBA.
  5. Теперь в любой ячейке можно использовать функцию =SumProp(A1), где A1 — ячейка с числом.

Этот код поддерживает числа до 999 999 рублей и корректно склоняет все разряды (тысячи, миллионы можно добавить по аналогии). Для долларов замените в коде слова "рубль/рубля/рублей" на "доллар/доллара/долларов", а "копеек" на "центов".

Сохраните файл в формате .xlsm (с поддержкой макросов)|Включите макросы в настройках Excel (Файл → Параметры → Центр управления безопасностью → Параметры центра управления безопасностью → Включить все макросы)|Проверьте, что в ячейке с числом установлен формат "Числовой" или "Денежный"|Создайте резервную копию файла перед внесением изменений-->

Таблица склонений для разных валют

При работе с иностранными валютами важно правильно склонять их названия. Ниже приведена таблица с вариантами для самых популярных валют:

Валюта 1 2-4 5-20, 21-30... Дробная часть
Рубль (RUB) рубль рубля рублей копеек
Доллар (USD) доллар доллара долларов центов
Евро (EUR) евро евро евро центов
Гривна (UAH) гривна гривны гривен копійок
Тенге (KZT) тенге тенге тенге тиын

Для валют, у которых название не склоняется (например, евро), формула упрощается — достаточно заменить все варианты на одно слово.

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

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

⚠️ Внимание: Если в ячейке с числом установлен текстовый формат, формула вернёт ошибку #ЗНАЧ!. Всегда проверяйте, что формат ячейки — "Числовой" или "Денежный".
  • 🔴 Ошибка #ИМЯ? — означает, что в формуле опечатка в названии функции (например, ВЫБОР написано как ВЫБОРР).
  • 🔴 Неправильное склонение — например, "101 рублей" вместо "101 рубль". Проблема в логике условия для чисел 101-104, 111-114 и т.д. Исправляется добавлением проверки на Mod 100.
  • 🔴 Отсутствие копеек — если формула не учитывает дробную часть, добавьте функцию ОКРУГЛ((A1-ЦЕЛОЕ(A1))*100;0).
  • 🔴 Ограничение на размер числа — формулы без VBA обычно работают только до 999 999. Для миллиардов нужен макрос.

Чтобы избежать ошибок, тестируйте формулу на краевых значениях:

  • 🧪 0 (ноль).
  • 🧪 1 и 2 (склонение для единицы).
  • 🧪 101, 102, 105 (проверка склонения после 100).
  • 🧪 1234,56 (проверка дробной части).

Готовые надстройки для Excel

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

  • 📌 NumWord — надстройка с поддержкой 15+ валют и нескольких языков (включая русский). Стоимость: ~$20.
  • 📌 Excel Number to Words — бесплатный плагин для базовых задач (до 999 999).
  • 📌 Атлас-Про — российская надстройка с поддержкой бухгалтерских форматов (включает НДС, налоги).
  • 📌 Kutools for Excel — пакет инструментов, в котором есть функция =NUMTOWORD().

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

  • ✅ Поддержка миллиардов и триллионов.
  • ✅ Автоматическое обновление при изменении чисел.
  • ✅ Возможность настройки шаблонов (например, для договоров).

Недостатки:

  • ❌ Платная лицензия (для большинства решений).
  • ❌ Риск конфликта с другими надстройками.
  • ❌ Зависимость от разработчика (может перестать обновляться).
⚠️ Внимание: Перед установкой надстройки создайте резервную копию файла. Некоторые плагины могут конфликтовать с пользовательскими функциями VBA.

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

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

Да, но только с помощью надстроек (например, Kutools или NumWord). Без дополнительных инструментов придётся использовать либо формулы, либо макросы.

Почему формула выдаёт ошибку #ЗНАЧ!?

Наиболее частые причины:

  • Ячейка с числом отформатирована как текст (исправьте формат на "Числовой").
  • В формуле опечатка в названии функции (например, ВЫБОРР вместо ВЫБОР).
  • Число превышает лимит, заложенный в формуле (например, формула рассчитана до 999 999, а вы ввели 1 000 000).

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

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

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

Нет, в Google Sheets синтаксис функций отличается. Однако там есть готовая функция =SPLIT(NUMBERSTRING()), которая частично решает задачу. Для полноценной работы потребуется скрипт на Google Apps Script.

Как добавить в результат слово "включительно" или "без НДС"?

Просто допишите нужный текст в формулу через &. Например:

=SumProp(A1) & " (включительно НДС 20%)"

Или для формулы без VBA:

=[ваша_формула] & " (без учёта НДС)"