Функция автоматического преобразования чисел в текстовый формат (например, 1234 → «одна тысяча двести тридцать четыре») отсутствует в стандартном наборе инструментов Microsoft Excel. Однако задача решается тремя способами: через встроенные формулы (для простых чисел), пользовательские функции VBA (для рублёвых сумм с копейками) или надстройки от сторонних разработчиков. Если вам нужно оформить финансовые документы (счета, акты, платежки) с суммой прописью — без дополнительных инструментов не обойтись.
Самый быстрый метод для разового преобразования — использовать =ЧИСЛОТЕКСТ() из надстройки «Пакет анализа» (доступна в Excel 2010–2023). Но если требуется обработать диапазон ячеек с учетом склонения валют («рубль», «рубля», «рублей»), придётся писать макрос или подключать специализированные дополнения вроде «NumToText». Ниже разберём все варианты — от простых до профессиональных, с учетом нюансов для российского рубля и иностранных валют.
1. Стандартная функция ЧИСЛОТЕКСТ: ограничения и применение
В Excel нет встроенной функции для преобразования чисел в текстовый формат на русском языке, но есть полумеры. Например, функция =ТЕКСТ(A1; "0") вернёт число как строку, но без разбора по словам. Единственный «родной» инструмент — =ЧИСЛОТЕКСТ(), но он работает только после установки надстройки «Пакет анализа» (Analysis ToolPak).
Чтобы активировать функцию:
- Перейдите в
Файл → Параметры → Надстройки. - Внизу окна выберите
Управление: Надстройки Excel → Перейти. - Отметьте галочкой
Пакет анализаи нажмитеOK.
После этого в списке функций появится =ЧИСЛОТЕКСТ(число; [формат]). Однако у неё есть критические недостатки:
- 🔹 Работает только с целыми числами (дробные округляются).
- 🔹 Нет поддержки склонения валют («рубль/рубля/рублей»).
- 🔹 Выводит текст на английском (
=SPELLNUMBER()в англоязычной версии).
⚠️ Внимание: В русскоязычной версии Excel функция ЧИСЛОТЕКСТ может отсутствовать даже после установки надстройки. В этом случае используйте альтернативные методы из следующих разделов.
2. Формулы для простых чисел (без копеек и валют)
Для преобразования чисел от 0 до 999 999 можно использовать вложенные функции ЕСЛИ с разбивкой числа на сотни, десятки и единицы. Этот метод не подходит для финансовых документов (нет поддержки копеек), но справится с базовыми задачами.
Пример формулы для числа в ячейке A1:
=ЕСЛИ(A1=0;"ноль";
ЕСЛИ(A1<20;ВЫБОР(A1;"один";"два";"три";"четыре";"пять";"шесть";"семь";"восемь";"девять";"десять";"одиннадцать";...;"девятнадцать");
ЕСЛИ(A1<100;ДВ.СЛОВО(ЦЕЛОЕ(A1/10)) & " " & ЕД.СЛОВО(ОСТАТ(A1;10));
ЕСЛИ(A1<1000;СОТ.СЛОВО(ЦЕЛОЕ(A1/100)) & " " & ДВ.СЛОВО(ЦЕЛОЕ(ОСТАТ(A1;100)/10)) & " " & ЕД.СЛОВО(ОСТАТ(A1;10));
"число слишком большое"))))
Где:
- 🔢
ЕД.СЛОВО()— пользовательская функция для единиц (1–9). - 🔢
ДВ.СЛОВО()— для десятков (20, 30... 90). - 🔢
СОТ.СЛОВО()— для сотен (100, 200... 900).
Полный код функций нужно добавить через Alt+F11 (редактор VBA). Готовый шаблон можно скачать здесь.
Как добавить пользовательскую функцию в Excel
Откройте редактор VBA (Alt+F11) → Вставка → Модуль → Вставьте код функции → Сохраните файл как .xlsm (с поддержкой макросов).
| Число | Формула | Результат |
|---|---|---|
| 42 | =ПРОПИСЬ(A1) (пользовательская) |
сорок два |
| 105 | =ПРОПИСЬ(A1) |
сто пять |
| 999 | =ПРОПИСЬ(A1) |
девятьсот девяносто девять |
3. Макрос VBA для сумм с копейками и валютами
Для финансовых документов требуется не только преобразовать число в пропись, но и правильно просклонять валюту («1 рубль 50 копеек», «2 рубля 01 копейка»). Это реализуется через макрос VBA.
Скопируйте этот код в редактор VBA (Alt+F11 → Вставка → Модуль):
Function РублиПрописью(Сумма As Currency) As String
Dim Rub As String, Kop As String, Temp As String
Rub = Пропись(Int(Сумма))
Kop = Пропись((Сумма - Int(Сумма)) * 100)
Select Case Right(Rub, 1)
Case "1": Temp = "рубль"
Case "2", "3", "4": Temp = "рубля"
Case Else: Temp = "рублей"
End Select
РублиПрописью = Rub & " " & Temp
Select Case Right(Kop, 1)
Case "1": Temp = "копейка"
Case "2", "3", "4": Temp = "копейки"
Case Else: Temp = "копеек"
End Select
If Kop <> "ноль" Then РублиПрописью = РублиПрописью & " " & Kop & " " & Temp
End Function
Function Пропись(Число As Integer) As String
' ... (полный код функции Пропись для чисел до 999 999)
End Function
Теперь в ячейке можно использовать:
=РублиПрописью(A1)
Примеры результатов:
- 💰
1234,56→ «одна тысяча двести тридцать четыре рубля пятьдесят шесть копеек». - 💰
1000,01→ «одна тысяча рублей одна копейка».
⚠️ Внимание: Файл с макросами сохраняйте в формате .xlsm, иначе код не будет работать. При открытии файла разрешите выполнение макросов.
4. Надстройки для Excel: готовые решения
Если не хочется возиться с формулами или VBA, установите одну из надстроек:
| Надстройка | Особенности | Ссылка |
|---|---|---|
| NumToText | Поддерживает 15 валют, склонение, копейки. Бесплатная версия с ограничениями. | numtotext.ru |
| ЧислоПрописью | Русский и украинский языки, интеграция с 1С. Платная лицензия. | chislopropisyu.ru |
| Excel Number to Words | Английский и русский, работает в Excel Online. | Microsoft AppSource |
Как установить надстройку:
- Перейдите в
Вставка → Надстройки(илиOffice Надстройки). - Выберите
Получить надстройкии найдите нужную по названию. - Нажмите
Добавитьи следуйте инструкциям.
После установки в меню появится новая вкладка с функцией типа =НТТ_РУ(число).
☑️ Подготовка к установке надстройки
5. Ошибки и их решения
При преобразовании чисел в пропись часто возникают ошибки. Рассмотрим типичные проблемы и способы их устранения:
- 🚫 #ИМЯ? — функция не распознана. Решение: Проверьте правильность названия функции (регистр важен!) или перезагрузите надстройку.
- 🚫 #ЗНАЧ! — неверный формат ячейки. Решение: Преобразуйте ячейку в числовой формат (
Формат ячеек → Числовой). - 🚫 Текст на английском. Решение: Замените
=SPELLNUMBER()на русскоязычную функцию или макрос. - 🚫 Не работают копейки. Решение: Используйте макрос
РублиПрописьюиз раздела 3.
Если после установки надстройки функция не появляется:
- Закройте и снова откройте Excel.
- Проверьте, включена ли надстройка в
Файл → Параметры → Надстройки. - Обновите Excel до последней версии (в старых версиях могут быть баги).
6. Альтернативные способы: Power Query и Google Таблицы
Если Excel не подходит, попробуйте другие инструменты:
Power Query (для массовой обработки)
Импортируйте данные в Power Query (Данные → Получить данные) и добавьте пользовательский столбец со скриптом на M:
= Number.ToText([Число], "ru-RU")
Ограничение: поддерживаются только целые числа без валют.
Google Таблицы
В Google Sheets нет встроенной функции, но можно использовать Apps Script:
- Откройте
Расширения → Apps Script. - Вставьте код функции
function numToText(n) { ... }(аналог VBA). - Сохраните и используйте в таблице как
=numToText(A1).
Пример кода для Google Sheets:
function numToText(n) {
const units = ["", "один", "два", ... , "девять"];
const teens = ["десять", "одиннадцать", ... , "девятнадцать"];
const tens = ["", "десять", "двадцать", ... , "девяносто"];
// ... логика преобразования
return result;
}
7. Оптимизация для финансовых документов
При оформлении платёжных поручений или счетов сумма прописью должна соответствовать стандартам:
- 📌 Первая буква — заглавная («Один» вместо «один»).
- 📌 Копейки пишутся после рублей («100 рублей 50 копеек»).
- 📌 Для долларов/евро используйте макрос с корректировкой валют («доллар/доллара», «евро/евро» — без склонения).
Чтобы автоматизировать заглавную букву, оберните функцию в =ПРОПНАЧ(ЛЕВСИМВ(РублиПрописью(A1))) & ПСТР(РублиПрописью(A1);2;99).
Для иностранных валют модифицируйте макрос:
Function ДолларыПрописью(Сумма As Currency) As String
Dim Dollars As String, Cents As String
Dollars = Пропись(Int(Сумма))
Cents = Пропись((Сумма - Int(Сумма)) * 100)
ДолларыПрописью = Dollars & " долларов " & Cents & " центов"
End Function
FAQ: Частые вопросы
Можно ли преобразовать число в пропись без VBA?
Да, но с ограничениями. Используйте надстройки (NumToText) или онлайн-конвертеры. Для чисел до 999 999 подойдут вложенные функции ЕСЛИ, но это громоздко.
Почему функция возвращает ошибку #ИМЯ?
Скорее всего, не установлена надстройка Пакет анализа или опечатка в названии функции. Проверьте регистр и наличие скобок.
Как преобразовать сумму с копейками?
Используйте макрос РублиПрописью из раздела 3. Он автоматически разбирает рубли и копейки с правильным склонением.
Работает ли это в Excel Online?
Нет, Excel Online не поддерживает VBA и большинство надстроек. Альтернатива — Google Таблицы с Apps Script.
Можно ли преобразовать числа на украинском/казахском?
Да, но потребуется модифицировать макрос или использовать специализированные надстройки (например, ЧислоПрописью с поддержкой нескольких языков).