Как в Excel автоматически писать числа прописью: от 1 до 1 000 000

Зачем переводить числа в текст в Excel и где это применяется

Работа с числами в текстовом формате — одна из самых востребованных задач в Microsoft Excel, особенно среди бухгалтеров, финансовых аналитиков и юристов. Представьте: вы формируете платежное поручение, договор или финансовый отчет, где сумма должна быть указана не только цифрами, но и прописью. Вручную переписывать "1 254 389 рублей 78 копеек" каждый раз — нерационально и чревато ошибками. Автоматизация этого процесса экономит часы рабочего времени и исключает человеческий фактор.

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

Где это пригодится на практике?

  • 📄 Документооборот: платежные поручения, счета-фактуры, договоры аренды.
  • 💰 Финансовая отчетность: балансы, отчеты о прибылях и убытках.
  • 📊 Аналитика: презентации для инвесторов с текстовой расшифровкой ключевых показателей.
  • 🛒 Розничная торговля: чеки, квитанции, накладные.

Способ 1: Использование функции ЧИСЛОТЕКСТ (для русскоязычной версии Excel)

Если у вас установлена русская версия Excel, то самый простой способ — воспользоваться встроенной функцией ЧИСЛОТЕКСТ. Она автоматически преобразует числа в текстовый формат с учетом правил русского языка, включая падежи и склонения валют.

Формат функции:

=ЧИСЛОТЕКСТ(число; [формат])

Где формат — необязательный аргумент, который определяет стиль отображения. Доступные варианты:

  • 🔢 0 — общий формат (например, "одна тысяча двадцать пять").
  • 💵 1 — формат с валютами (например, "1 254 рубля 38 копеек").
  • 📅 2 — формат даты (не применим для нашей задачи).

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

Формула Результат Пояснение
=ЧИСЛОТЕКСТ(1254.38; 1) "одна тысяча двести пятьдесят четыре рубля 38 копеек" Сумма с копейками
=ЧИСЛОТЕКСТ(100500; 0) "сто тысяч пятьсот" Целое число без валюты
=ЧИСЛОТЕКСТ(-2500; 1) "минус две тысячи пятьсот рублей 00 копеек" Отрицательная сумма
⚠️ Внимание: Функция ЧИСЛОТЕКСТ доступна только в русскоязычных версиях Excel. Если у вас английская версия, используйте способы 2–5.
📊 Какую версию Excel вы используете?
Русскоязычную
Англоязычную
Другую локализацию
Не знаю

Способ 2: Формула для англоязычного Excel (без VBA)

В английской версии Excel нет аналога ЧИСЛОТЕКСТ, но можно обойтись комбинацией функций TEXT, CHOSE и вложенных IF. Этот метод подходит для чисел до 999 999 (без миллионов).

Пример формулы для числа 123:

=TEXT(INT(A1/100),"[&-]сот ") & CHOOSE(MOD(INT(A1/10),10)+1,"десять ","двадцать ","тридцать ","сорок ","пятьдесят ","шестьдесят ","семьдесят ","восемьдесят ","девяносто ") & CHOOSE(MOD(A1,10)+1,"","один","два","три","четыре","пять","шесть","семь","восемь","девять")

Для работы с копейками и рублями формула усложняется. Полный вариант для суммы в формате 1254.38:

Полная формула для рублей и копеек

=IF(INT(A1)=0,"ноль рублей ","") &

TEXT(INT(A1/1000000),"[&-]миллион[ов] ") &

TEXT(MOD(INT(A1/1000),1000),"[&-]тысяч[а] ") &

TEXT(MOD(INT(A1),1000),"[&-]рубль[я/ей] ") &

" " &

TEXT(ROUND((A1-INT(A1))*100,0),"[&-]копеек[йка/ек]")

⚠️ Внимание: Эта формула не учитывает склонение слов "миллион" и "тысяча" по падежам. Для точного результата потребуется доработка или использование VBA.

Преимущества метода:

  • 🔧 Не требует знания программирования.
  • 📥 Работает в любой версии Excel.
  • 🔄 Легко модифицируется под другие валюты.

Недостатки:

  • 🐢 Медленная работа с большими диапазонами.
  • 📏 Ограничение на максимальное число (до 999 999).
  • 🔠 Не идеальное склонение для некоторых чисел.

Способ 3: Надстройка "ЧислоПрописью" (самый простой вариант)

