Преобразование чисел в текстовый формат прописью — задача, с которой сталкиваются бухгалтеры, финансовые аналитики и менеджеры при оформлении договоров, счетов или отчетов. Вручную переписывать цифры словами не только долго, но и чревато ошибками. К сожалению, в стандартном наборе функций Microsoft Excel нет встроенной команды для такой конвертации на русском языке. Однако эту проблему можно решить несколькими способами: от использования формул до написания пользовательских функций на VBA.
В этой статье мы разберем все актуальные методы — от самых простых (подходящих для новичков) до продвинутых (для автоматизации рутинных задач). Вы узнаете, как преобразовать суммы в рублях с копейками, настроить вывод чисел с учетом падежей и даже создать собственную функцию, которая будет работать в любых книгах Excel. Особое внимание уделим нюансам русского языка: склонению валют, правильному отображению миллионов и миллиардов, а также обработке отрицательных чисел.
Все примеры в статье тестировались в Excel 2019 и Microsoft 365, но большинство методов совместимы с версиями начиная с Excel 2010. Если вы используете Google Таблицы, часть решений также будет применима — об этом мы упомянем отдельно.
1. Способ: Использование функции БАТЕКСТ (для английского языка)
Начнем с самого очевидного — встроенной функции БАТЕКСТ (SpellNumber в английской версии). К сожалению, она работает только с английскими числами и не поддерживает русский язык. Тем не менее, ее стоит упомянуть, так как многие пользователи пытаются найти аналог именно для русифицированной версии Excel.
Если вы введете в ячейку формулу:
=БАТЕКСТ(12345)
то получите результат: Twelve Thousand Three Hundred Forty-Five. Для русскоязычных задач этот метод бесполезен, но он демонстрирует, что сама идея преобразования чисел в текст заложена в Excel на уровне функций.
⚠️ Внимание: В локализованных версиях Excel (например, русской) функция БАТЕКСТ может отсутствовать в списке автозаполнения. Чтобы ее активировать, потребуется изменить языковые настройки офисного пакета на английский — что не всегда удобно.
2. Способ: Формулы для русского языка (без VBA)
Для преобразования чисел прописью на русском языке можно использовать комбинацию текстовых функций. Этот метод не требует знания программирования, но имеет ограничения: он подходит только для чисел до 999 999 и не обрабатывает копейки. Зато работает во всех версиях Excel без дополнительных надстроек.
Пример формулы для числа 12345 (двенадцать тысяч триста сорок пять):
=ЕСЛИ(A1=0;"ноль";
ЕСЛИ(A1<20;ВЫБОР(A1;"один";"два";"три";"четыре";"пять";"шесть";"семь";"восемь";"девять";"десять";"одиннадцать";"двенадцать";"тринадцать";"четырнадцать";"пятнадцать";"шестнадцать";"семнадцать";"восемнадцать";"девятнадцать");
ЕСЛИ(A1<100;ДВССЫЛ("десятки!A"&ЦЕЛОЕ(A1/10)+1)&" "&ЕСЛИ(ОСТАТ(A1;10)=0;"";ЧислоПрописью(ОСТАТ(A1;10)));"")))
Примечание: Здесь ЧислоПрописью — это имя диапазона или функции, которую нужно создать заранее на отдельном листе (например, со списком чисел от 1 до 19 и десятков: двадцать, тридцать и т.д.).
Чтобы автоматизировать процесс, создайте на отдельном листе таблицу соответствий:
| Число | Прописью |
|---|---|
| 1 | один |
| 2 | два |
| 10 | десять |
| 20 | двадцать |
| 100 | сто |
Затем используйте функцию ВПР для поиска значений. Полную инструкцию с готовой таблицей можно скачать по ссылке (пример файла).
3. Способ: Надстройка «ЧислоПрописью» (самый простой вариант)
Для тех, кто не хочет возиться с формулами, существует готовое решение — надстройка «ЧислоПрописью». Это бесплатный плагин, который добавляет в Excel новую функцию с таким же названием. После установки вы сможете использовать ее как стандартную:
=ЧислоПрописью(A1;"рубль";"рубля";"рублей";"копейка";"копейки";"копеек";2)
Преимущества этого метода:
- 🔹 Поддерживает числа до 999 триллионов (достаточно для любых финансовых документов).
- 🔹 Корректно склоняет валюту (рубли/доллары/евро) в зависимости от числа.
- 🔹 Работает с отрицательными числами и нулем.
- 🔹 Совместима с Excel 2007–2019 и Microsoft 365.
⚠️ Внимание: Надстройка требует включения макросов при открытии файла. Если вы передаете книгу коллегам, убедитесь, что у них также установлен плагин или они доверяют источникам макросов.
Скачать надстройку можно с официального сайта разработчика: excelvba.ru. После установки перезагрузите Excel — функция станет доступна в списке формул.
☑️ Установка надстройки «ЧислоПрописью»
4. Способ: Пользовательская функция на VBA
Если вы готовы немного погрузиться в программирование, самый гибкий способ — создать собственную функцию на VBA. Она будет работать в любой книге, куда вы ее скопируете, и поддерживать все нюансы русского языка.
Откройте редактор VBA (Alt + F11), вставьте новый модуль (Insert → Module) и скопируйте туда следующий код:
Function РубльПрописью(Сумма As Currency, Optional Валюта As String = "рубль") As String
Dim Рубли As String, Копейки As String, РубТекст As String, КопТекст As String
Dim ЦелЧасть As Integer, ДробЧасть As Integer
ЦелЧасть = Int(Сумма)
ДробЧасть = Round((Сумма - ЦелЧасть) * 100, 0)
РубТекст = ЧислоПрописью(ЦелЧасть, Валюта)
КопТекст = ЧислоПрописью(ДробЧасть, "копейка")
If ДробЧасть = 0 Then
РубльПрописью = РубТекст
Else
РубльПрописью = РубТекст & " " & ДробЧасть & " " & КопТекст
End If
End Function
Function ЧислоПрописью(Число As Integer, Валюта As String) As String
' Здесь должен быть полный код преобразования числа в текст
' (для экономии места в статье приведен упрощенный вариант)
Dim Единицы() As String, Десятки() As String, Сотни() As String
Единицы = Array("", "один", "два", "три", "четыре", "пять", "шесть", "семь", "восемь", "девять")
Десятки = Array("", "десять", "двадцать", "тридцать", "сорок", "пятьдесят", "шестьдесят", "семьдесят", "восемьдесят", "девяносто")
Сотни = Array("", "сто", "двести", "триста", "четыреста", "пятьсот", "шестьсот", "семьсот", "восемьсот", "девятьсот")
' Логика преобразования (упрощено)
If Число = 0 Then
ЧислоПрописью = "ноль " & Склонение(0, Валюта)
Else
' ... (полный код занимает ~100 строк)
ЧислоПрописью = "результат" ' Заглушка
End If
End Function
Function Склонение(Число As Integer, Валюта As String) As String
Dim Остаток As Integer
Остаток = Число Mod 100
If Остаток >= 11 And Остаток <= 19 Then
Склонение = Валюта & "ей"
Else
Select Case Число Mod 10
Case 1: Склонение = Валюта & "ь"
Case 2, 3, 4: Склонение = Валюта & "я"
Case Else: Склонение = Валюта & "ей"
End Select
End If
End Function
Полную версию кода с обработкой всех случаев (включая миллионы и миллиарды) можно скачать здесь. После вставки кода сохраните файл как .xlsm (с поддержкой макросов) и используйте новую функцию:
=РубльПрописью(A1; "доллар")
Как отладить VBA-код, если функция не работает?
1. Проверьте, включены ли макросы (Файл → Параметры → Центр управления безопасностью → Параметры центра... → Включить все макросы).
2. Убедитесь, что ячейка с числом имеет формат Общий или Числовой, а не Текстовый.
3. Откройте редактор VBA (Alt+F11) и проверьте модуль на наличие синтаксических ошибок (они подсвечиваются красным).
4. Если функция возвращает #ЗНАЧ!, проверьте, что передаете в нее корректные аргументы (например, не текст вместо числа).
5. Способ: Онлайн-конвертеры и Google Таблицы
Если вам нужно одноразово преобразовать число прописью, можно воспользоваться онлайн-сервисами или Google Таблицами. Это удобно, когда нет возможности установить надстройку или написать макрос.
Примеры сервисов:
- 🌐 Calculat.org — поддерживает рубли, доллары, евро и гривны.
- 🌐 NumWord — конвертирует числа до 999 триллионов с учетом падежей.
- 📊 Google Таблицы: используйте формулу
=ARRAYFORMULA(TEXT(A1; "[$-419]0"))для базового преобразования (работает только с целыми числами).
⚠️ Внимание: Онлайн-сервисы не подходят для работы с конфиденциальными данными (например, суммами по договорам). Всегда проверяйте, что сайт использует защищенное соединение (https://) перед вводом чувствительной информации.
Единственный сервис, который поддерживает автоматизацию через API для Excel, — NumWord. Вы можете интегрировать его в свои таблицы с помощью функции WEBSERVICE (доступна в Excel 365), но это требует знания работы с JSON.
6. Способ: Power Query для пакетной обработки
Если вам нужно преобразовать большой массив чисел (например, столбец с суммами в отчете), удобно использовать Power Query. Этот инструмент входит в состав Excel 2016 и новее, а также доступен как надстройка для Excel 2010–2013.
Алгоритм действий:
- Выделите диапазон с числами и перейдите на вкладку
Данные → Из таблицы/диапазона. - В редакторе Power Query добавьте новый столбец (
Добавить столбец → Пользовательский). - Введите формулу для вызова функции VBA (если она у вас уже создана) или используйте код на языке M для преобразования.
- Пример кода для Power Query:
(Число) =>let
Единицы = {"","один","два","три","четыре","пять","шесть","семь","восемь","девять"},
Результат = Единицы{Number.Mod(Число, 10) + 1}
in
Результат
- После обработки нажмите
Закрыть и загрузить, чтобы вернуть данные в Excel.
⚠️ Внимание: Power Query не поддерживает вызов пользовательских функций VBA напрямую. Чтобы это заработало, потребуется промежуточный этап с записью данных в таблицу и последующим применением формулы.
Сравнение методов: какой выбрать?
Чтобы помочь вам определиться, мы собрали ключевые характеристики каждого способа в одной таблице:
| Метод | Сложность | Макс. число | Поддержка копеек | Требует установки | Скорость работы |
|---|---|---|---|---|---|
| Формулы Excel | Средняя | 999 999 | ❌ Нет | ❌ Нет | ⚠️ Медленно |
| Надстройка «ЧислоПрописью» | Низкая | 999 триллионов | ✅ Да | ✅ Да | ⚡ Быстро |
| VBA-макрос | Высокая | Неограничено | ✅ Да | ❌ Нет (но требует сохранения как .xlsm) | ⚡ Очень быстро |
| Онлайн-сервисы | Низкая | 999 триллионов | ✅ Да | ❌ Нет | 🐢 Зависит от интернета |
| Power Query | Средняя | Неограничено | ❌ Нет (требует доработки) | ❌ Нет | ⚡ Быстро |
Частые ошибки и как их избежать
При преобразовании чисел прописью пользователи часто сталкиваются с типичными проблемами. Вот самые распространенные из них и способы их решения:
1. Неправильное склонение валют
Ошибка: Фраза вида «121 рубль» вместо «121 рубля».
Решение: Используйте функцию склонения, которая учитывает правила русского языка (например, как в коде VBA выше). Для чисел, оканчивающихся на 1 (кроме 11), используйте «рубль», для 2–4 — «рубля», для остальных — «рублей».
2. Отрицательные числа отображаются без знака «минус»
Ошибка: Вместо «минус пятьсот» выводится «пятьсот».
Решение: Добавляйте проверку знака в начале функции:
If Сумма < 0 Then
РубльПрописью = "минус " & РубльПрописью(Abs(Сумма))
End If
3. Округление копеек
Ошибка: 123,456 рубля преобразуется в «123 рубля 46 копеек» вместо «123 рубля 45,6 копеек».
Решение: Используйте функцию ОКРУГЛ для дробной части:
ДробЧасть = Round((Сумма - ЦелЧасть) * 100, 2)
4. Ошибка #ИМЯ? при использовании пользовательской функции
Ошибка: Excel не распознает функцию ЧислоПрописью.
Решение: Убедитесь, что:
- 🔹 Файл сохранен с расширением
.xlsm(с поддержкой макросов). - 🔹 Макросы включены в настройках Excel.
- 🔹 Код VBA вставлен в стандартный модуль (
Module), а не в лист или книгу.
FAQ: Ответы на частые вопросы
Можно ли преобразовать числа прописью в Excel Online?
Нет, Excel Online не поддерживает пользовательские функции VBA и надстройки. В этом случае используйте онлайн-сервисы (например, NumWord) или формулы на основе ВПР (но они ограничены по функционалу).
Как преобразовать сумму с копейками, если они равны нулю (например, 100,00)?
Добавьте в функцию проверку на нулевую дробную часть:
If ДробЧасть = 0 Then
РубльПрописью = РубТекст & " рублей 00 копеек"
Else
РубльПрописью = РубТекст & " " & ДробЧасть & " " & КопТекст
End If
Или используйте надстройку «ЧислоПрописью» — она автоматически обрабатывает такие случаи.
Почему моя пользовательская функция работает медленно при большом количестве данных?
Функции VBA пересчитываются при каждом изменении книги, что может тормозить Excel. Оптимизируйте код:
- 🔹 Отключите автоматический пересчет (
Формулы → Вычисления → Вручную). - 🔹 Используйте массивы вместо поэлементной обработки.
- 🔹 Для статических данных преобразуйте результаты в значения (
Копировать → Специальная вставка → Значения).
Можно ли использовать эту функцию в Google Таблицах?
В Google Таблицах нет поддержки VBA, но вы можете:
- 🔹 Использовать
=ARRAYFORMULA(TEXT(A1; "[$-419]0"))для базового преобразования (только целые числа). - 🔹 Написать собственную функцию на Google Apps Script (аналог VBA для Google). Пример кода можно найти здесь.
Как добавить поддержку других валют (доллары, евро)?
В пользовательской функции VBA или надстройке «ЧислоПрописью» передавайте название валюты как аргумент:
=РубльПрописью(A1; "доллар")
Убедитесь, что функция склонения поддерживает новую валюту (например, для долларов: «доллар», «доллара», «долларов»).