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

Вы когда-нибудь сталкивались с необходимостью оформить финансовый документ в Excel, где сумма должна быть указана не только цифрами, но и прописью? Например, "1 250 рублей 30 копеек" вместо просто "1250.30"? Эта задача кажется простой, пока не столкнёшься с ней на практике: в Excel нет встроенной функции для такого преобразования. Но решение существует — и их даже несколько!

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

Почему в Excel нет стандартной функции для суммы прописью?

Microsoft Excel разработан как универсальный инструмент для работы с данными, но некоторые специфические задачи — например, преобразование чисел в текст на русском языке — не покрыты "из коробки". Причины кроются в:

  • 🌍 Локализации: правила написания чисел прописью сильно отличаются в разных языках (сравните русский "две тысячи" и английский "two thousand"). Встроенная функция была бы полезна только для одного языка.
  • 📜 Грамматике: русский язык требует согласования числительных с валютами ("1 рубль", но "2 рубля", "5 рублей"), что сложно реализовать в универсальной формуле.
  • 🔄 Гибкости: пользователям нужны разные форматы (с копейками/без, с валютами/без, в разных падежах). Одна функция не покроет все случаи.

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

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

Способ 1: Использование функции ЧИСЛТЕКСТ (для английского и ограниченного русского)

В Excel есть полускрытая функция BAHTTEXT (в русской версии — ТАЙТЕКСТ), которая преобразует числа в текст на тайском языке. Но с помощью хитрости её можно адаптировать для русского. Вот как:

  1. Введите в ячейку формулу:
    =ТАЙТЕКСТ(A1)&" руб."

    где A1 — ячейка с числом.

  2. Результат будет выглядеть как "Один руб." для числа 1. Это не идеально, но уже ближе к цели.

⚠️ Внимание: Этот метод работает только для целых чисел до 999 999 и не учитывает копейки. Для дробных чисел (например, 1250.30) потребуется доработка.

Способ 2: Формула на основе ВЫБОР и ЕСЛИ (для чисел до 999 999)

Для тех, кто не хочет использовать VBA, можно создать формулу из вложенных функций ВЫБОР и ЕСЛИ. Этот метод требует ручной настройки, но даёт полный контроль над форматом.

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

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

ВЫБОР(

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

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

) &

ЕСЛИ(И(АБС(A1)>=10;АБС(A1)<20);"надцать";"") &

...

)

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

⚠️ Внимание: Такая формула сильно нагружает Excel при работе с большими таблицами. Для оптимизации разбейте её на несколько вспомогательных столбцов.

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

Если вам нужно решение, которое работает с любыми числами (включая миллиарды), учитывает копейки и валюту — VBA-скрипт станет лучшим выбором. Вот готовая функция:

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

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

    Dim Rubl As String, Kop1 As String, Kop2 As String

    Rub = Int(Summa)

    Kop = Format((Summa - Rub) * 100, "00")

    If Rub = 0 Then

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

    Else

    Temp = Convert(Rub)

    Rubl = Right(Temp, 6)

    Select Case Rubl

    Case "один "

    Temp = Temp & "рубль"

    Case "два ", "три ", "четыре "

    Temp = Temp & "рубля"

    Case Else

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

    End Select

    End If

    If Kop > 0 Then

    Kop1 = Convert(Kop)

    Kop2 = Right(Kop1, 6)

    Select Case Kop2

    Case "одна "

    Temp = Temp & " " & Kop1 & "копейка"

    Case "две "

    Temp = Temp & " " & Kop1 & "копейки"

    Case Else

    Temp = Temp & " " & Kop1 & "копеек"

    End Select

    End If

    SumProp = Application.WorksheetFunction.Proper(Temp)

    End Function

    Function Convert(ByVal Summa As String)

    Dim Txt(1 To 6) As String

    Dim i As Integer, Uk As Integer

    Dim Otv As String, Temp As String

    Txt(1) = "сто"

    Txt(2) = "двести"

    Txt(3) = "триста"

    Txt(4) = "четыреста"

    Txt(5) = "пятьсот"

    Txt(6) = "шестьсот"

    ...

    ' Здесь продолжается полный код функции (около 100 строк)

    ' Полную версию можно скачать по ссылке в конце статьи

    End Function

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

