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

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

Работа с цифрами в Microsoft Excel — это не только вычисления и графики. Часто требуется представить числовые данные в текстовом формате: для договоров, финансовых отчётов, квитанций или просто для удобства восприятия. Например, сумма 1 254,30 руб. в документах должна выглядеть как "Одна тысяча двести пятьдесят четыре рубля тридцать копеек" — это требование бухгалтерских стандартов и деловой переписки.

Вручную переписывать сотни строк — неэффективно. К счастью, Excel предлагает несколько способов автоматизации: от стандартных функций до пользовательских скриптов на VBA. В этой статье разберём все актуальные методы, включая нюансы для разных версий программы (2010–2026) и альтернатив (Google Sheets, LibreOffice Calc).

Важно: не все способы универсальны. Например, встроенная функция ТЕКСТ не умеет преобразовывать числа в слова, а надстройка NumWord работает только в Excel для Windows. Мы поможем выбрать оптимальный вариант под вашу задачу.

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

Способ 1: Использование надстройки «NumWord» (только для Windows)

Самый простой способ — установить бесплатную надстройку NumWord, которая добавляет в Excel функцию =NUMWORD(). Она поддерживает русские рубли, доллары, евро и другие валюты, а также работает с дробными числами.

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

  • 📥 Скачайте файл NumWord.xla с официального сайта Excel-VBA.ru (проверено на вирусы).
  • 🖱️ В Excel перейдите в Файл → Параметры → Надстройки.
  • 🔧 Нажмите «Перейти» рядом с «Управление надстройками Excel», затем «Обзор» и выберите скачанный файл.
  • ✅ Подтвердите установку и перезапустите программу.

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

=NUMWORD(A1; "рубль"; "копейка"; TRUE; TRUE)

Где:

  • A1 — ячейка с числом;
  • "рубль" — валюта для целой части;
  • "копейка" — валюта для дробной части;
  • TRUE — включает пропись копеек;
  • TRUE — добавляет слово «ноль» для нулевых значений.

Установили файл NumWord.xla|Перезапустили Excel|Ввели формулу в ячейку|Проверили результат на примере 123,45|Сохранили файл с макросом (.xlsm)

-->

⚠️ Внимание: Надстройка NumWord не работает в Excel для Mac и веб-версии. Для этих платформ используйте методы 3–5 из этой статьи.

Способ 2: Пользовательская функция на VBA (универсально)

Если надстройки недоступны, напишите собственную функцию на VBA. Этот метод работает во всех версиях Excel (включая Mac), но требует разрешений на выполнение макросов.

Инструкция:

  1. Нажмите Alt + F11, чтобы открыть редактор VBA.
  2. В меню выберите Insert → Module.
  3. Вставьте следующий код:
Function NumberToWords(ByVal MyNumber As Currency, Optional IncludeCop As Boolean = False)

Dim RUB As Variant, Cop As Variant, Temp As String

Dim DecimalPlace As Integer, Count As Integer

Dim Place(9) As String

Dim i As Integer

Place(2) = " тысяча "

Place(3) = " миллион "

Place(4) = " миллиард "

Place(5) = " триллион "

MyNumber = Round(MyNumber, 2)

DecimalPlace = InStr(MyNumber, ".")

If DecimalPlace > 0 Then

Temp = Left(MyNumber, DecimalPlace - 1)

Else

Temp = MyNumber

End If

Count = 1

Do While Temp <> ""

If Count = 1 Then RUB = ConvertLessThanOneThousand(Temp)

If Count = 2 And Temp <> "000" Then RUB = Temp & Place(2) & RUB

If Count = 3 And Temp <> "000" Then RUB = Temp & Place(3) & RUB

If Count = 4 And Temp <> "000" Then RUB = Temp & Place(4) & RUB

If Count = 5 And Temp <> "000" Then RUB = Temp & Place(5) & RUB

Temp = Right(Temp, 3)

Count = Count + 1

Loop

If IncludeCop Then

Cop = " " & ConvertLessThanOneThousand(Mid(MyNumber, DecimalPlace + 1, 2)) & " копейка"

Select Case Mid(MyNumber, DecimalPlace + 1, 2)

Case 1: Cop = Cop & "(и)"

Case 2 To 4: Cop = Cop & "(и)"

Case Else: Cop = Cop & "(ек)"

End Select

NumberToWords = RUB & " рубль" & Cop

Else

NumberToWords = RUB & " рубль"

End If

End Function

Function ConvertLessThanOneThousand(ByVal MyNumber)

Dim Hundreds As String, Tens As String, Ones As String

Dim Result As String

If Val(MyNumber) = 0 Then Exit Function

MyNumber = Right("000" & MyNumber, 3)

