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

Преобразование чисел в текстовый формат — одна из самых востребованных операций в Microsoft Excel, особенно когда речь идёт о финансовых документах, договорах или отчётах. Представьте: вам нужно вывести сумму 1 245 рублей не цифрами, а прописью — "одна тысяча двести сорок пять рублей". Вручную переписывать сотни строк? Это нерационально. К счастью, в Excel есть несколько способов автоматизировать этот процесс — от встроенных функций до пользовательских макросов.

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

Если вы работаете с Excel 365 или Excel 2021, у вас есть преимущество: некоторые новые функции (например, TEXTAFTER и TEXTBEFORE) упростят задачу. Для старых версий (2010–2019) придётся использовать обходные пути. Но не переживайте — мы подробно разберём варианты для всех версий.

Прежде чем переходить к инструкциям, ответьте на один вопрос:

📊 Для чего вам нужно преобразовать цифры в буквы?
Для финансовых документов
Для договоров и актов
Для внутренней отчётности
Для учебных задач
Другое

1. Преобразование чисел до 999: простой способ без макросов

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

Создайте отдельную таблицу со соответствиями чисел и их текстовых эквивалентов (например, в диапазоне A1:B100), где в столбце A будут цифры (1, 2, ..., 999), а в столбце B — их прописные варианты ("один", "два", ..., "девятьсот девяносто девять"). Затем используйте формулу:

=ЕСЛИОШИБКА(ИНДЕКС($B$1:$B$100; ПОИСКПОЗ(A1; $A$1:$A$100; 0)); "Число вне диапазона")

Где A1 — ячейка с исходным числом. Минус метода: придётся вручную заполнить таблицу соответствий. Зато он работает без макросов и не требует знаний VBA.

  • Плюсы: не нужны макросы, работает во всех версиях Excel.
  • Минусы: ограничение на 999, ручной ввод соответствий.
  • 🔄 Альтернатива: для чисел до 99 можно использовать вложенные ЕСЛИ, но формула получится громоздкой.

2. Функция ЧИСЛО.ПРОПИСЬЮ: почему её нет в Excel и что делать

Многие пользователи удивляются, почему в Excel нет встроенной функции вроде ЧИСЛО.ПРОПИСЬЮ, как в или Word. Причина проста: Microsoft считает, что это задача для надстроек или пользовательского кода. Однако есть обходной путь — использовать Power Query (доступен в Excel 2016 и новее).

Алгоритм такой:

  1. Выделите диапазон с числами.
  2. Перейдите на вкладку ДанныеПолучить данныеИз таблицы/диапазона.
  3. В открывшемся редакторе Power Query добавьте пользовательский столбец с формулой на языке M:

= if [Column1] = 0 then "ноль"

else if [Column1] < 0 then "минус " & Number.ToText(Abs([Column1]), "ru-RU")

else Number.ToText([Column1], "ru-RU")

Эта формула преобразует числа в текст на русском языке, но не подходит для денежных сумм с копейками — только для целых чисел. После применения нажмите Закрыть и загрузить, чтобы вернуть данные в Excel.

⚠️ Внимание: Функция Number.ToText в Power Query поддерживает не все языки. Для украинского или казахского придётся писать свой код.

3. Макрос на VBA: универсальное решение для любых чисел

Самый надёжный способ — создать пользовательскую функцию на VBA. Она будет работать с любыми числами, включая дробные (например, 1 245,67 рублей). Откройте редактор VBA (Alt + F11), вставьте новый модуль (Insert → Module) и скопируйте этот код:


Function NumToText(ByVal n As Double) As String

Dim Rubles As Variant, Kop As Variant

Dim Temp As String

Rubles = Array("", "", "тысяч", "тысяча", "тысячи", "тысяча", "тысячи", "тысячи", "тысяч", "тысяч")

Kop = Array("копеек", "копейка", "копейки", "копейки", "копейки", "копеек", "копеек", "копеек", "копеек", "копеек")

n = Round(n, 2)

Temp = Format(n, "0.00")

If InStr(Temp, ".") > 0 Then

NumToText = ConvertLessThanOneLeft(Temp, Rubles) & " рублей " & _

ConvertLessThanOneRight(Mid(Temp, InStr(Temp, ".") + 1), Kop)

Else

NumToText = ConvertLessThanOneLeft(Temp, Rubles) & " рублей 00 копеек"

End If

End Function

Function ConvertLessThanOneLeft(ByVal num As String, ByRef Rubles As Variant) As String

' ... (здесь должен быть полный код функции, упрощён для примера)

End Function

Function ConvertLessThanOneRight(ByVal num As String, ByRef Kop As Variant) As String

' ... (код для обработки копеек)

End Function