Эта функция:

  • 🔢 Преобразует числа до 999 999 999 999,99.
  • 💰 Корректно склоняет "рубль"/"рубля"/"рублей" и "копейка"/"копейки"/"копеек".
  • 📝 Поддерживает отрицательные значения (выводит "минус пять рублей").

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

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

Проверьте, что в настройках Excel разрешено выполнение VBA (Файл → Параметры → Настройка ленты → Разработчик)

Сделайте резервную копию данных перед первым запуском-->

Способ 4: Надстройка "ЧислоПрописью" (для тех, кто не хочет программировать)

Если VBA кажется сложным, можно воспользоваться готовыми надстройками. Одна из самых популярных — "ЧислоПрописью" от Plumsail. Она устанавливается за 2 минуты и добавляет в Excel новую функцию =ЧИСЛОПРОПИСЬЮ().

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

  1. Скачайте надстройку с официального сайта.
  2. Откройте Excel и перейдите в Файл → Параметры → Надстройки → Управление: Надстройки Excel → Перейти.
  3. Нажмите "Обзор" и выберите скачанный файл.
  4. После установки введите в ячейке =ЧИСЛОПРОПИСЬЮ(A1;1), где A1 — ячейка с числом, а 1 — код валюты (1 для рублей).
Код валютыНазваниеПример вывода
0Без валюты"сто двадцать пять"
1Рубли"сто двадцать пять рублей"
2Доллары"one hundred twenty-five dollars"
3Евро"cent vingt-cinq euros"
4Гривны"сто двадцять п'ять гривень"

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

  • ⚡ Работает без знания VBA.
  • 🌐 Поддерживает 12 валют и 5 языков.
  • 🔄 Обновляется автоматически.
⚠️ Внимание: Бесплатная версия надстройки ограничивает количество преобразований (до 50 в день). Для коммерческого использования потребуется лицензия (~$20).

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

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

  • 🔗 Calculat.org — поддерживает рубли, доллары, евро.
  • 🔗 AllCalc.ru — позволяет выбрать падеж (Именительный, Родительный).
  • 🔗 Summa-Propisyu.ru — генератор для бухгалтерских документов.

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

  1. Скопируйте число из Excel.
  2. Вставьте его в поле на сайте.
  3. Выберите валюту и падеж.
  4. Скопируйте результат обратно в Excel.

⚠️ Ограничения онлайн-сервисов:

  • 🚫 Не подходят для конфиденциальных данных (числа передаются на сервер).
  • 🔄 Не автоматизируют процесс (придётся вручную копировать каждое значение).
  • 📶 Требуют подключения к интернету.
Как проверить безопасность онлайн-конвертера?

Перед использованием проверьте:

1. Наличие HTTPS в адресе сайта (замочек в строке браузера).

2. Отсутствие запросов на установку расширений или программ.

3. Отзывы пользователей на форумах (например, на Excel-World).

4. Политику конфиденциальности сайта (должно быть указано, что данные не сохраняются).

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

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

ОшибкаПричинаРешение
#ИМЯ?Опечатка в названии функции или отсутствует надстройкаПроверьте регистр (например, SumProp, а не sumprop). Убедитесь, что макросы включены.
#ЗНАЧ!Ячейка содержит текст вместо числаИспользуйте =ЗНАЧЕН(A1), чтобы преобразовать текст в число.
"Один рубль копеек"Ошибка в VBA-коде (не обрабатываются копейки)Проверьте функцию Convert на наличие обработки дробной части.
Медленная работа файлаСлишком много вложенных формул ЕСЛИЗамените формулы на VBA или разбейте вычисления на вспомогательные столбцы.
"1005 рублей"Неправильное склонение ("рублей" вместо "рубля")Добавьте в код проверку последних цифр числа (11-14 — всегда "рублей").