Hundreds = Choose(Mid(MyNumber, 1, 1) + 1, "", "сто ", "двести ", _

"триста ", "четыреста ", "пятьсот ", "шестьсот ", _

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

Tens = Choose(Mid(MyNumber, 2, 1) + 1, "", "десять ", "двадцать ", _

"тридцать ", "сорок ", "пятьдесят ", "шестьдесят ", _

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

Ones = Choose(Mid(MyNumber, 3, 1) + 1, "", "один ", "два ", _

"три ", "четыре ", "пять ", "шесть ", _

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

If Mid(MyNumber, 2, 1) = "1" Then

Ones = Choose(Mid(MyNumber, 3, 1) + 1, "десять ", "одиннадцать ", _

"двенадцать ", "тринадцать ", "четырнадцать ", _

"пятнадцать ", "шестнадцать ", "семнадцать ", _

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

Tens = ""

End If

Result = Hundreds & Tens & Ones

If Result <> "" Then ConvertLessThanOneThousand = Result

End Function

Теперь в любой ячейке можно использовать:

=NumberToWords(A1; TRUE)

Где A1 — ячейка с числом, а TRUE — флаг для отображения копеек.

Способ 3: Формулы без VBA (ограниченная функциональность)

Если макросы отключены или вы работаете в Google Sheets, можно обойтись комбинацией стандартных функций. Этот метод подходит только для целых чисел до 999 999.

Пример для числа 123:

=ВЫБОР(ЦЕЛОЕ(A1/100);"";"сто";"двести";"триста";"четыреста";"пятьсот";"шестьсот";"семьсот";"восемьсот";"девятьсот") &

ВЫБОР(ЦЕЛОЕ(ОСТАТ(A1;100)/10);"";"десять";"двадцать";"тридцать";"сорок";"пятьдесят";"шестьдесят";"семьдесят";"восемьдесят";"девяносто") &

ВЫБОР(ОСТАТ(A1;10);"";"один";"два";"три";"четыре";"пять";"шесть";"семь";"восемь";"девять") & " рубль"

Для чисел >999 потребуется вложенная конструкция с функциями ЕСЛИ и ТЕКСТ, но это громоздко. Лучше использовать VBA или надстройки.

Число Формула Результат
12 =ВЫБОР(ЦЕЛОЕ(A1/10);...) двенадцать рублей
105 =ВЫБОР(ЦЕЛОЕ(A1/100);"сто";...) & ... сто пять рублей
999 =ВЫБОР(ЦЕЛОЕ(A1/100);"девятьсот";...) & ... девятьсот девяносто девять рублей
⚠️ Внимание: Формулы не учитывают склонение валют ("рубль"/"рубля"/"рублей") и дробные части. Для точности используйте VBA.

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

Если нужно преобразовать небольшой объём данных, удобнее воспользоваться онлайн-сервисами. Они не требуют установки и работают в любом браузере.

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

  • 🌐 Calc.ru — поддерживает рубли, доллары, евро и гривны.
  • 💰 Контур.Профи — оптимизирован для бухгалтерских документов.
  • 📊 PlanetCalc — позволяет настраивать разделители и валюты.

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

  1. Скопируйте число из Excel.
  2. Вставьте в поле на сайте.
  3. Выберите валюту и формат (с копейками/центами или без).
  4. Скопируйте результат обратно в таблицу.
Преимущества и риски онлайн-конвертеров

Плюсы: Не требуют установки, работают на любых устройствах, часто поддерживают несколько языков.

Минусы: Не подходят для конфиденциальных данных (риск утечки), ограничены по объёму (обычно до 10 чисел за раз), зависят от интернет-соединения.

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

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

Алгоритм:

  1. Перейдите в Данные → Получить данные → Из других источников → Пустой запрос.
  2. В редакторе Power Query создайте новый столбец с формулой:
= Number.ToText([Число], "ru-RU")

Где [Число] — название столбца с исходными данными.

  1. Замените результат на пользовательскую функцию (требуется знание M-языка).
  2. Загрузите данные обратно в Excel.

Пример кода на M для русского языка:

(number as number) as text =>

let

units = {"ноль", "один", "два", ..., "девять"},

teens = {"десять", "одиннадцать", ..., "девятнадцать"},

tens = {"", "десять", "двадцать", ..., "девяносто"},

rubles = if number = 1 then "рубль" else if number > 1 and number < 5 then "рубля" else "рублей",

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

in

result & " " & rubles

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

Сравнение методов: какой выбрать?

Выбор способа зависит от объёма данных, частоты использования и технических ограничений. Ниже таблица для быстрого принятия решения:

Критерий Надстройка NumWord VBA-функция Формулы Excel Онлайн-конвертеры Power Query
Поддержка дробных чисел ✅ Да ✅ Да ❌ Нет ✅ Да ⚠️ Частично
Работа в Google Sheets ❌ Нет ❌ Нет ✅ Да ✅ Да ❌ Нет
Массовая обработка (>1000 строк) ✅ Да ✅ Да ❌ Нет ❌ Нет ✅ Да
Требует установки/настроек ⚠️ Да (только Windows) ⚠️ Да (макросы) ✅ Нет ✅ Нет ⚠️ Да

Для разовых задач подойдёт онлайн-конвертер или формулы. Для регулярной работы с большими объёмами данных оптимален VBA или Power Query.

FAQ: Частые вопросы и ошибки

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

Да. В надстройке NumWord выберите язык English, а в VBA-функции замените массивы слов (например, units, tens) на английские эквиваленты: {"zero", "one", "two", ...}.

Почему функция VBA выдаёт ошибку #NAME?

Убедитесь, что:

  1. Файл сохранён как .xlsm (с поддержкой макросов).
  2. В настройках безопасности разрешены макросы (Файл → Параметры → Центр управления безопасностью → Параметры центра → Включить все макросы).
  3. Код вставлен в стандартный модуль (Insert → Module), а не в лист.
Как склонять валюту правильно (рубль/рубля/рублей)?

Добавьте в VBA-функцию условие:

Select Case Right(Temp, 1)

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

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

Case Else: currency = "рублей"

End Select

Для копеек используйте аналогичную логику.

Работает ли это в Excel Online?

Нет. Excel Online не поддерживает VBA и надстройки. Используйте онлайн-конвертеры или Power Query (доступен в десктопной версии).

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

Да. В VBA-коде добавьте проверку:

If MyNumber < 0 Then

NumberToWords = "минус " & NumberToWords(Abs(MyNumber), IncludeCop)

End If

Для формул используйте ЕСЛИ(A1<0; "минус " & ФОРМУЛА; ФОРМУЛА).