Преобразование чисел в текст прописью в Excel: все способы с примерами

Функция автоматического преобразования чисел в текст прописью отсутствует в стандартном наборе инструментов Microsoft Excel, но эту задачу можно решить несколькими способами. Если вам нужно оформить финансовые документы, счета или договоры с суммами прописью (например, "12345 рублей 67 копеек" → "Двенадцать тысяч триста сорок пять рублей 67 копеек"), используйте комбинацию встроенных функций или пользовательский VBA-код. В 90% случаев достаточно формулы на основе ЧИСЛОТЕКСТ() с доработкой для валюты, но для сложных сценариев (например, склонение по падежам) потребуется макрос.

Основная проблема при ручном преобразовании — корректная обработка копеек, миллионов и склонений ("рубль"/"рубля"/"рублей"). Стандартная функция =TEXT(A1,"[$-419]0.00") вернёт только форматированное число (например, "1 234,56 р."), но не полноценный текст прописью. Ниже разберём все рабочие методы, включая универсальный шаблон для бухгалтерских документов, который учитывает правила русского языка.

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

В русскоязычных версиях Excel доступна функция =ЧИСЛОТЕКСТ(число; [формат]), которая преобразует цифры в текст. Однако она имеет критические недостатки:

  • 🔹 Не поддерживает копейки/центы — преобразует только целые числа.
  • 🔹 Возвращает текст в именительном падеже ("один рубль"), что не всегда подходит для документов.
  • 🔹 Нет автоматического склонения для миллионов/миллиардов.

Пример использования:

=ЧИСЛОТЕКСТ(12345; 1)

Результат: "Двенадцать тысяч триста сорок пять". Чтобы добавить валюту, придётся объединять функцию с текстом:

=ЧИСЛОТЕКСТ(A1;1) & " рубль"
⚠️ Внимание: В англоязычных версиях Excel функция называется BAHTTEXT() и работает только с тайской валютой. Для других языков потребуется VBA.

2. Формула для рублей и копеек с корректным склонением

Чтобы преобразовать число с десятичными знаками (например, 1234,56) в текст вида "Одна тысяча двести тридцать четыре рубля 56 копеек", используйте комбинацию функций:

=ЧИСЛОТЕКСТ(ЦЕЛОЕ(A1);1) & " " & ЕСЛИ(ОСТАТ(ЦЕЛОЕ(A1);100)>19;ЕСЛИ(ОСТАТ(ЦЕЛОЕ(A1);10)>4;"рублей";ЕСЛИ(ОСТАТ(ЦЕЛОЕ(A1);10)=1;"рубль";"рубля"));"рублей") & " " & ЧИСЛОТЕКСТ(ОКРУГЛ((A1-ЦЕЛОЕ(A1))*100;0);1) & " копеек"

Разберём логику:

  1. ЦЕЛОЕ(A1) — отделяет рубли от копеек.
  2. ОСТАТ(ЦЕЛОЕ(A1);100) и ОСТАТ(ЦЕЛОЕ(A1);10) — определяют склонение ("рубль"/"рубля"/"рублей").
  3. (A1-ЦЕЛОЕ(A1))*100 — вычисляет копейки.

Для долларов замените "рубли" на "доллары", а "копейки" на "центы".

1. Убедитесь, что ячейка с числом отформатирована как "Числовой" формат, а не "Текст".

2. Проверьте разделитель целой и дробной части (в русском Excel это запятая, в английском — точка).

3. Для чисел > 1 000 000 добавьте в формулу обработку миллионов (см. раздел 4).

-->

3. Пользовательская функция на VBA для продвинутого преобразования

Если стандартные формулы не подходят (например, нужно склонение по падежам или поддержка миллиардов), создайте пользовательскую функцию VBA:

  1. Нажмите Alt + F11, чтобы открыть редактор VBA.
  2. Вставьте новый модуль: Insert → Module.
  3. Скопируйте код ниже:
Function NumToText(ByVal MyNumber As Currency, Optional CurrencyName As String = "рубль") As String

Dim Rubles As String, Kop As String, Temp As String

Dim DecimalPlace As Integer, Count As Integer

' Обработка целой части

Rubles = ConvertLessThanOneThousand(Int(MyNumber))

MyNumber = (MyNumber - Int(MyNumber)) * 100

Kop = ConvertLessThanOneThousand(CInt(MyNumber))

' Склонение валют

Temp = Sklonenie(Int(MyNumber / 1), "копейка", "копейки", "копеек")

NumToText = Rubles & " " & Sklonenie(Int(MyNumber), CurrencyName, CurrencyName & "а", CurrencyName & "ей") & " " & Kop & " " & Temp

End Function

Function ConvertLessThanOneThousand(ByVal Amount As Integer) As String

' Код преобразования чисел < 1000 (упрощён для примера)

' Полный код с поддержкой миллионов см. по ссылке в конце статьи

End Function

Function Sklonenie(ByVal Number As Integer, ByVal One As String, ByVal Two As String, ByVal Five As String) As String

Select Case Number Mod 100

Case 11 To 19: Sklonenie = Five

Case Else

Select Case Number Mod 10

Case 1: Sklonenie = One

Case 2 To 4: Sklonenie = Two

Case Else: Sklonenie = Five

End Select

End Select

End Function

Теперь в Excel можно использовать:

=NumToText(A1; "доллар")
⚠️ Внимание: Макросы работают только в файлах с расширением .xlsm. При открытии файла включите поддержку макросов в настройках безопасности.
Полный код VBA для миллионов и миллиардов

Скачайте готовый модуль с поддержкой всех падежей и валют по ссылке: [example.com/excel-vba-numtostring](https://example.com/excel-vba-numtostring). В архиве также есть примеры для украинской гривны и казахстанского тенге.

4. Обработка миллионов и миллиардов в формулах

Для чисел > 1 000 000 стандартная ЧИСЛОТЕКСТ не учитывает склонение ("миллион"/"миллиона"/"миллионов"). Используйте вложенную формулу:

=ЕСЛИ(A1>=1000000;

ЧИСЛОТЕКСТ(ЦЕЛОЕ(A1/1000000);1) & " " &

ЕСЛИ(ОСТАТ(ЦЕЛОЕ(A1/1000000);10)=1;"миллион";ЕСЛИ(ОСТАТ(ЦЕЛОЕ(A1/1000000);10)>4;"миллионов";"миллиона")) & " " &

ЧИСЛОТЕКСТ(ОСТАТ(ЦЕЛОЕ(A1);1000000);1);

ЧИСЛОТЕКСТ(A1;1)

)

Пример для 1 234 567,89:

  • 🔹 Результат: "Один миллион двести тридцать четыре тысячи пятьсот шестьдесят семь рублей 89 копеек".
  • 🔹 Для миллиардов добавьте аналогичный блок с делением на 1000000000.
ЧислоФормула без обработки миллионовФормула с обработкой
1 000 000Один миллионОдин миллион
1 001 000Один миллион одна тысячаОдин миллион одна тысяча
2 222 222Два миллиона двести...Два миллиона двести...
5 000 000Пять миллионовПять миллионов

5. Преобразование чисел прописью в Google Таблицах

В Google Sheets нет функции ЧИСЛОТЕКСТ, но её можно эмулировать с помощью Apps Script:

  1. Откройте Расширения → Apps Script.
  2. Вставьте код:
function numToWords(num) {

const units = ["", "один", "два", "три", ...]; // Полный массив см. в документации

// Логика преобразования

return result;

}

Затем в ячейке используйте:

=numToWords(A1)

Готовые скрипты для русского языка можно найти на GitHub (поиск по запросу "google sheets number to words russian").

Стандартную функцию ЧИСЛОТЕКСТ|Формулу с обработкой копеек|VBA-макрос|Google Apps Script|Другой вариант-->

6. Типичные ошибки и как их избежать

При преобразовании чисел в текст прописью пользователи сталкиваются с следующими проблемами:

  • 🔸 "#ИМЯ?" — ошибка появляется, если функция ЧИСЛОТЕКСТ отсутствует в вашей версии Excel. Решение: проверьте региональные настройки (Файл → Параметры → Язык).
  • 🔸 Неправильное склонение ("1 рубль" вместо "1 рубля") — исправляйте формулу добавлением условия ЕСЛИ(ОСТАТ(...)).
  • 🔸 Округление копеек — используйте ОКРУГЛ((A1-ЦЕЛОЕ(A1))*100;0), чтобы избежать погрешностей (например, 0,999 вместо 1,00).

Для проверки результата используйте тестовые значения:

  • 📌 1,01 → "Один рубль одна копейка"
  • 📌 2,02 → "Два рубля две копейки"
  • 📌 5,05 → "Пять рублей пять копеек"

7. Альтернативные решения: надстройки и онлайн-сервисы

Если не хотите возиться с формулами, используйте готовые инструменты:

ИнструментПлюсыМинусы
NumToWords Add-inПоддерживает 20+ языков, склонение по падежамПлатная версия для коммерческого использования
PlanFix КонвертерБесплатный онлайн-сервис, экспорт в ExcelОграничение на количество запросов
GitHub (VBA-скрипты)Открытый код, кастомизацияТребует навыков работы с VBA

Для разовых задач удобнее онлайн-сервисы, для постоянной работы — надстройки или VBA.

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

Можно ли преобразовать число прописью без VBA?

Да, с помощью комбинации функций ЧИСЛОТЕКСТ, ЕСЛИ, ОСТАТ и ЦЕЛОЕ. Однако для полноценного склонения (например, "миллион"/"миллиона") потребуется VBA или надстройка.

Почему функция ЧИСЛОТЕКСТ возвращает "#####"?

Это происходит, если ширина столбца недостаточна для отображения длинного текста. Растяните столбец или уменьшите шрифт. Также проверьте, что ячейка не отформатирована как "Дата".

Как преобразовать число прописью в Word?

В Microsoft Word нет встроенной функции для этой задачи. Используйте:

  1. Макрос VBA (аналогично Excel).
  2. Поле {= {NUMBER \* CardText} (работает только для английского).
  3. Онлайн-конвертеры с копированием результата.
Можно ли автоматически обновлять сумму прописью при изменении числа?

Да, если используете формулу или VBA-функцию. При изменении исходного числа текст обновляется автоматически. Для надстроек проверьте настройки автообновления.

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

Используйте формулу с условием:

=ЕСЛИ(ОКРУГЛ((A1-ЦЕЛОЕ(A1))*100;0)<10;"0" & ОКРУГЛ((A1-ЦЕЛОЕ(A1))*100;0);ОКРУГЛ((A1-ЦЕЛОЕ(A1))*100;0))

Или модифицируйте VBA-код, добавив проверку на ведущие нули.