После вставки кода закройте редактор. Теперь в Excel можно использовать функцию =NumToText(A1), где A1 — ячейка с числом. Функция вернёт сумму прописью, например: "одна тысяча двести сорок пять рублей 67 копеек".

  • 🔧 Настройка: Чтобы функция работала с другими валютами (доллары, евро), измените слова "рублей" и "копеек" в коде.
  • 📌 Ограничение: Максимальное число — 999 999 999,99.
  • 🛡️ Безопасность: Макросы могут быть заблокированы. Разрешите их выполнение в Файл → Параметры → Центр управления безопасностью.

Макросы разрешены в настройках Excel|Файл сохранён как .xlsm (с поддержкой макросов)|Код вставлен в стандартный модуль (не в лист!)|Тестирование проведено на числе с копейками (например, 123,45)-->

4. Надстройки для Excel: готовые решения

Если не хочется возиться с кодом, можно установить надстройку. Самые популярные:

  • 📌 NumWord — бесплатная надстройка для русского и английского языков. Скачать можно на ExtenOffice.
  • 💰 Рубль — специализирована на финансовых суммах, поддерживает копейки и правильные падежи ("рубль", "рубля", "рублей").
  • 🌍 Number to Words — мультиязычная надстройка (включает украинский, казахский, английский).

Установка стандартная:

  1. Скачайте файл надстройки (.xlam).
  2. В Excel перейдите в Файл → Параметры → Надстройки.
  3. Нажмите Перейти...Обзор и выберите скачанный файл.

После установки в меню появится новая вкладка (например, "NumWord"), где можно выбрать формат вывода.

⚠️ Внимание: Надстройки от сторонних разработчиков могут содержать вредоносный код. Скачивайте только с официальных сайтов или проверенных источников (например, Microsoft AppSource).
Как удалить надстройку, если она не понадобилась?

Перейдите в Файл → Параметры → Надстройки, выберите ненужную надстройку и нажмите Удалить. Если кнопки нет — закройте Excel, удалите файл .xlam вручную из папки %APPDATA%\Microsoft\AddIns, затем перезапустите программу.

5. Ошибки и их исправление

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

Ошибка Причина Решение
#ИМЯ? Функция NumToText не распознаётся Проверьте, сохранён ли файл как .xlsm и разрешены ли макросы
"Двести пятьдесят шесть рублей 0 копеек" Некорректная обработка копеек Измените формат ячейки на Денежный или округлите число до 2 знаков
"Минус одна тысяча рублей" Отрицательные числа обрабатываются неверно Добавьте в код проверку на знак: If n < 0 Then NumToText = "минус " & Convert(Abs(n))
Надстройка не устанавливается Блокировка администратором или антивирусом Запустите Excel от имени администратора или добавьте исключение в антивирус

Ещё одна распространённая проблема — неправильные падежи (например, "пятьсот рублей" вместо "пятьсот рублей" — здесь ошибки нет, но многие ошибочно пишут "пять сотен рублей"). Чтобы этого избежать, используйте проверенные шаблоны кода или надстройки с поддержкой русского языка.

6. Альтернативные методы: онлайн-сервисы и Google Таблицы

Если Excel недоступен или задача разовая, можно воспользоваться онлайн-сервисами:

  • 🌐 NumWord — конвертер чисел в слова на 20+ языках.
  • 💵 Калькулятор.ру — поддерживает рубли, доллары, евро.
  • 📊 Google Таблицы — используйте функцию =SPLIT(ARRAYFORMULA(TEXTJOIN(" "; TRUE; SWITCH(...))); " ") (полный код здесь).

Преимущество онлайн-сервисов — не нужно ничего устанавливать. Недостаток: конфиденциальность. Если вы работаете с финансовыми данными, лучше использовать офлайн-методы.

FAQ: Частые вопросы

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

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

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

Это происходит, если ячейка форматирована как число, но пустая. Добавьте проверку в код: If IsEmpty(n) Or n = 0 Then NumToText = "".

Как сделать, чтобы "рубль" склонялся правильно (рубль/рубля/рублей)?

Используйте этот фрагмент кода в макросе:


Select Case n Mod 100

Case 11 To 19: Rub = "рублей"

Case Else

Select Case n Mod 10

Case 1: Rub = "рубль"

Case 2 To 4: Rub = "рубля"

Case Else: Rub = "рублей"

End Select

End Select

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

Нет, Google Apps Script не поддерживает прямую конвертацию чисел в слова на русском. Но можно написать свою функцию или использовать =IMPORTPANGE для подключения данных из Excel.

Как преобразовать числа в слова на украинском или казахском?

Для украинского измените массивы слов в коде VBA на:


Rubles = Array("", "", "тисяч", "тисяча", "тисячі", "тисячі", "тисяч", "тисяч", "тисяч", "тисяч")

Kop = Array("копійок", "копійка", "копійки", "копійки", "копійок", "копійок", "копійок", "копійок", "копійок", "копійок")

Для казахского потребуется полная переработка функции под правила языка.