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

Вы устали вручную переписывать числовые значения в текстовый формат? В Microsoft Excel нет встроенной функции для автоматического преобразования цифр в пропись на русском языке, но это не означает, что задача невыполнима. Существует как минимум 5 рабочих способов решить эту проблему — от простых формул до продвинутых макросов. В зависимости от версии программы (Excel 2010, 2016, 2019 или Microsoft 365) и ваших навыков работы с таблицами можно выбрать оптимальный метод.

В этой статье мы разберём:

  • 🔹 Встроенные функции Excel (с ограничениями для русского языка)
  • 🔹 Пользовательские формулы с поддержкой копеек и валюты
  • 🔹 Готовые надстройки для быстрого преобразования
  • 🔹 VBA-скрипты для автоматизации (включая код для новичков)
  • 🔹 Онлайн-конвертеры и внешние инструменты

Особое внимание уделим обработке дробных чисел (копеек/центов) и правильному склонению существительных ("рубль", "рубля", "рублей"). Все примеры адаптированы под российские стандарты оформления документов.

📊 Как часто вам нужно преобразовывать цифры в пропись в Excel?
Ежедневно
Несколько раз в неделю
Рядом
Очень редко

1. Почему в Excel нет стандартной функции для русского языка?

В отличие от английской версии, где есть функция =SPELLNUMBER(), в русскоязычном Excel аналогичного инструмента нет. Это связано с:

  • 📌 Сложностью склонений в русском языке (например, "один рубль" vs "два рубля")
  • 📌 Отсутствием унифицированных стандартов для финансовой документации в разных странах
  • 📌 Техническими ограничениями ранних версий программы (до Excel 2013)

Однако это не означает, что задача нерешаема. Microsoft предлагает обходные пути через:

  1. Надстройки от сторонних разработчиков (например, NumToText или Русский числительный)
  2. Пользовательские функции на VBA (Visual Basic for Applications)
  3. Формулы массивов (для опытных пользователей)
⚠️ Внимание: В Excel Online (веб-версия) возможности по работе с VBA ограничены. Если вам нужно преобразовывать числа прописью в браузере, рассмотрите онлайн-конвертеры или десктопную версию программы.

2. Способ 1: Пользовательская функция на VBA (самый надёжный метод)

Для тех, кто готов немного погрузиться в программирование, VBA-скрипт — это универсальное решение. Оно работает во всех версиях Excel (начиная с 2007) и поддерживает:

  • 💰 Правильное склонение валют ("рубль/доллар/евро")
  • 📊 Обработку дробных чисел (копейки, центы)
  • 🔢 Поддержку отрицательных значений

Чтобы добавить функцию, выполните шаги:

Откройте редактор VBA (Alt + F11)|

Вставьте новый модуль (Insert → Module)|

Скопируйте код функции (см. ниже)|

Сохраните файл как .xlsm (с поддержкой макросов)|

Используйте функцию =РублиПрописью(A1) в ячейках-->

Вот готовый код для вставки:

Function РублиПрописью(Число As Double) As String

Dim Рубли As Variant, Копейки As Variant

Dim ТекстРублей As String, ТекстКопеек As String

' Разделяем рубли и копейки

Рубли = Int(Число)

Копейки = Round((Число - Рубли) * 100, 0)

' Преобразуем рубли

ТекстРублей = ПреобразоватьЧисло(Рубли, True)

' Преобразуем копейки

If Копейки > 0 Then

ТекстКопеек = ПреобразоватьЧисло(Копейки, False)

РублиПрописью = ТекстРублей & " рублей " & Копейки & " копеек"

Else

РублиПрописью = ТекстРублей & " рублей"

End If

End Function

Function ПреобразоватьЧисло(Число As Double, Склонять As Boolean) As String

Dim Единицы As Variant, Десятки As Variant

Dim Сотни As Variant, Текст As String

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

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

Десятки = Array("", "десять", "двадцать", "тридцать", "сорок", "пятьдесят", _

"шестьдесят", "семьдесят", "восемьдесят", "девяносто")

Сотни = Array("", "сто", "двести", "триста", "четыреста", "пятьсот", _

"шестьсот", "семьсот", "восемьсот", "девятьсот")

' Обработка чисел от 0 до 999

