Преобразование числовых значений в текстовый формат («1000» → «одна тысяча рублей») — стандартная задача в бухгалтерии, финансовых отчётах и договорах. Вручную переписывать цифры прописью неэффективно, особенно при работе с большими массивами данных. К счастью, Excel предлагает несколько способов автоматизации этого процесса, от встроенных функций до пользовательских скриптов.
Многие пользователи ошибочно считают, что для такой задачи обязательно нужен VBA или сторонние надстройки. На самом деле даже в базовой версии Excel (начиная с 2010 года) есть инструменты для решения этой задачи без программирования. Однако у каждого метода есть нюансы: где-то потребуется ручная настройка разрядности, где-то — учёт валюты или падежей. В этой статье разберём 3 рабочих способа с пошаговыми инструкциями, примерами и предупреждениями о типичных ошибках.
Если вам нужно срочно получить результат — переходите сразу к разделу с готовым VBA-скриптом. Для тех, кто предпочитает обходиться без макросов, подойдёт метод с Power Query или комбинацией стандартных функций. А если вы работаете с Excel Online или мобильной версией, обратите внимание на ограничения — не все способы там поддерживаются.
Способ 1: Стандартные функции Excel (без VBA)
Самый простой, но и самый ограниченный метод — использование комбинации функций ТЕКСТ, ПОДСТАВИТЬ и ВПР. Он подходит для сумм до 999 999 рублей и не учитывает копейки. Основной плюс — работает во всех версиях Excel, включая Excel Online.
Алгоритм действий:
- Создайте вспомогательную таблицу с числами от 0 до 999 и их текстовыми эквивалентами (например, «сто двадцать три»).
- Используйте функцию
ЦЕЛОЕдля отделения рублей от копеек. - Примените
ВПРдля поиска текстового эквивалента числа.
Пример формулы для ячейки A1 с числом 1234:
=ПОДСТАВИТЬ(ВПР(ЦЕЛОЕ(A1/1000);Таблица_тысяч;2;ЛОЖЬ)&" "&ВПР(ОСТАТ(A1;1000);Таблица_единиц;2;ЛОЖЬ);" ";" ")
⚠️ Внимание: Этот метод требует предварительной подготовки двух справочных таблиц — для единиц (0-999) и тысяч (1000-999000). Без них формула не будет работать.
Главный недостаток способа — невозможность автоматически склонять валюту («рубль», «рубля», «рублей»). Для этого придётся добавлять дополнительные условия с ЕСЛИ или использовать VBA.
Способ 2: Power Query (для Excel 2016 и новее)
Power Query — мощный инструмент для трансформации данных, который позволяет создавать пользовательские функции, в том числе для конвертации чисел в текст. Этот метод поддерживает суммы любой разрядности и может учитывать копейки, но требует Excel 2016 или новее (включая Microsoft 365).
Пошаговая инструкция:
- Перейдите на вкладку
Данные→Получить данные→Из других источников→Пустой запрос. - В открывшемся редакторе Power Query создайте новую функцию:
Домашняя лента→Дополнительно→Редактор дополнительных функций. - Вставьте следующий код (приведён упрощённый вариант для рублей):
(number as number) as text =>let
units = {"", "один", "два", "три", ..., "девять"},
teens = {"десять", "одиннадцать", ..., "девятнадцать"},
tens = {"", "десять", "двадцать", ..., "девяносто"},
hundreds = {"", "сто", "двести", ..., "девятьсот"},
// Логика преобразования числа в текст
...
in
text
- Сохраните функцию под именем
fnNumberToWordsRUBи примените её к вашему столбцу с суммами.
Преимущества метода:
- 🔹 Поддерживает суммы до 999 триллионов (ограничение Excel).
- 🔹 Можно доработать для учёта копеек и правильного склонения валют.
- 🔹 Не требует включения макросов (в отличие от VBA).
⚠️ Внимание: В Excel Online Power Query доступен, но функциональность ограничена. Например, пользовательские функции могут не сохраняться между сессиями.
☑️ Подготовка данных для Power Query
Способ 3: VBA-скрипт для любой версии Excel
Если вам нужно универсальное решение, работающее во всех версиях Excel (включая старые) и поддерживающее склонение валют, копейки и разные языки — используйте VBA. Этот метод требует включения макросов, но даёт максимальную гибкость.
Инструкция по настройке:
- Нажмите
Alt + F11, чтобы открыть редактор VBA. - Вставьте новый модуль:
Insert→Module. - Скопируйте следующий код (полная версия с поддержкой рублей и копеек):
Function SumProp(ByVal MyNumber As Currency) As StringDim RUB As String, Kop As String, Temp As String
Dim DecimalPlace As Integer, Count As Integer
' Основная логика преобразования
...
' Учёт склонения рублей
If Right(RUB, 1) = "1" And Left(Right(RUB, 2), 1) <> "1" Then
RUB = RUB & " рубль"
ElseIf (Right(RUB, 1) = "2" Or Right(RUB, 1) = "3" Or Right(RUB, 1) = "4") And Left(Right(RUB, 2), 1) <> "1" Then
RUB = RUB & " рубля"
Else
RUB = RUB & " рублей"
End If
SumProp = RUB & " " & Kop
End Function
- Закройте редактор и вернитесь в Excel. Теперь можно использовать функцию
=SumProp(A1).
Что умеет этот скрипт:
- 🔹 Преобразует суммы до
999 999 999 999,99. - 🔹 Автоматически склоняет «рубль/рубля/рублей» и «копейка/копейки/копеек».
- 🔹 Работает с отрицательными числами (выводит «минус одна тысяча...»).
Как адаптировать скрипт для другой валюты?
Чтобы заменить рубли на доллары или евро, измените строки склонения в конце функции. Например, для долларов используйте:
If Right(RUB, 1) = "1" And Left(Right(RUB, 2), 1) <> "1" Then
RUB = RUB & " доллар"
Else
RUB = RUB & " долларов"
End If
Для гривен или тенге логика аналогична, но проверьте правила склонения в украинском/казахском языке.
⚠️ Внимание: В Excel Online и мобильной версии макросы не работают. Также некоторые компании блокируют выполнение VBA по соображениям безопасности.
Сравнение методов: какой выбрать?
Чтобы определиться с оптимальным способом, оцените ваши задачи по ключевым критериям:
| Критерий | Стандартные функции | Power Query | VBA |
|---|---|---|---|
| Макс. поддерживаемая сумма | 999 999 | 999 триллионов | 999 миллиардов |
| Поддержка копеек | ❌ Нет | ✅ Да (требует доработки) | ✅ Да |
| Склонение валют | ❌ Нет | ⚠️ Частично (ручная настройка) | ✅ Да |
| Работа в Excel Online | ✅ Да | ✅ Да (ограниченно) | ❌ Нет |
| Требуемые навыки | Базовые | Средние | Продвинутые |
Для разовых задач (например, конвертация сумм в одном отчёте) подойдёт первый способ с стандартными функциями. Если вам нужна автоматизация для регулярных отчётов и вы работаете в Excel 2016+, выбирайте Power Query. Для максимальной гибкости (особенно при работе с валютами и крупными суммами) оптимален VBA.
Типичные ошибки и как их избежать
Даже при использовании готовых решений пользователи часто сталкиваются с проблемами. Вот самые распространённые:
- 🔴 Ошибка #ЗНАЧ! в формулах: Возникает, если вспомогательные таблицы с текстовыми эквивалентами чисел не созданы или имеют ошибки в названиях. Проверьте диапазоны в функции
ВПР. - 🔴 Неправильное склонение валют: В VBA-скрипте может сработать неверное условие (например, «21 рубль» вместо «21 рубль»). Исправьте логику в блоке
If...Then. - 🔴 Power Query не обновляет данные: После изменения исходных сумм нажмите
Данные→Обновить все. В некоторых версиях Excel автообновление отключено по умолчанию. - 🔴 Макросы отключены: В Excel 2010-2013 проверьте настройки безопасности:
Файл→Параметры→Центр управления безопасностью→Параметры центра...→Настройка макросов→ выберите «Включить все макросы».
Ещё одна частая проблема — некорректное отображение чисел с копейками. Например, вместо «100 рублей 50 копеек» выводится «100 рублей 0,5». Это происходит, если в VBA-скрипте не учтён формат ячейки. Решение: перед обработкой преобразуйте число в текст с двумя знаками после запятой:
MyNumber = Format(MyNumber, "0.00")
Дополнительные возможности: валюты, языки, стили
Базовые методы покрывают 80% задач, но иногда требуются доработки. Например:
- 🌍 Поддержка нескольких языков: В VBA можно добавить массивы с названиями чисел на английском, немецком или украинском. Пример для английского:
Dim units_EN As Variantunits_EN = Array("", "one", "two", ..., "nine")
- 💵 Разные валюты в одном документе: Модифицируйте VBA-функцию, добавив второй аргумент для валюты:
Function SumProp(ByVal MyNumber As Currency, ByVal Currency As String) As StringЗатем используйте
=SumProp(A1; "USD"). - 📑 Вывод суммы заглавными буквами: Оберните результат в функцию
ПРОПНАЧ:=ПРОПНАЧ(SumProp(A1))
Для бухгалтерских документов часто требуется пропись суммы с заглавной буквы и точкой в конце (например, «Одна тысяча рублей 00 копеек.»). Добиться этого можно комбинацией функций:
=ПРОПИСН(ЛЕВСИМВ(SumProp(A1);1)) & ПСТР(SumProp(A1);2;99) & "."
Альтернативные решения: надстройки и онлайн-сервисы
Если вам не подходит ни один из описанных методов, рассмотрите сторонние инструменты:
- 📦 Надстройки для Excel:
- 🔹 NumWords — плагин с поддержкой 20+ языков (включая русский). Стоимость: ~$20.
- 🔹 Атлас-Пропись — бесплатная надстройка для бухгалтерских задач (работает только с рублями).
- 🌐 Онлайн-конвертеры:
- 🔹 Calculat.org — поддерживает рубли, доллары, евро.
- 🔹 Summa-Propisyu.ru — генератор с API для автоматизации.
⚠️ Внимание: Онлайн-сервисы не подходят для конфиденциальных данных. Если вы работаете с финансовой отчётностью, используйте оффлайн-методы.
Преимущество надстроек — готовые шаблоны для бухгалтерских документов (например, автоматическое добавление «в том числе НДС 20%»). Однако они могут конфликтовать с другими плагинами или замедлять работу Excel при обработке больших файлов.
FAQ: Частые вопросы
Можно ли сделать сумму прописью в Google Таблицах?
Да, но функциональность ограничена. В Google Sheets нет аналога VBA, но можно использовать App Script (аналог макросов). Вот пример кода:
function RUB_PROPIS(n) {
// Логика преобразования
...
return result;
}
Или воспользуйтесь бесплатной надстройкой "Прописью" из магазина расширений.
Почему в результате появляются лишние пробелы?
Это типичная проблема при использовании функции ВПР или конкатенации строк. Удалите лишние пробелы функцией СЖПРОБЕЛЫ:
=СЖПРОБЕЛЫ(Ваша_формула)
В VBA добавьте строку SumProp = Trim(SumProp) перед выводом результата.
Как преобразовать сумму в словах в число обратно?
Обратное преобразование («одна тысяча рублей» → 1000) в Excel не реализуемо стандартными средствами. Потребуется:
- Создать словарь соответствий (например, «тысяча» = 1000).
- Использовать VBA с регулярными выражениями для парсинга строки.
Готовых решений для этой задачи нет — проще перепроверять данные вручную.
Работает ли это в Excel для Mac?
Да, но с оговорками:
- 🔹 Power Query доступен в Excel 2016 для Mac и новее, но интерфейс может отличаться.
- 🔹 VBA поддерживается, но некоторые функции (например,
Currency) работают иначе. ЗаменитеCurrencyнаDouble. - 🔹 Горячие клавиши могут отличаться (например,
Option + F11вместоAlt + F11для открытия редактора VBA).
Можно ли автоматически добавлять сумму прописью в Word из Excel?
Да, есть два способа:
- Связывание данных: Вставьте в Word связанный объект Excel (
Вставка→Объект→Лист Microsoft Excel). Затем используйте VBA в Word для обработки данных. - Экспорт и замена: Сохраните Excel-файл как CSV, откройте в Word и запустите макрос для замены чисел на текст.
Для бухгалтерских документов удобнее использовать шаблоны Word с полями, которые автоматически подтягивают данные из Excel.