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

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

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

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

1. Стандартные функции Excel: ограничения и лайфхаки

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

Единственная "полурабочая" функция — ТЕКСТ (TEXT в английской версии), но она преобразует числа в текстовый формат с сохранением цифр, а не прописью. Например, формула =ТЕКСТ(123;"0") вернет "123", а не "сто двадцать три". Тем не менее, эту функцию можно использовать в комбинации с другими методами для форматирования результата.

Вот что можно сделать со стандартными инструментами:

  • 🔹 Форматирование ячеек: измените формат на "Текстовый" (Ctrl+1 → Числовой формат → Текстовый), чтобы Excel не округлял большие числа.
  • 🔹 Функция РУБЛЬ: в некоторых версиях Excel для России есть скрытая функция РУБЛЬ.ДЕНЬГИ (доступна через Формулы → Финансовые), но она возвращает сумму в формате "123,00 р.", а не прописью.
  • 🔹 Конкатенация: объедините число с текстовым постфиксом через &, например: =A1 & " руб.".
⚠️ Внимание: Если вы работаете с Excel Online или мобильной версией, часть функций (например, пользовательские надстройки) могут быть недоступны. В этом случае используйте методы на основе формул или VBA.
📊 Какой версией Excel вы пользуетесь чаще всего?
Excel 2019/2021/365
Excel 2016 или старше
Excel Online
Мобильное приложение
Другая

2. Пользовательская функция на VBA: универсальное решение

Самый гибкий способ — создать собственную функцию на VBA (Visual Basic for Applications). Этот метод работает во всех версиях Excel (кроме онлайн) и позволяет настроить вывод под любые требования: рубли/доллары, копейки/центы, падежи и даже диалекты (например, "гривны" вместо "рублей").

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

  1. Нажмите Alt + F11, чтобы открыть редактор VBA.
  2. В меню выберите Insert → Module.
  3. Вставьте код функции (пример ниже).
  4. Сохраните файл как .xlsm (с поддержкой макросов).

Пример кода для функции NumToText, которая преобразует число в текст прописью с рублями и копейками:

Function NumToText(ByVal n As Currency, Optional valuta As String = "руб.") As String

Dim rub As String, kop As String, temp As String

Dim kopecks As Integer

' Обработка рублей

rub = ConvertLessThanThousand(Int(n))

n = n - Int(n)

kopecks = Round(n * 100, 0)

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

If kopecks > 0 Then

kop = ConvertLessThanThousand(kopecks)

NumToText = rub & " " & valuta & " " & kop & " коп."

Else

NumToText = rub & " " & valuta

End If

' Вспомогательная функция для чисел < 1000

Function ConvertLessThanThousand(ByVal n As Integer) As String

Dim units, tens, hundreds As String

Dim res As String

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

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

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

If n = 0 Then

ConvertLessThanThousand = "ноль"

Exit Function

End If

res = hundreds(Int(n / 100)) & " "

If (n Mod 100) < 20 Then

Select Case n Mod 100

Case 1: res = res & "одна"

Case 2: res = res & "две"

Case 3 To 19: res = res & Array("", "", "двадцать", "тридцать", "сорок", "пятьдесят", "шестьдесят", "семьдесят", "восемьдесят", "девяносто")(Int((n Mod 100) / 10)) & " " & units(n Mod 10)

End Select

Else

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

End If

ConvertLessThanThousand = Trim(res)

End Function

End Function

После добавления кода функцию можно использовать в Excel как стандартную:

=NumToText(A1; "руб.")

где A1 — ячейка с числом, а "руб." — валюта (можно заменить на "долл." или "евро").

Включены макросы в настройках Excel (Файл → Параметры → Центр управления безопасностью → Параметры центра управления безопасностью → Включить все макросы)

Файл сохранен в формате .xlsm (не .xlsx)

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

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

-->

3. Надстройка "ЧислоПрописью": готовое решение без программирования

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

  • 💰 Рубли, доллары, евро и другие валюты.
  • 📝 Копейки/центы с правильным склонением ("1 копейка", "2 копейки", "5 копеек").
  • 🌍 Русский, английский, украинский и казахский языки.

Установка надстройки:

  1. Перейдите в Вставка → Надстройки (или Insert → Add-ins в английской версии).
  2. В строке поиска введите "ЧислоПрописью" и нажмите Добавить.
  3. Подтвердите установку и перезагрузите Excel.

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