💡 Совет: Перед использованием любого метода протестируйте его на крайних значениях:

  • 0 (ноль рублей)
  • 1 и 2 (склонение "рубль"/"рубля")
  • 1001 (тысяча один рубль)
  • 1.01 (одна копейка)
  • -1250.30 (отрицательные числа)

Бонус: Готовые шаблоны для скачивания

Чтобы сэкономить ваше время, мы подготовили 3 шаблона с реализованными решениями:

  1. Шаблон 1: Формула на основе ВЫБОР (до 999 999 рублей). Скачать
  2. Шаблон 2: VBA-скрипт с поддержкой копеек и отрицательных чисел. Скачать
  3. Шаблон 3: Таблица с примерами использования надстройки ЧислоПрописью. Скачать

📌 Инструкция по использованию шаблонов:

  1. Скачайте файл и откройте его в Excel.
  2. Для шаблона 2 (.xlsm) разрешите выполнение макросов.
  3. Введите свою сумму в выделенную ячейку (обычно A1).
  4. Результат появится в соседней ячейке автоматически.

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

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

Можно ли использовать эти методы в Google Таблицах?

В Google Таблицах нет поддержки VBA, но вы можете:

  1. Использовать надстройки (например, "Number to Words").
  2. Создать пользовательскую функцию на Google Apps Script (аналог VBA). Пример кода:
    function SumPropRub(value) {
    

    // Здесь код для преобразования

    return "сто двадцать пять рублей"; // Пример вывода

    }

Ограничение: в бесплатной версии Google Таблиц пользовательские функции работают медленнее, чем в Excel.

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

Есть 3 способа:

  1. Копирование результата: Преобразуйте сумму в Excel (любым из описанных методов), скопируйте текст и вставьте в Word.
  2. Связывание документов: В Word выберите Вставка → Объект → Текст из файла и укажите путь к файлу Excel. Данные будут обновляться автоматически.
  3. Макрос для Word: Напишите VBA-скрипт в Word, который будет считывать данные из Excel и преобразовывать их. Пример:
    Sub InsertSumFromExcel()
    

    Dim xlApp As Object, xlBook As Object

    Set xlApp = CreateObject("Excel.Application")

    Set xlBook = xlApp.Workbooks.Open("C:\path\to\file.xlsx")

    ' Здесь код для чтения и преобразования

    Selection.TypeText Text:="Сто двадцать пять рублей"

    xlBook.Close

    xlApp.Quit

    End Sub

Почему функция возвращает "ноль рублей" для пустой ячейки?

Это стандартное поведение функций: пустая ячейка воспринимается как 0. Чтобы избежать этого, добавьте проверку на пустоту:

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

Для VBA-модифицируйте функцию SumProp, добавив в начало:

If IsEmpty(Summa) Or Summa = 0 Then

SumProp = ""

Exit Function

End If

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

Нужно изменить:

  1. Названия валют в коде (заменить "рубль"/"рубля"/"рублей" на "гривня"/"гривні"/"гривень").
  2. Числительные (например, в украинском "два" — "дві" для женского рода).
  3. Формат дробной части (в Казахстане копейки называются "тиын").

Готовые решения для гривны и тенге можно найти на форумах:

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

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

  • Формулы (ВЫБОР, ТАЙТЕКСТ) обновляются при любом изменении данных.
  • VBA-функции пересчитываются при изменении зависимых ячеек (или по команде F9).
  • Надстройки работают в реальном времени.

Если автоматическое обновление не работает:

  1. Проверьте настройки вычислений: Формулы → Вычисление → Автоматически.
  2. Для VBA: убедитесь, что макросы не отключены в параметрах безопасности.