If Число = 0 Then

ПреобразоватьЧисло = "ноль"

Exit Function

End If

' Сотни

Текст = Сотни(Int(Число / 100)) & " "

' Десятки и единицы

Число = Число Mod 100

If Число >= 20 Then

Текст = Текст & Десятки(Int(Число / 10)) & " "

Число = Число Mod 10

ElseIf Число >= 10 Then

Select Case Число

Case 10: Текст = Текст & "десять "

Case 11: Текст = Текст & "одиннадцать "

Case 12: Текст = Текст & "двенадцать "

Case 13: Текст = Текст & "тринадцать "

Case 14: Текст = Текст & "четырнадцать "

Case 15: Текст = Текст & "пятнадцать "

Case 16: Текст = Текст & "шестнадцать "

Case 17: Текст = Текст & "семнадцать "

Case 18: Текст = Текст & "восемнадцать "

Case 19: Текст = Текст & "девятнадцать "

End Select

Число = 0

End If

' Единицы

If Число > 0 Then

Текст = Текст & Единицы(Число) & " "

End If

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

If Склонять Then

Число = Int(Число)

Select Case Число Mod 100

Case 11 To 19: Текст = Текст & "рублей"

Case Else

Select Case Число Mod 10

Case 1: Текст = Текст & "рубль"

Case 2, 3, 4: Текст = Текст & "рубля"

Case Else: Текст = Текст & "рублей"

End Select

End Select

End If

ПреобразоватьЧисло = Trim(Текст)

End Function

3. Способ 2: Готовые надстройки для Excel

Если работа с кодом вам не подходит, можно воспользоваться бесплатными или платными надстройками. Они устанавливаются за несколько кликов и добавляют в Excel новые функции. Вот топ-3 решения:

Надстройка Стоимость Особенности Ссылка
NumToText Бесплатно Поддерживает рубли, доллары, евро. Работает в Excel 2010-2019 Скачать
Русский числительный 490 ₽ Полная поддержка склонений, работа с отрицательными числами Купить
NumberToWords Бесплатно Английская версия, но есть русификатор. Требует .NET Framework Скачать

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

  1. Скачайте файл с расширением .xlam или .xlsm.
  2. Откройте Excel и перейдите в Файл → Параметры → Надстройки.
  3. Внизу окна выберите Перейти... (или Go... в английской версии).
  4. Нажмите Обзор, выберите скачанный файл и подтвердите установку.
⚠️ Внимание: Надстройки от сторонних разработчиков могут содержать вредоносный код. Скачивайте файлы только с официальных сайтов или проверенных источников (например, GitHub). Перед установкой проверьте файл антивирусом.

4. Способ 3: Формулы без VBA (для опытных пользователей)

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

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

=ТЕКСТ(ЦЕЛОЕ(A1);"[ДБЧР] # рубль [ДБЧР] # рубля [ДБЧР] # рублей;") &

ЕСЛИ(ОСТАТ(A1;1)>0,4;"") &

ЕСЛИ(ОКРУГЛ((A1-ЦЕЛОЕ(A1))*100;0)>0; " " & ОКРУГЛ((A1-ЦЕЛОЕ(A1))*100;0) & " копеек";"")

Как это работает:

  • 🔢 ЦЕЛОЕ(A1) — отделяет целую часть числа (рубли).
  • 🔢 ТЕКСТ(..., "[ДБЧР] ...") — преобразует число в текст прописью (только для целых чисел!).
  • 🔢 ОКРУГЛ((A1-ЦЕЛОЕ(A1))*100;0) — вычисляет копейки.

Ограничения метода:

  • ❌ Не поддерживает числа больше 999 999.
  • ❌ Некорректно склоняет некоторые числительные (например, "два рубля" вместо "два рубля").
  • ❌ Не работает с отрицательными значениями.
Как адаптировать формулу для долларов или евро

Замените в формуле слова "рубль"/"рубля"/"рублей" на "доллар"/"доллара"/"долларов" или "евро" (склонение не меняется).

Для евро используйте конструкцию:

=ТЕКСТ(ЦЕЛОЕ(A1);"[ДБЧР] # евро;") & ЕСЛИ(ОКРУГЛ((A1-ЦЕЛОЕ(A1))*100;0)>0; " " & ОКРУГЛ((A1-ЦЕЛОЕ(A1))*100;0) & " центов";"")