=ЧИСЛОПРОПИСЬЮ(A1; "RUR"; TRUE)

где:

  • A1 — ячейка с числом;
  • "RUR" — код валюты (для долларов используйте "USD");
  • TRUE — флаг для вывода копеек.
⚠️ Внимание: Надстройки из AppSource могут запрашивать доступ к данным в вашей книге. Перед установкой проверьте отзывы и рейтинг разработчика. Для корпоративных пользователей рекомендуется использовать сертифицированные решения.

4. Формулы без VBA: сложный, но рабочий метод

Если макросы отключены или вы работаете в Excel Online, можно обойтись сложной комбинацией функций ЕСЛИ, ВЫБОР и ТЕКСТ. Этот способ требует много времени на настройку, но не зависит от внешних инструментов.

Пример формулы для чисел от 0 до 999 (без копеек):

=ЕСЛИ(A1=0;"ноль";

ВЫБОР(ЦЕЛОЕ(A1/100);

"";

"сто ";

"двести ";

"триста ";

"четыреста ";

"пятьсот ";

"шестьсот ";

"семьсот ";

"восемьсот ";

"девятьсот ")

&

ЕСЛИ(И(ЦЕЛОЕ((A1-ЦЕЛОЕ(A1/100)*100)/10)=1;A1-ЦЕЛОЕ(A1/10)*10<>11);

ВЫБОР(A1-ЦЕЛОЕ(A1/10)*10;

"десять ";

"одиннадцать ";

"двенадцать ";

"тринадцать ";

"четырнадцать ";

"пятнадцать ";

"шестнадцать ";

"семнадцать ";

"восемнадцать ";

"девятнадцать ");

ВЫБОР(ЦЕЛОЕ((A1-ЦЕЛОЕ(A1/100)*100)/10);

"";

"десять ";

"двадцать ";

"тридцать ";

"сорок ";

"пятьдесят ";

"шестьдесят ";

"семьдесят ";

"восемьдесят ";

"девяносто ")

&

ВЫБОР(A1-ЦЕЛОЕ(A1/10)*10;

"";

"один";

"два";

"три";

"четыре";

"пять";

"шесть";

"семь";

"восемь";

"девять")

)

)

Для обработки тысяч и миллионов формулу придется расширять, что делает ее громоздкой. Этот метод подходит только для разовых задач с ограниченным диапазоном чисел (например, до 10 000).

Метод Сложность Поддержка копеек Работает в Excel Online
Стандартные функции Низкая ❌ Нет ✅ Да
VBA (NumToText) Средняя ✅ Да ❌ Нет
Надстройка "ЧислоПрописью" Низкая ✅ Да ✅ Да*
Сложные формулы Высокая ❌ Нет ✅ Да
Power Query Средняя ✅ Да ✅ Да

* В Excel Online надстройки работают только при наличии подписки Microsoft 365.

5. Power Query: альтернатива для больших данных

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

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

  1. Выделите исходные данные и перейдите на вкладку Данные → Из таблицы/диапазона.
  2. В открывшемся редакторе Power Query выберите Добавить столбец → Пользовательский столбец.
  3. Введите формулу на языке M (пример ниже) и назовите новый столбец.
  4. Нажмите Закрыть и загрузить.

Пример кода для функции на M (упрощенный вариант для чисел до 999):

(number as number) =>

let

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

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

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

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

convertLessThanThousand = (n) =>

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

let

h = Number.IntegerDivide(n, 100),

t = Number.Mod(Number.IntegerDivide(n, 10), 10),

u = Number.Mod(n, 10),

result = hundreds{h} & " " &

(if t = 1 then teens{u} else tens{t} & " " & units{u})

in

Text.Trim(result),

result = convertLessThanThousand(Number.IntegerDivide(number, 1))

in

result

⚠️ Внимание: Power Query не поддерживает кириллицу в названиях функций и переменных. Все имена в коде должны быть на латинице (например, units, а не единицы).
Как обработать копейки в Power Query?

Добавьте второй пользовательский столбец с формулой для копеек, используя функцию Number.Mod(number, 1) * 100 для извлечения дробной части. Затем объедините результаты через Text.Combine с разделителем "руб. ".

6. Онлайн-конвертеры: быстрый, но неавтоматизированный способ