Если вам нужно быстрое и надежное решение без формул и кода, установите бесплатную надстройку "ЧислоПрописью". Она добавляет в Excel новую функцию =ЧИСЛОПРОПИСЬЮ(), которая работает аналогично ЧИСЛОТЕКСТ, но с расширенными настройками.

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

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

После установки в Excel появится новая функция с синтаксисом:

=ЧИСЛОПРОПИСЬЮ(число; [валюта]; [разделитель]; [регистр])

Примеры:

Формула Результат
=ЧИСЛОПРОПИСЬЮ(1254.38; "RUB") "Одна тысяча двести пятьдесят четыре рубля 38 копеек"
=ЧИСЛОПРОПИСЬЮ(100500; "USD"; " "; 1) "СТО ТЫСЯЧ ПЯТЬСОТ ДОЛЛАРОВ 00 ЦЕНТОВ"

Преимущества надстройки:

  • 🌍 Поддержка нескольких валют (RUB, USD, EUR).
  • 🔤 Настройка регистра (строчные/заглавные буквы).
  • ⚡ Быстрая работа даже с большими таблицами.

Способ 4: Макрос на VBA для продвинутых пользователей

Если вам нужно гибкое решение с поддержкой миллионов, миллиардов и кастомизацией вывода, напишите собственный макрос на VBA. Этот метод требует базовых знаний программирования, но дает максимальный контроль над результатом.

Пример кода для модуля VBA:

Function NumToText(ByVal n As Double, Optional currency As String = "RUB") As String

Dim rubles As Variant, kop As Variant

Dim temp As String

' Массивы для склонения рублей и копеек

rubles = Array("рубль", "рубля", "рублей")

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

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

temp = ConvertLessThanOneThousand(Int(n))

If Int(n / 1000) > 0 Then

temp = ConvertLessThanOneThousand(Int(n / 1000)) & " тысяч" & temp

End If

If Int(n / 1000000) > 0 Then

temp = ConvertLessThanOneThousand(Int(n / 1000000)) & " миллионов" & temp

End If

' Обработка копеек

Dim kopValue As Integer

kopValue = Round((n - Int(n)) * 100, 0)

If kopValue > 0 Then

temp = temp & " " & kopValue & " " & Choose(kopValue Mod 10 + 1, kop(2), kop(0), kop(1), kop(1), kop(1), kop(2), kop(2), kop(2), kop(2))

Else

temp = temp & " 00 " & kop(2)

End If

' Склонение рублей

Dim lastDigit As Integer

lastDigit = Int(n) Mod 10

If lastDigit = 1 And Int(n) Mod 100 <> 11 Then

temp = temp & " " & rubles(0)

ElseIf lastDigit > 1 And lastDigit < 5 And (Int(n) Mod 100 < 10 Or Int(n) Mod 100 > 20) Then

temp = temp & " " & rubles(1)

Else

temp = temp & " " & rubles(2)

End If

NumToText = Application.WorksheetFunction.Proper(temp)

End Function

Function ConvertLessThanOneThousand(ByVal n As Integer) As String

Dim units As Variant, tens As Variant, hundreds As Variant

units = Array("", "один", "два", "три", "четыре", "пять", "шесть", "семь", "восемь", "девять")

tens = Array("", "десять", "двадцать", "тридцать", "сорок", "пятьдесят", "шестьдесят", "семьдесят", "восемьдесят", "девяносто")

hundreds = Array("", "сто", "двести", "триста", "четыреста", "пятьсот", "шестьсот", "семьсот", "восемьсот", "девятьсот")

Dim result As String

result = hundreds(Int(n / 100))

If n Mod 100 >= 20 Or n Mod 100 <= 9 Then

result = result & " " & tens(Int((n Mod 100) / 10))

result = result & " " & units(n Mod 10)

ElseIf n Mod 100 >= 10 And n Mod 100 <= 19 Then

result = result & " " & Array("десять", "одиннадцать", "двенадцать", "тринадцать", "четырнадцать", "пятнадцать", "шестнадцать", "семнадцать", "восемнадцать", "девятнадцать")(n Mod 10)

End If

ConvertLessThanOneThousand = Trim(result)

End Function

Как использовать:

  1. Нажмите Alt + F11, чтобы открыть редактор VBA.
  2. Вставьте код в новый модуль (Insert → Module).
  3. Сохраните файл как .xlsm (с поддержкой макросов).
  4. В ячейке используйте формулу =NumToText(A1).
