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

Введение: зачем переводить цифры в текст?

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

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

Прежде чем переходить к инструкциям, важно понять: универсального решения "одной кнопкой" в Excel нет. Выбор метода зависит от версии программы (2010, 2016, 2019 или Microsoft 365), частоты использования функции и требований к формату вывода. Например, для бухгалтерских документов может потребоваться указание валюты ("рублей", "долларов") и копеек, а для внутренних отчётов — только целые числа.

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

Способ 1: Встроенная функция БСЧЁТ (только для английского)

Начнём с самого очевидного — встроенной функции БСЧЁТ (англ. SPELLNUMBER). Она доступна в Excel начиная с версии 2013, но есть критическое ограничение: функция работает только с английской локализацией и выводит суммы на английском языке. Для русскоязычных пользователей этот метод бесполезен без дополнительных настроек.

Тем не менее, рассмотрим синтаксис для полноты картины:

=БСЧЁТ(число; [формат])

Где число — ячейка с суммой (например, A1), а [формат] — необязательный аргумент для указания валюты (по умолчанию — доллары). Пример для числа 1234,56 вернёт: "One thousand two hundred thirty-four and 56/100".

⚠️ Внимание: Если ваш Excel русифицирован, функция БСЧЁТ может отсутствовать в списке или возвращать ошибку #ИМЯ?. Чтобы её активировать, потребуется сменить языковые настройки офиса на английский или использовать надстройки (о них — далее).

Для русского языка этот метод применим только как основа для создания пользовательской функции на VBA (см. Способ 4). Если вам срочно нужно решение "здесь и сейчас" — пропустите этот раздел и переходите к следующим способам.

Способ 2: Формула с вложенными ЕСЛИ (для целых чисел до 999)

Для небольших чисел (до 999) можно обойтись без макросов, используя комбинацию функций ЕСЛИ, ИНДЕКС и ПОИСКПОЗ. Этот метод подходит, если вам нужно редко преобразовывать суммы и нет времени на настройку VBA. Минус — формула получается громоздкой и работает только с целыми числами.

Пример формулы для числа в ячейке A1 (до 999):

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

ЕСЛИ(A1<20;ИНДЕКС({"ноль";"один";"два";...;"девятнадцать"};A1);

ЕСЛИ(A1<100;

ИНДЕКС({"двадцать";"тридцать";...;"девяносто"};ЦЕЛОЕ(A1/10)) &

ЕСЛИ(ОСТАТ(A1;10)=0;"";" " & ИНДЕКС({"";"один";...;"девять"};ОСТАТ(A1;10)));

ИНДЕКС({"сто";"двести";...;"девятьсот"};ЦЕЛОЕ(A1/100)) &

ЕСЛИ(ОСТАТ(A1;100)=0;"";" " &

ЕСЛИ(ОСТАТ(A1;100)<20;ИНДЕКС({"";"один";...;"девятнадцать"};ОСТАТ(A1;100));

ИНДЕКС({"";"двадцать";...;"девяносто"};ЦЕЛОЕ(ОСТАТ(A1;100)/10)) &

ЕСЛИ(ОСТАТ(A1;10)=0;"";" " & ИНДЕКС({"";"один";...;"девять"};ОСТАТ(A1;10)))

)

)

)

)

)

Как видите, формула занимает несколько строк и требует ручного заполнения массивов чисел. Для упрощения можно вынести массивы ("один", "два"...) в отдельные ячейки и ссылаться на них. Однако для чисел >999 придётся добавлять логику для тысяч, миллионов и т.д., что сделает формулу ещё сложнее.

Создать списки единиц, десятков и сотен в отдельных ячейках

Проверить корректность ссылок на массивы в формуле

Убедиться, что в исходной ячейке нет дробной части

Тестировать формулу на краевых значениях (0, 19, 20, 99, 100, 999)-->

Способ 3: Бесплатные надстройки для русского языка

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

  • 📌 NumToText — бесплатная надстройка от PlanetaExcel. После установки добавляет функцию =РУБЛЬ(число; [валюта]), которая поддерживает рубли, доллары и евро. Пример вывода: "Одна тысяча двадцать три рубля 45 копеек".
  • 📌 Summa Propisyu — надстройка с открытым кодом, доступна на GitHub. Помимо основной функции, позволяет настраивать род чисел (мужской/женский) и формат вывода (с валютой или без).
  • 📌 Атлас-Финанс — платное решение с расширенными возможностями (поддержка миллиардов, настройка падежей). Подходит для корпоративного использования.

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

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

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