Если Excel недоступен или нужно срочно преобразовать одно-два числа, воспользуйтесь онлайн-сервисами:

  • 🌐 NumWord — поддерживает 20+ языков, включая русский с правильным склонением валют.
  • 💱 Calculat.org — простой интерфейс с копированием результата.
  • 📄 RapidTables — конвертация чисел до 999 триллионов.

Как перенести результат в Excel:

  1. Скопируйте прописную сумму из онлайн-сервиса.
  2. В Excel вставьте данные как Текст (через Специальная вставка → Текст).
  3. При необходимости используйте ТРИМ (TRIM) для удаления лишних пробелов.

Минусы метода:

  • ❌ Нет автоматизации — каждое число приходится конвертировать вручную.
  • ❌ Риск ошибок при копировании больших объемов данных.
  • ❌ Некоторые сервисы ограничивают количество запросов.

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

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

Проблема 1: Функция VBA возвращает "#ИМЯ?" (#NAME?).

  • 🔧 Решение: Убедитесь, что:
    • 📌 Файл сохранен как .xlsm (с поддержкой макросов).
    • 📌 Макросы разрешены в настройках Excel (Файл → Параметры → Центр управления безопасностью).
    • 📌 Код вставлен в Module, а не в Sheet или ThisWorkbook.

Проблема 2: Неправильное склонение валют (например, "1 рублей" вместо "1 рубль").

  • 🔧 Решение: Модифицируйте функцию VBA или используйте надстройку с поддержкой падежей. Пример кода для правильного склонения:
    Function RublesCase(n As Integer) As String
    

    Select Case n Mod 100

    Case 11 To 19: RublesCase = "рублей"

    Case Else

    Select Case n Mod 10

    Case 1: RublesCase = "рубль"

    Case 2 To 4: RublesCase = "рубля"

    Case 0, 5 To 9: RublesCase = "рублей"

    End Select

    End Select

    End Function

Проблема 3: В Excel Online не работают макросы или надстройки.

  • 🔧 Решение: Используйте:
    • 📌 Сложные формулы (раздел 4).
    • 📌 Power Query (раздел 5).
    • 📌 Онлайн-конвертеры (раздел 6) с последующим импортом данных.

Проблема 4: Числа больше 999 999 отображаются некорректно.

  • 🔧 Решение: Расширьте функцию VBA или Power Query для поддержки миллионов/миллиардов. Пример для миллионов:
    Function NumToTextMillions(n As Currency) As String
    

    Dim millions As String, rest As String

    millions = ConvertLessThanThousand(Int(n / 1000000))

    rest = NumToText(n Mod 1000000)

    If millions <> "ноль" Then

    NumToTextMillions = millions & " миллионов " & rest

    Else

    NumToTextMillions = rest

    End If

    End Function

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

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

Да, в Google Sheets для этого есть функция =СУММПРОПИСЬЮ(). Пример:

=СУММПРОПИСЬЮ(A1; 2)

где A1 — ячейка с числом, а 2 — количество знаков после запятой. Функция поддерживает рубли, доллары и евро с правильным склонением.

Как добавить копейки в результат функции NumToText?

Модифицируйте функцию VBA, добавив обработку дробной части. Пример кода для копеек:

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

If kopecks > 0 Then

NumToText = rub & " руб. " & ConvertLessThanThousand(kopecks) & " коп."

Else

NumToText = rub & " руб."

End If

Для правильного склонения копеек используйте ту же логику, что и для рублей.

Почему в результате появляются лишние пробелы?

Это происходит из-за особенностей функции ВЫБОР или конкатенации строк. Чтобы убрать пробелы, оберните результат в функцию ТРИМ:

=ТРИМ(ЧИСЛОПРОПИСЬЮ(A1))

В VBA используйте Trim() для очистки строк.

Можно ли конвертировать отрицательные числа?

Да, для этого добавьте в начало функции VBA проверку на знак:

If n < 0 Then

NumToText = "минус " & NumToText(Abs(n))

Exit Function

End If

Для формул используйте ЕСЛИ с проверкой A1<0.

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

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

  • 🔄 VBA: Функция обновляется автоматически при изменении данных в ячейке.
  • 🔄 Надстройки: Также обновляются в реальном времени.
  • 🔄 Power Query: Нажмите Обновить все на вкладке Данные или настройте автоматическое обновление через Свойства соединения.
  • 🔄 Формулы: Работают динамически, но могут тормозить при большом объеме данных.