5. Способ 4: Онлайн-конвертеры (для разовых задач)

Если вам нужно преобразовать цифры в пропись один раз (например, для договора или счёта), проще воспользоваться онлайн-сервисами. Они не требуют установки и работают в любом браузере. Вот проверенные инструменты:

  • 🌐 NumToWords.ru — поддерживает рубли, доллары, евро и гривны. Есть API для автоматизации.
  • 🌐 Числительное.рф — удобный интерфейс с копированием результата в один клик.
  • 🌐 Прописью.онлайн — сохраняет историю преобразований (требуется регистрация).

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

  1. Скопируйте число из Excel (например, 15432,78).
  2. Вставьте его в поле на сайте.
  3. Выберите валюту ("рубли") и нажмите Преобразовать.
  4. Скопируйте результат обратно в Excel.
⚠️ Внимание: Онлайн-сервисы не подходят для конфиденциальных данных (номера счетов, суммы контрактов). Для работы с финансовой информацией используйте оффлайн-методы (VBA или надстройки).

6. Способ 5: Power Query (для Excel 2016 и новее)

Power Query — это мощный инструмент для преобразования данных, доступный в Excel 2016 и новее (а также в Power BI). С его помощью можно создать пользовательскую функцию для конвертации чисел в текст.

Алгоритм действий:

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

NumberToWords = (number as number) as text =>

let

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

teens = {"десять", "одиннадцать", "двенадцать", "тринадцать", "четырнадцать", "пятнадцать",

"шестнадцать", "семнадцать", "восемнадцать", "девятнадцать"},

tens = {"", "десять", "двадцать", "тридцать", "сорок", "пятьдесят",

"шестьдесят", "семьдесят", "восемьдесят", "девяносто"},

hundreds = {"", "сто", "двести", "триста", "четыреста", "пятьсот",

"шестьсот", "семьсот", "восемьсот", "девятьсот"},

// Функция для преобразования чисел от 0 до 999

ConvertLessThanOneThousand = (n as number) as text =>

let

result =

if n = 0 then "ноль" else

let

hundredPart = Number.IntegerDivide(n, 100),

remainder = n mod 100,

text =

(if hundredPart > 0 then hundreds{hundredPart} & " " else "") &

(if remainder >= 20 then

tens{Number.IntegerDivide(remainder, 10)} & " " &

(if remainder mod 10 > 0 then units{remainder mod 10} else "")

else if remainder >= 10 then

teens{remainder - 10}

else if remainder > 0 then

units{remainder}

else "")

in

Text.Trim(text)

in

result,

// Основная логика

rubles = Number.IntegerDivide(number, 1),

kop = Number.Round((number - rubles) * 100, 0),

rublesText = ConvertLessThanOneThousand(rubles),

kopText = if kop > 0 then ConvertLessThanOneThousand(kop) & " копеек" else "",

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

rublesEnding =

if rubles mod 100 >= 11 and rubles mod 100 <= 19 then "рублей"

else if rubles mod 10 = 1 then "рубль"

else if rubles mod 10 >= 2 and rubles mod 10 <= 4 then "рубля"

else "рублей",

fullText = rublesText & " " & rublesEnding & (if kop > 0 then " " & kopText else "")

in

fullText

in

NumberToWords

После вставки кода:

  • 📌 Нажмите Готово и закройте редактор.
  • 📌 В основной таблице используйте формулу =NumberToWords([@Сумма]), где Сумма — имя столбца с числом.

7. Частые ошибки и как их избежать

При преобразовании чисел в пропись пользователи часто сталкиваются с типичными проблемами. Вот ТОП-5 ошибок и способы их решения:

Ошибка Причина Решение
Функция возвращает #ИМЯ? Опечатка в названии функции или отсутствует модуль VBA Проверьте регистр (например, =РублиПрописью, а не =рублипрописью)
Некорректное склонение ("два рубля" вместо "два рубля") Ошибка в коде VBA или формуле Используйте готовые надстройки или проверенный код из этой статьи
Не работает с отрицательными числами Функция не учитывает знак "-" Добавьте в код проверку: If Число < 0 Then Текст = "минус " & ПреобразоватьЧисло(Abs(Число))
Округление копеек (например, 99,995 → 100,00) Неточная формула для дробной части Используйте ОКРУГЛ((A1-ЦЕЛОЕ(A1))*100;0) вместо простого умножения
Медленная работа при большом объёме данных Сложные формулы или неоптимизированный VBA-код Для массовой обработки используйте Power Query или надстройки