=РУБЛЬ(A1)

где A1 — ячейка с числом. Для указания копеек используйте формат с двумя знаками после запятой (например, 1234,56).

⚠️ Внимание: Надстройки могут конфликтовать с антивирусами (ложные срабатывания на макросы). Перед установкой добавьте файл .xlam в исключения антивируса или проверьте его на VirusTotal.
Как удалить надстройку, если она не работает?

Чтобы удалить надстройку, перейдите в Файл → Параметры → Надстройки, выберите Управление: Надстройки ExcelПерейти.... Снимите галочку с ненужной надстройки и нажмите ОК. Если надстройка повредила файл, откройте Excel в безопасном режиме (удерживайте Ctrl при запуске) и удалите её оттуда.

Способ 4: Пользовательская функция на VBA (универсальное решение)

Если надстройки не подходят (например, из-за корпоративных ограничений), можно создать собственную функцию на VBA. Этот метод требует начальных знаний макросов, но даёт полный контроль над форматом вывода. Ниже приведён код функции, которая преобразует числа до 999 999 999,99 рублей с учётом копеек:

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

Function Рубль(Сумма As Double) As String

Dim Rub As String, Kop As String, Temp As String

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

Dim i As Integer

РубльТекст = Array("ноль", "один", "два", "три", "четыре", "пять", "шесть", "семь", "восемь", "девять", _

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

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

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

КопейкаТекст = Array("копеек", "копейка", "копейки")

Rub = Int(Сумма)

Kop = Format((Сумма - Rub) * 100, "00")

If Rub = 0 Then

Temp = "ноль рублей"

Else

Temp = ConvertLessThanOneThousand(Rub, РубльТекст, "рубль", "рубля", "рублей")

End If

If Kop > 0 Then

Temp = Temp & " " & ConvertLessThanOneThousand(Kop, РубльТекст, "копейка", "копейки", "копеек")

End If

Рубль = Temp

End Function

Function ConvertLessThanOneThousand(ByVal Number As Integer, Текст As Variant, One As String, TwoFour As String, FiveZero As String) As String

Dim Result As String

If Number = 0 Then Exit Function

If Number < 20 Then

Result = Текст(Number)

ElseIf Number < 100 Then

Result = Текст(18 + Int(Number / 10))

If Number Mod 10 <> 0 Then Result = Result & " " & Текст(Number Mod 10)

Else

Result = Текст(18 + Int(Number / 100)) & "сот"

If Number Mod 100 <> 0 Then Result = Result & " " & ConvertLessThanOneThousand(Number Mod 100, Текст, One, TwoFour, FiveZero)

End If

Select Case Number Mod 100

Case 1: Result = Result & " " & One

Case 2, 3, 4: Result = Result & " " & TwoFour

Case Else: Result = Result & " " & FiveZero

End Select

ConvertLessThanOneThousand = Result

End Function

После вставки кода закройте редактор VBA и сохраните файл как Книга Excel с поддержкой макросов (*.xlsm). Теперь в любой ячейке можно использовать функцию:

=Рубль(A1)

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

If Сумма < 0 Then Рубль = "минус " & Рубль(Abs(Сумма)): Exit Function
-->

Способ 5: Онлайн-конвертеры и Power Query

Если вы работаете в Excel Online или не хотите устанавливать надстройки, можно использовать онлайн-конвертеры или Power Query. Первый вариант подходит для разовых задач, второй — для автоматизации импорта данных.

  • 🌐 Онлайн-сервисы:
    • 🔹 Calculat.org — поддерживает рубли и доллары, работает без регистрации.
    • 🔹 Summa-Propisyu.ru — специализированный сервис с API для интеграции.
    Минус: требуется ручной ввод или копирование данных.
  • 📊 Power Query:
    • Импортируйте данные в Power Query (Данные → Получить данные).
    • Добавьте пользовательский столбец с формулой на языке M (пример ниже).

Пример кода для Power Query (язык M):

(Number) =>

let

Units = {"ноль", "один", "два", ...}, // полный список единиц

Teens = {"десять", "одиннадцать", ...}, // полный список от 10 до 19

Tens = {"двадцать", "тридцать", ...}, // полный список десятков

Hundreds = {"сто", "двести", ...}, // полный список сотен

// Логика преобразования (упрощённо)

Convert = (n) =>

if n = 0 then "ноль" else

if n < 20 then Units{n} else

if n < 100 then Tens{Number.IntegerDivide(n, 10) - 2} & " " & Units{Number.Mod(n, 10)} else

Hundreds{Number.IntegerDivide(n, 100) - 1} & " " & Convert(Number.Mod(n, 100)),

Rubles = Convert(Number.IntegerDivide(Number, 1)),

Kop = Convert(Number.Mod(Number * 100, 100))

in

Rubles & " рубль " & Kop & " копеек"

Этот метод сложнее в настройке, но позволяет интегрировать преобразование в автоматические цепочки обработки данных. Например, можно настроить ежемесячный импорт банковских выписок с авто-заполнением сумм прописью.

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

Чтобы облегчить выбор, сведем плюсы и минусы каждого способа в таблицу:

Метод Плюсы Минусы Когда использовать
Встроенная функция БСЧЁТ Не требует установки, быстро Только английский язык, ограниченные настройки Для английских документов или как основа для VBA
Формула с ЕСЛИ Не нужны макросы, работает в любом Excel Очень громоздкая, только целые числа до 999 Для разовых задач с небольшими числами
Надстройки (NumToText) Поддержка русского языка, валюты, копеек Требует установки, возможны конфликты с антивирусом Для регулярного использования в шаблонах
Пользовательская VBA-функция Гибкая настройка, работает офлайн Требует знаний VBA, не работает в Excel Online Для корпоративных решений с уникальными требованиями
Онлайн-конвертеры Не нужно ничего устанавливать, поддерживают большие числа Ручной ввод, зависимость от интернета Для разовых задач или проверки результатов

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

Частые ошибки и как их избежать

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

  • 🚫 Ошибка #ИМЯ? при использовании =РУБЛЬ(): Причина: надстройка не подключена или конфликтует с другими макросами. Решение: проверьте, активна ли надстройка в Файл → Параметры → Надстройки. Перезагрузите Excel.
  • 🚫 Неправильный падеж ("один рубль" вместо "одного рубля"): Причина: функция не учитывает контекст (например, "оплатить 100 рублей" vs. "стоимость 100 рублей"). Решение: отредактируйте VBA-код или используйте надстройки с настройкой падежей (например, Атлас-Финанс).
  • 🚫 Округление копеек (56 копеек → 50 копеек): Причина: исходная ячейка отформатирована без дробной части. Решение: установите формат Числовой с 2 знаками после запятой.
  • 🚫 Макрос не работает в shared-файле: Причина: Excel блокирует макросы в общих книгах. Решение: сохраните файл как .xlsm и отключите режим совместного доступа.

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

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

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

Да, но с ограничениями. Для чисел до 999 можно использовать формулу с вложенными ЕСЛИ (см. Способ 2). Для больших чисел или работы с копейками без VBA/надстроек не обойтись. Альтернатива — онлайн-конвертеры, но они не подходят для автоматизации.

Почему функция =РУБЛЬ() возвращает ошибку после обновления Excel?

Скорее всего, обновление сбросило настройки безопасности макросов. Перейдите в Файл → Параметры → Центр управления безопасностью → Параметры центра управления безопасностью → Параметры макросов и выберите Включить все макросы (не рекомендуется для недоверенных файлов) или добавьте папку с файлом в список доверенных мест.

Как вывести сумму прописью в Word из Excel?

Есть два способа:

  1. Скопируйте результат функции =РУБЛЬ() в Word как текст.
  2. Используйте связывание данных: в Word перейдите на вкладку Рассылки → Получатели → Использовать существующий список и выберите файл Excel. Вставьте поле с суммой прописью как Поле слияния.

Поддерживает ли Google Sheets вывод суммы прописью?

В Google Sheets нет встроенной функции для русского языка, но можно:

  • Использовать Apps Script (аналог VBA). Пример кода доступен здесь.
  • Установить надстройку Summa Propisyu из Google Workspace Marketplace.

Можно ли настроить вывод суммы с заглавной буквы?

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

Рубль = UCase(Left(Рубль, 1)) & Mid(Рубль, 2)

Для надстроек ищите опцию "Регистр" в настройках (например, в Атлас-Финанс это доступно из меню функции).