Как перевести число в пропись в Excel: формулы, макросы и надстройки

Функция автоматического преобразования чисел в текстовый формат (например, 1234 → «одна тысяча двести тридцать четыре») отсутствует в стандартном наборе инструментов Microsoft Excel. Однако задача решается тремя способами: через встроенные формулы (для простых чисел), пользовательские функции VBA (для рублёвых сумм с копейками) или надстройки от сторонних разработчиков. Если вам нужно оформить финансовые документы (счета, акты, платежки) с суммой прописью — без дополнительных инструментов не обойтись.

Самый быстрый метод для разового преобразования — использовать =ЧИСЛОТЕКСТ() из надстройки «Пакет анализа» (доступна в Excel 2010–2023). Но если требуется обработать диапазон ячеек с учетом склонения валют («рубль», «рубля», «рублей»), придётся писать макрос или подключать специализированные дополнения вроде «NumToText». Ниже разберём все варианты — от простых до профессиональных, с учетом нюансов для российского рубля и иностранных валют.

1. Стандартная функция ЧИСЛОТЕКСТ: ограничения и применение

В Excel нет встроенной функции для преобразования чисел в текстовый формат на русском языке, но есть полумеры. Например, функция =ТЕКСТ(A1; "0") вернёт число как строку, но без разбора по словам. Единственный «родной» инструмент — =ЧИСЛОТЕКСТ(), но он работает только после установки надстройки «Пакет анализа» (Analysis ToolPak).

Чтобы активировать функцию:

  1. Перейдите в Файл → Параметры → Надстройки.
  2. Внизу окна выберите Управление: Надстройки Excel → Перейти.
  3. Отметьте галочкой Пакет анализа и нажмите 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, иначе код не будет работать. При открытии файла разрешите выполнение макросов.
📊 Какой метод вы предпочитаете для преобразования чисел в пропись?
Формулы без VBA
Макросы VBA
Надстройки от сторонних разработчиков
Онлайн-конвертеры

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

Если не хочется возиться с формулами или VBA, установите одну из надстроек:

Надстройка Особенности Ссылка
NumToText Поддерживает 15 валют, склонение, копейки. Бесплатная версия с ограничениями. numtotext.ru
ЧислоПрописью Русский и украинский языки, интеграция с 1С. Платная лицензия. chislopropisyu.ru
Excel Number to Words Английский и русский, работает в Excel Online. Microsoft AppSource

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

  1. Перейдите в Вставка → Надстройки (или Office Надстройки).
  2. Выберите Получить надстройки и найдите нужную по названию.
  3. Нажмите Добавить и следуйте инструкциям.

После установки в меню появится новая вкладка с функцией типа =НТТ_РУ(число).

☑️ Подготовка к установке надстройки

Выполнено: 0 / 4

5. Ошибки и их решения

При преобразовании чисел в пропись часто возникают ошибки. Рассмотрим типичные проблемы и способы их устранения:

  • 🚫 #ИМЯ? — функция не распознана. Решение: Проверьте правильность названия функции (регистр важен!) или перезагрузите надстройку.
  • 🚫 #ЗНАЧ! — неверный формат ячейки. Решение: Преобразуйте ячейку в числовой формат (Формат ячеек → Числовой).
  • 🚫 Текст на английском. Решение: Замените =SPELLNUMBER() на русскоязычную функцию или макрос.
  • 🚫 Не работают копейки. Решение: Используйте макрос РублиПрописью из раздела 3.

Если после установки надстройки функция не появляется:

  1. Закройте и снова откройте Excel.
  2. Проверьте, включена ли надстройка в Файл → Параметры → Надстройки.
  3. Обновите Excel до последней версии (в старых версиях могут быть баги).

6. Альтернативные способы: Power Query и Google Таблицы

Если Excel не подходит, попробуйте другие инструменты:

Power Query (для массовой обработки)

Импортируйте данные в Power Query (Данные → Получить данные) и добавьте пользовательский столбец со скриптом на M:

= Number.ToText([Число], "ru-RU")

Ограничение: поддерживаются только целые числа без валют.

Google Таблицы

В Google Sheets нет встроенной функции, но можно использовать Apps Script:

  1. Откройте Расширения → Apps Script.
  2. Вставьте код функции function numToText(n) { ... } (аналог VBA).
  3. Сохраните и используйте в таблице как =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.

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

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