Преобразование числовых значений в текстовый формат прописью — одна из самых востребованных задач при работе с финансовыми документами в Microsoft Excel. Бухгалтерам, экономистам и менеджерам регулярно требуется оформлять счета, акты и договоры, где суммы должны дублироваться словами. К сожалению, в стандартном наборе функций Excel нет готовой команды для такой конвертации, но решение существует — и их даже несколько!
Многие пользователи ошибочно полагают, что для этой задачи обязательно нужен опыт программирования или покупка дорогостоящих надстроек. На практике же даже новичок может настроить автоматическое преобразование чисел в текст прописью, используя комбинацию встроенных функций или бесплатные шаблоны. В этой статье мы разберём 5 рабочих методов — от простейших формул для русского языка до универсальных VBA-скриптов, которые справятся с любыми валютами и правилами склонения.
Важно понимать, что алгоритм преобразования зависит от языка: для русского требуется учитывать род (рубль/рубля/рублей), падежи и исключения типа "один", "два". Английский или немецкий в этом плане проще, но и там есть нюансы. Мы сфокусируемся на русскоязычном варианте, так как он наиболее востребован в деловой документации СНГ.
Прежде чем переходить к инструкциям, проверьте версию вашего Excel. Современные версии (2016 и новее) поддерживают более гибкие формулы, а в Excel 365 появились новые функции типа TEXTJOIN, которые упростят задачу. Если вы работаете со старой версией (2010 или 2013), некоторые методы могут потребовать адаптации.
1. Стандартные формулы Excel: метод "разбивки" числа
Самый доступный способ — использовать комбинацию функций ИНДЕКС, ПОИСКПОЗ и текстовых операций. Этот метод не требует установки дополнительных инструментов, но имеет ограничение: он подходит только для чисел до 999 999 999 (миллиард уже не обработает). Зато вы получите полный контроль над форматом вывода.
Алгоритм работает так:
- Число разбивается на сотни, десятки и единицы.
- Каждая часть преобразуется в текст с помощью заранее подготовленных массивов слов.
- Результат склеивается с учётом падежей и правил русского языка.
Пример формулы для ячейки A1 с числом 1234:
=ЕСЛИ(A1=0;"ноль";
ТЕКСТ(ЦЕЛОЕ(A1/1000000);"[>=1000000]0,,;\;")&" "&\ИНДЕКС({"миллион";"миллиона";"миллионов"};ЕСЛИИ(ОСТАТ(ЦЕЛОЕ(A1/1000000);100);1;ЕСЛИИ(И(ЦЕЛОЕ(A1/1000000)>1;ЦЕЛОЕ(A1/1000000)<5);2;3)))&
ЕСЛИ(ЦЕЛОЕ(A1/1000)>0;
" "&\ИНДЕКС({"тысяча";"тысячи";"тысяч"};ЕСЛИИ(ОСТАТ(ЦЕЛОЕ(A1/1000);100)=1;1;ЕСЛИИ(И(ОСТАТ(ЦЕЛОЕ(A1/1000);100)>1;ОСТАТ(ЦЕЛОЕ(A1/1000);100)<5);2;3)))&
" "&\ТЕКСТ(ОСТАТ(ЦЕЛОЕ(A1/1000);1000);"[>=100]0;\;")&
ЕСЛИ(ОСТАТ(ЦЕЛОЕ(A1/1000);100)>9;"сот";ЕСЛИ(ОСТАТ(ЦЕЛОЕ(A1/1000);100)>1;"десяти";""))&
ЕСЛИ(ОСТАТ(A1;1000)>0;" ";"")&
\ИНДЕКС({"";"один";"два";"три";...;"девять"};ОСТАТ(A1;10))&
" рубль"&\ИНДЕКС({"ь";"я";"ей"};ЕСЛИИ(ОСТАТ(A1;10)=1;1;ЕСЛИИ(И(ОСТАТ(A1;10)>1;ОСТАТ(A1;10)<5);2;3)))
;"")
)
⚠️ Внимание: Приведённая формула упрощена для примера. Полная версия должна включать массивы для всех чисел от 0 до 999 и учитывать склонение валют (рубль/доллар/евро). Готовый шаблон с такой формулой можно скачать в конце статьи.
Создайте резервную копию файла|Проверьте формат ячейки с числом (должен быть "Общий" или "Числовой")|Убедитесь, что в числе нет разделителей групп разрядов (запятых)|Выделите достаточно места для вывода текста (до 100 символов)-->
2. Пользовательская функция на VBA: универсальное решение
Для тех, кто готов немного углубиться в автоматизацию, VBA-макрос станет самым надёжным инструментом. Преимущества этого метода:
- 🔹 Работает с числами любой длины (вплоть до триллионов)
- 🔹 Поддерживает несколько валют (рубли, доллары, евро)
- 🔹 Учитывает копейки/центы
- 🔹 Можно доработать под специфические требования (например, украинский или казахский язык)
Чтобы добавить макрос, выполните шаги:
- Нажмите
Alt + F11, чтобы открыть редактор Visual Basic. - В меню выберите
Insert → Module. - Вставьте код функции (приведён ниже).
- Закройте редактор и вернитесь в Excel.
Пример кода для функции СуммаПрописью:
Function СуммаПрописью(Число As Currency, Optional Валюта As String = "рубль") As String
Dim Рубль As String, Копейка As String, Текст As String
Select Case Валюта
Case "рубль": Рубль = "рубль|рубля|рублей": Копейка = "копейка|копейки|копеек"
Case "доллар": Рубль = "доллар|доллара|долларов": Копейка = "цент|цента|центов"
Case "евро": Рубль = "евро|евро|евро": Копейка = "цент|цента|центов"
End Select
Dim ЦелЧасть As Long, ДробЧасть As Long
ЦелЧасть = Int(Число)
ДробЧасть = Round((Число - ЦелЧасть) * 100, 0)
If ЦелЧасть = 0 And ДробЧасть = 0 Then
СуммаПрописью = "ноль " & Split(Рубль, "|")(2)
Exit Function
End If
Текст = Прописью(ЦелЧасть, True) & " " & Склонение(ЦелЧасть, Рубль)
If ДробЧасть > 0 Then Текст = Текст & " " & Прописью(ДробЧасть, False) & " " & Склонение(ДробЧасть, Копейка)
СуммаПрописью = Application.WorksheetFunction.Proper(Текст)
End Function
Function Прописью(Число As Long, МужРод As Boolean) As String
' Полный код функции (около 100 строк) доступен в шаблоне для скачивания
' Здесь реализована логика преобразования чисел в текст с учётом рода
End Function
Function Склонение(Число As Long, Варианты As String) As String
Dim Вар() As String: Вар = Split(Варианты, "|")
Select Case Число Mod 100
Case 11 To 19: Склонение = Вар(2)
Case Else
Select Case Число Mod 10
Case 1: Склонение = Вар(0)
Case 2 To 4: Склонение = Вар(1)
Case Else: Склонение = Вар(2)
End Select
End Select
End Function
После добавления макроса в любой ячейке можно использовать формулу:
=СуммаПрописью(A1;"рубль")
где A1 — ячейка с числом, а второй параметр указывает валюту.
1. Включён ли макрос (Файл → Параметры → Надстройки → Управление: Надстройки Excel → Перейти → Поставить галочку "Анализ данных").
2. Совпадает ли название функции в коде и в формуле (регистр важен!).
3. Сохранён ли файл в формате с поддержкой макросов (.xlsm).-->
3. Надстройки от сторонних разработчиков
Если вам нужно быстрое и надёжное решение без погружения в формулы или VBA, стоит рассмотреть специализированные надстройки. Они предлагают расширенную функциональность:
- 📌 Поддержка нескольких языков (включая украинский, белорусский, английский)
- 📌 Автоматическое определение валюты по формату ячейки
- 📌 Возможность настройки шаблонов вывода (например, "Всего наименований на сумму: [текст]")
- 📌 Интеграция с 1С и другими бухгалтерскими программами
Топ-3 проверенных надстройки для русскоязычных пользователей:
| Надстройка | Стоимость | Особенности | Сайт разработчика |
|---|---|---|---|
| Сумма Прописью | Бесплатно / 990 ₽ | Поддерживает 15 валют, есть версия для Excel и Word, русифицированный интерфейс | summapropisyu.ru |
| NumToText | 1 200 ₽ | Работает с числами до 10300, экспорт в PDF, интеграция с Outlook | numtotext.com |
| Русский числитель | Бесплатно | Простой интерфейс, только русский язык, ограничение на коммерческое использование | github.com/rus-num |
⚠️ Внимание: Перед установкой надстройки отключите защиту макросов в Файл → Параметры → Центр управления безопасностью → Параметры центра управления безопасностью → Параметры макросов и выберите "Включить все макросы". После установки верните настройки безопасности на место!
Большинство надстроек устанавливаются через файл .xlam. После загрузки:
- Перейдите в
Файл → Параметры → Надстройки. - Внизу окна выберите "Управление: Надстройки Excel" → "Перейти".
- Нажмите "Обзор", укажите путь к файлу
.xlamи подтвердите установку.
Как удалить надстройку, если она работает некорректно?
1. Закройте все книги Excel.
2. Перейдите в папку %APPDATA%\Microsoft\AddIns (вставьте этот путь в проводник Windows).
3. Удалите файл надстройки (.xlam или .xla).
4. Запустите Excel и проверьте список надстроек в параметрах — он должен быть пуст.
Если надстройка всё ещё активна, очистите кэш Office через "Параметры → Дополнительно → Надстройки → Управление".
4. Использование Power Query для массовой обработки
Power Query (в современных версиях Excel называется "Получить и преобразовать данные") — мощный инструмент для трансформации данных, который тоже можно адаптировать для нашей задачи. Этот метод подойдёт, если вам нужно обработать большой массив чисел (например, колонку с суммами в отчёте).
Алгоритм действий:
- Выделите диапазон с числами и преобразуйте его в таблицу (
Вставка → Таблица). - Перейдите на вкладку
Данныеи выберитеПолучить данные → Из таблицы/диапазона. - В открывшемся редакторе Power Query добавьте
Пользовательский столбецс формулой на языке M:
Пример кода для столбца:
(Число) =>
let
Единицы = {"ноль", "один", "два", ..., "девять"},
Десятки = {"десять", "одиннадцать", ..., "девяносто"},
Сотни = {"сто", "двести", ..., "девятьсот"},
// Логика преобразования (упрощена)
Текст = if Число = 0 then "ноль" else
let
ЦелЧасть = Number.IntegerDivide(Число, 1),
ДробЧасть = Number.Round((Число - ЦелЧасть) * 100, 0),
Рубли = if ЦелЧасть = 1 then "рубль" else if ЦелЧасть > 1 and ЦелЧасть < 5 then "рубля" else "рублей",
Копейки = if ДробЧасть = 1 then "копейка" else if ДробЧасть > 1 and ДробЧасть < 5 then "копейки" else "копеек"
in
Text.Proper(ЧислоВТекст(ЦелЧасть) & " " & Рубли &
(if ДробЧасть > 0 then " " & ЧислоВТекст(ДробЧасть) & " " & Копейки else ""))
in
Текст
⚠️ Внимание: Power Query требует доработки кода для полноценной поддержки русского языка (в примере выше приведена упрощённая схема). Полную версию скрипта с учётом всех правил склонения можно найти в шаблонах в конце статьи.
После настройки не забудьте:
- 🔸 Сохранить запрос (
Главная → Закрыть и загрузить). - 🔸 Обновить данные при изменении исходных чисел (
Данные → Обновить все).
5. Онлайн-конвертеры: быстрый вариант без Excel
Если вам нужно преобразовать сумму прописью один раз или вы работаете не в Excel, можно воспользоваться онлайн-сервисами. Они не требуют установки, но имеют ограничения:
- 🌐 summa-propisyu.ru — поддерживает 7 валют, есть API для разработчиков.
- 🌐 calculat.org — простой интерфейс, копирование результата в один клик.
- 🌐 text.ru (раздел "Сумма прописью") — дополнительные инструменты для SEO-специалистов.
⚠️ Внимание: Онлайн-сервисы не гарантируют конфиденциальность данных. Не вводите в них реальные финансовые суммы из коммерческих документов, если они содержат конфиденциальную информацию.
Для автоматического переноса результата из онлайн-конвертера в Excel:
- Скопируйте полученный текст прописью.
- В Excel выберите ячейку и нажмите
Ctrl + V. - Если текст вставляется в одну ячейку, предварительно установите формат "Текстовый" (
Главная → Формат → Формат ячеек).
6. Ошибки и их решение: почему сумма прописью не работает
Даже при правильной настройке формул или макросов пользователи сталкиваются с типичными проблемами. Разберём самые частые:
| Ошибка | Причина | Решение |
|---|---|---|
#ИМЯ? |
Опечатка в названии функции или неактивны макросы | Проверьте регистр в формуле (например, =СуммаПрописью, а не =суммапрописью). Включите макросы в параметрах безопасности. |
#ЗНАЧ! |
Ячейка содержит текст вместо числа | Используйте =ЗНАЧЕН(A1), чтобы преобразовать текст в число, или проверьте формат ячейки. |
| Неправильное склонение ("1 рублей") | Ошибка в логике функции склонения | Доработайте код VBA: добавьте исключения для чисел 11-19 и проверку на остаток от деления на 100. |
| Медленная работа файла | Слишком много вызовов пользовательской функции | Замените формулы на значения (Копировать → Специальная вставка → Значения) после обработки. |
Если вы используете надстройку "Сумма Прописью" и после обновления Windows она перестала работать, выполните следующие шаги:
- Удалите надстройку через
Панель управления → Программы и компоненты. - Скачайте последнюю версию с официального сайта.
- Установите её с правами администратора (правый клик по установщику → "Запуск от имени администратора").
Для диагностики ошибок в VBA-коде:
- Откройте редактор макросов (
Alt + F11). - В меню выберите
Debug → Compile VBAProject— это выявит синтаксические ошибки. - Используйте
F8для пошагового выполнения кода и отслеживания переменных.
Готовые шаблоны и файлы для скачивания
Чтобы сэкономить время, мы подготовили 3 шаблона с реализованными решениями:
- 📄 Шаблон 1: Формулы для чисел до 999 999 999 (рубли, доллары, евро).
- 📄 Шаблон 2: VBA-макрос с поддержкой копеек и 5 валют.
- 📄 Шаблон 3: Power Query для массовой обработки (10 000+ строк).
📌 Как скачать:
- Перейдите по ссылке на шаблон (открываются в новом окне).
- Нажмите
Файл → Скачать как → Книга Excel (.xlsx). - Для шаблонов с макросами выберите формат
.xlsm.
⚠️ Внимание: Шаблоны с VBA требуют включения макросов при первом открытии. Если вы видите предупреждение системы безопасности, нажмите "Включить содержимое" (только если файл скачан с нашего сайта!).
FAQ: Частые вопросы по преобразованию сумм прописью
Можно ли преобразовать сумму прописью на украинском или казахском языке?
Да, но для этого нужно доработать VBA-макрос или использовать специализированные надстройки. Например, в коде функции СуммаПрописью добавьте новые массивы слов для украинского:
Case "гривна":
Рубль = "гривня|гривні|гривень"
Копейка = "копійка|копійки|копійок"
и аналогично для других языков. Готовые решения для украинского есть в надстройке Сумма Прописью (нужно выбрать язык при установке).
Как сделать, чтобы сумма прописью автоматически обновлялась при изменении числа?
Если вы используете формулы или пользовательскую функцию VBA, обновление происходит автоматически. Для Power Query нужно вручную нажимать Обновить или настроить автоматическое обновление при открытии файла:
- Перейдите на вкладку
Данные. - Выберите
Свойствадля вашего запроса. - Поставьте галочку "Обновлять при открытии файла".
Почему в печатной форме документа сумма прописью обрезается?
Это происходит из-за двух причин:
- Маленькая ширина столбца: расширьте столбец с текстом или включите перенос по словам (
Главная → Формат → Перенос текста). - Ограничения принтера: некоторые драйверы обрезают длинные тексты. Решение — экспортировать документ в PDF (
Файл → Экспорт → Создать PDF/XPS).
Если проблема остаётся, проверьте настройки полей страницы (Разметка страницы → Поля → Узкие).
Можно ли преобразовать сумму прописью в Google Таблицах?
В Google Sheets нет встроенных инструментов для этой задачи, но есть обходные пути:
- Надстройка "AppScript": аналогично VBA, но на языке JavaScript. Пример кода:
function RUB(число) {// Логика преобразования (аналогично VBA)
return текстПрописью;
}
- Импорт из Excel: создайте файл в Excel с макросом, экспортируйте в CSV и импортируйте в Google Таблицы.
- Онлайн-сервисы: скопируйте результат из summa-propisyu.ru и вставьте в ячейку.
Готовые решения для Google Sheets: Number to Words (плагины в Маркетплейсе).
Как добавить сумму прописью в Word из Excel?
Есть 3 способа:
- Копирование: скопируйте текст прописью из Excel и вставьте в Word (
Ctrl + V). - Связывание данных:
- В Word:
Вставка → Объект → Текст из файла. - Выберите файл Excel и укажите ячейку с текстом прописью.
- В Word:
- Макрос Word: напишите VBA-скрипт в Word, который будет считывать данные из Excel:
Sub GetSumFromExcel()Dim xlApp As Object, xlBook As Object
Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open("C:\путь\к\файлу.xlsx")
Selection.TypeText Text:=xlBook.Sheets(1).Range("A1").Value
xlBook.Close: xlApp.Quit
End Sub