⚠️ Внимание: Макросы могут быть заблокированы настройками безопасности Excel. Чтобы разблокировать, перейдите в Файл → Параметры → Центр управления безопасностью → Параметры центра управления безопасностью → Параметры макросов и выберите "Включить все макросы" (только для доверенных файлов!).

☑️ Подготовка к работе с VBA

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

Способ 5: Онлайн-конвертеры и внешние сервисы

Если вам нужно одноразовое преобразование или вы работаете в Excel Online, где нет VBA, воспользуйтесь внешними сервисами. Они позволяют конвертировать числа в текст прописью без установки надстроек.

Популярные сервисы:

  • 🌐 NumWord — поддерживает рубли, доллары, евро.
  • 🔢 Calculat.org — работает с числами до 999 триллионов.
  • 📊 PlanetCalc — калькулятор с расширенными настройками.

Как интегрировать с Excel:

  1. Скопируйте число из Excel.
  2. Вставьте его в поле на сайте-конвертере.
  3. Скопируйте результат и вставьте обратно в Excel как текст.

Плюсы метода:

  • ⚡ Мгновенный результат без настроек.
  • 🌍 Поддержка нескольких языков.
  • 🔧 Расширенные настройки (валюты, регистр).

Минусы:

  • 🚫 Не подходит для автоматической обработки больших таблиц.
  • 🔒 Риск утечки конфиденциальных данных (если используете корпоративные суммы).
  • 🔄 Требует ручного копирования.

Ошибки и нюансы: что может пойти не так

Даже с автоматизированными инструментами есть риск получить некорректный результат. Рассмотрим типичные ошибки и как их избежать.

Проблема 1: Неправильное склонение валют

Excel и надстройки не всегда корректно склоняют слова "рубль", "доллар" или "евро". Например, вместо "21 рубль" может вывести "21 рублей". Чтобы исправить:

  • 🔧 Вручную отредактируйте формулу или макрос, добавив исключения для чисел 11–19.
  • 📚 Используйте надстройки с поддержкой грамматических правил (например, "ЧислоПрописью Pro").

Проблема 2: Ограничение на размер числа

Большинство формул и макросов не работают с числами больше 999 999 999. Если вам нужно преобразовать миллиарды:

  • 🔢 Разбейте число на части (миллиарды, миллионы, тысячи) и обработайте каждую отдельно.
  • 📈 Используйте продвинутые VBA-скрипты с поддержкой больших чисел.

Проблема 3: Отрицательные числа

При преобразовании отрицательных сумм (например, "-1250") может пропасть знак "минус" или слово "долг". Решение:

=ЕСЛИ(A1<0; "Минус " & ЧИСЛОТЕКСТ(ABS(A1);1); ЧИСЛОТЕКСТ(A1;1))

Проблема 4: Копейки отображаются как "00 копеек"

Если сумма целая (например, "1000 рублей"), но копейки все равно выводятся, отредактируйте формулу:

=ЕСЛИ(ЦЕЛОЕ(A1)=A1; ЧИСЛОТЕКСТ(A1;0) & " рублей"; ЧИСЛОТЕКСТ(A1;1))

FAQ: Частые вопросы по преобразованию чисел в текст

❓ Можно ли в Excel преобразовать число в текст прописью на английском?

Да, в англоязычной версии Excel есть функция =SpellNumber(), но она доступна только после установки надстройки "Analysis ToolPak". Альтернатива — использовать VBA-макрос с английскими правилами склонения.

❓ Почему функция ЧИСЛОТЕКСТ выдает ошибку #ИМЯ?

Ошибка возникает в двух случаях:

  1. У вас англоязычная версия Excel (в ней нет функции ЧИСЛОТЕКСТ).
  2. Опечатка в названии функции (проверьте регистр: должно быть ЧИСЛОТЕКСТ, а не числотекст).

Решение: используйте альтернативные способы из этой статьи.

❓ Как преобразовать число в текст с заглавной буквы?

Используйте функцию =ПРОПНАЧ(ЧИСЛОТЕКСТ(A1;1)) для русского Excel или отредактируйте VBA-макрос, добавив строку:

NumToText = UCase(Left(NumToText, 1)) & Mid(NumToText, 2)
❓ Можно ли автоматически обновлять текст при изменении числа?

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

❓ Как преобразовать дату в текст прописью (например, "первое января")?

Для этого подходит функция ЧИСЛОТЕКСТ с аргументом 2:

=ЧИСЛОТЕКСТ(ДАТАЗНАЧ("01.01.2023"); 2)

Результат: "первое января две тысячи двадцать третьего".