Если вы столкнулись с другой ошибкой, проверьте:

  • 🔍 Региональные настройки Windows (должен быть выбран русский язык).
  • 🔍 Версию Excel — в Excel 2007 некоторые функции могут не поддерживаться.
  • 🔍 Формат ячейки — она должна быть Общий или Текстовый, а не Числовой.

FAQ: Ответы на популярные вопросы

Можно ли преобразовать числа в пропись в Google Таблицах?

Да, но с ограничениями. В Google Sheets нет встроенной функции для русского языка, но можно:

  1. Использовать App Script (аналог VBA). Пример кода есть на этом сайте.
  2. Установить надстройку NumToText for Google Sheets (платно, ~300 ₽).
  3. Вручную скопировать данные в онлайн-конвертер и вставить результат обратно.

Обратите внимание: в Google Таблицах нет поддержки Power Query, поэтому метод из Способа 5 не подойдёт.

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

Для преобразования дат в текстовый формат (например, 01.01.2023"первое января две тысячи двадцать третьего года") нужна отдельная функция. Вот базовый код на VBA:

Function ДатаПрописью(Дата As Date) As String

Dim Дни() As String, Месяцы() As String

Дни = Array("первое", "второе", "третье", "четвёртое", "пятое", _

"шестое", "седьмое", "восьмое", "девятое", "десятое", _

"одиннадцатое", "двенадцатое", ..., "тридцатое", "тридцать первое")

Месяцы = Array("января", "февраля", "марта", "апреля", "мая", "июня", _

"июля", "августа", "сентября", "октября", "ноября", "декабря")

ДатаПрописью = Дни(Day(Дата) - 1) & " " & Месяцы(Month(Дата) - 1) & " " & _

ГодПрописью(Year(Дата)) & " года"

End Function

Function ГодПрописью(Год As Integer) As String

' Здесь реализуйте логику преобразования года (аналогично функции для чисел)

' Например: 2023 → "две тысячи двадцать третьего"

End Function

Полную версию кода с обработкой всех случаев (включая 2000–2099 годы) можно найти на этом ресурсе.

Почему в результатах появляются опечатки (например, "триста пятьдесят пять рублей")?

Это типичная проблема при использовании формул без VBA (см. Способ 4). Причины:

  • 📌 Формула не учитывает пробелы между словами (используйте ТРИМ() для их удаления).
  • 📌 Некорректная обработка чисел от 1000 до 9999 (требуется разбиение на тысячи, миллионы и т.д.).
  • 📌 Ошибка в массивах склонений (например, пропущено слово "тысяча").

Решение: используйте VBA или готовые надстройки — они учитывают все нюансы русского языка.

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

Если вы используете:

  • 🔹 VBA-функцию — она обновляется автоматически при изменении исходных данных (как любая формула).
  • 🔹 Надстройку — проверьте настройки: обычно обновление происходит в реальном времени.
  • 🔹 Power Query — нажмите Обновить на вкладке Данные или настройте автоматическое обновление (Свойства связи → Обновить каждые N минут).

Если пропись не обновляется:

  1. Проверьте, не стоит ли в настройках Автоматический пересчёт → Вручную (Формулы → Параметры вычислений).
  2. Для VBA: убедитесь, что файл сохранён как .xlsm (с поддержкой макросов).
Можно ли использовать это в 1С или Word?

Да, но способы будут другими:

  • 📌 В 1С: Используйте встроенную функцию ЧислоПрописью(). Пример:
    ЧислоПрописью(1234.56, "рубль,рубля,рублей,копейка,копейки,копеек")

    Подробнее в документации 1С.

  • 📌 В Word:
    1. Создайте поле с формулой: нажмите Ctrl + F9, введите {=1234.56 \* MERGEFORMAT}, затем F9.
    2. Используйте макрос VBA (аналогично Excel).
    3. Установите надстройку NumToText for Office.