Преобразование числовых значений в текстовый формат «прописью» — одна из самых востребованных задач в Microsoft Excel, особенно при работе с финансовыми документами, счетами и договорами. Несмотря на то, что в программе нет встроенной функции для такой конвертации, реализовать её можно несколькими способами: от ручного ввода до автоматизации через VBA-макросы или сторонние надстройки. В этой статье мы разберём все актуальные методы — от простейших до продвинутых, — чтобы вы могли выбрать оптимальный вариант для своих задач.
Многие пользователи ошибочно полагают, что для преобразования чисел в текст прописью требуются глубокие знания программирования. На самом деле, даже начинающий может справиться с этой задачей за 5–10 минут, используя готовые решения. Главное — понимать, какой подход подходит для вашего случая: одноразовая конвертация небольшого диапазона или автоматическая обработка тысяч строк в крупных отчётах.
Далее вы найдёте пошаговые инструкции с иллюстрациями, примерами формул и предупреждениями о типичных ошибках. А в конце статьи — FAQ с ответами на самые частые вопросы по теме.
1. Способ: Использование функции ЧИСЛОТЕКСТ (для русского языка)
Самый простой метод — воспользоваться встроенной функцией BAHTTEXT (в англоязычной версии Excel) или её русскоязычным аналогом. Однако здесь есть нюанс: в Excel нет прямой функции для русского языка, но её можно эмулировать через комбинацию формул или надстройки.
Если вам нужно быстро преобразовать число в текст на английском, используйте:
=BAHTTEXT(A1)
Где A1 — ячейка с числом. Результат будет выглядеть так: "один рубль и 00 копеек" (для числа 1.00).
Для русского языка придётся пойти на хитрость:
- 🔹 Установите надстройку "ЧислоПрописью" (бесплатные варианты есть в интернете).
- 🔹 Используйте формулу с вызовом макроса (если вы знакомы с VBA):
=RubText(A1) - 🔹 Для одноразового использования воспользуйтесь онлайн-конвертерами и вставьте результат в Excel.
⚠️ Внимание: Функция BAHTTEXT работает только с валютами типа "бат" (Таиланд) и не поддерживает рубли или доллары. Для корректного отображения на русском языке потребуется дополнительная настройка.
2. Способ: Формула для преобразования без макросов (ограниченная функциональность)
Если вы не хотите устанавливать надстройки или работать с VBA, можно создать формулу на основе вложенных ЕСЛИ. Этот метод подходит для чисел до 999 999 и требует ручного расширения для миллионов/миллиардов.
Пример формулы для числа в ячейке A1 (до 999):
=ЕСЛИ(A1=0;"ноль";
ЕСЛИ(A1<20;ВЫБОР(A1;"один";"два";"три";...;"девятнадцать");
ЕСЛИ(A1<100;ТЕКСТ(ЦЕЛОЕ(A1/10);"# ?0") & "дцать " & ТЕКСТ(ОСТАТ(A1;10);"#");
"сто и более")))
Минусы этого подхода:
- 🔸 Ограничение на диапазон чисел (требуется доработка для больших значений).
- 🔸 Не учитывает склонение валют ("рубль"/"рубля"/"рублей").
- 🔸 Формула становится громоздкой и сложной для редактирования.
Для упрощения можно скачать готовый шаблон с формулой (см. раздел с ресурсами).
3. Способ: VBA-макрос для автоматического преобразования
Наиболее гибкий и мощный метод — создание пользовательской функции на VBA. Она будет работать как стандартная функция Excel и поддерживать любые числа, валюты и правила склонения.
Инструкция по установке макроса:
' Код функции (полная версия — см. ниже) ' ... End Function
Alt + F11, чтобы открыть редактор VBA.Insert → Module.Function RubText(ByVal MyNumber As Currency) As String
=RubText(A1).Полный код функции для русского языка (с поддержкой копеек):
Полный код VBA-макроса для "Сумма прописью"
Function RubText(ByVal MyNumber As Currency) As String
Dim Rub As String, Kop As String, Temp As String
Dim DecimalPlace As Integer, Cnt As Integer
' Округление до 2 знаков после запятой
MyNumber = Round(MyNumber, 2)
' Разделение на рубли и копейки
Rub = Int(MyNumber)
Kop = Format((MyNumber - Rub) * 100, "00")
' Преобразование рублей
If Rub <> 0 Then
Temp = ConvertDigits(Rub)
' Склонение слова "рубль"
If Rub Mod 100 >= 11 And Rub Mod 100 <= 19 Then
Temp = Temp & " рублей"
Else
Select Case Rub Mod 10
Case 1: Temp = Temp & " рубль"
Case 2, 3, 4: Temp = Temp & " рубля"
Case Else: Temp = Temp & " рублей"
End Select
End If
Else
Temp = "ноль рублей"
End If
' Добавление копеек
If Kop <> "00" Then
Temp = Temp & " " & Kop & " копеек"
End If
RubText = Temp
End Function
Function ConvertDigits(ByVal MyNumber As Variant) As String
Dim Txt As String, i As Integer
Dim Ones(1 To 9) As String, Teens(1 To 9) As String
Dim Tens(1 To 9) As String, Hundreds(1 To 9) As String
' Массивы для чисел
Ones(1) = "один": Ones(2) = "два": Ones(3) = "три": Ones(4) = "четыре"
Ones(5) = "пять": Ones(6) = "шесть": Ones(7) = "семь"
Ones(8) = "восемь": Ones(9) = "девять"
Teens(1) = "десять": Teens(2) = "одиннадцать": Teens(3) = "двенадцать"
Teens(4) = "тринадцать": Teens(5) = "четырнадцать": Teens(6) = "пятнадцать"
Teens(7) = "шестнадцать": Teens(8) = "семнадцать": Teens(9) = "восемнадцать"
Tens(2) = "двадцать": Tens(3) = "тридцать": Tens(4) = "сорок"
Tens(5) = "пятьдесят": Tens(6) = "шестьдесят": Tens(7) = "семьдесят"
Tens(8) = "восемьдесят": Tens(9) = "девяносто"
Hundreds(1) = "сто": Hundreds(2) = "двести": Hundreds(3) = "триста"
Hundreds(4) = "четыреста": Hundreds(5) = "пятьсот": Hundreds(6) = "шестьсот"
Hundreds(7) = "семьсот": Hundreds(8) = "восемьсот": Hundreds(9) = "девятьсот"
' Логика преобразования
If MyNumber = 0 Then Exit Function
If MyNumber < 10 Then
Txt = Ones(MyNumber)
ElseIf MyNumber < 20 Then
Txt = Teens(MyNumber - 9)
ElseIf MyNumber < 100 Then
Txt = Tens(Int(MyNumber / 10)) & " " & ConvertDigits(MyNumber Mod 10)
ElseIf MyNumber < 1000 Then
Txt = Hundreds(Int(MyNumber / 100)) & " " & ConvertDigits(MyNumber Mod 100)
Else
Txt = ConvertDigits(Int(MyNumber / 1000)) & " тысяч" & ConvertDigits(MyNumber Mod 1000)
End If
ConvertDigits = Application.WorksheetFunction.Trim(Txt)
End Function
Преимущества этого метода:
- 🔹 Работает с любыми числами (включая миллиарды).
- 🔹 Корректно склоняет валюту ("рубль"/"рубля"/"рублей").
- 🔹 Можно модифицировать под другие валюты (доллары, евро).
⚠️ Внимание: Если при вводе формулы=RubText(A1)появляется ошибка#ИМЯ?, проверьте:
- Включены ли макросы в настройках Excel (
Файл → Параметры → Центр управления безопасностью → Параметры центра управления безопасностью → Включить все макросы).- Правильно ли скопирован код (особенно русские символы в массивах).
Макросы включены в настройках Excel|Файл сохранён в формате .xlsm (с поддержкой макросов)|Код скопирован без ошибок|Ячейка с числом имеет формат "Общий" или "Числовой"-->
4. Способ: Надстройки для Excel (самый удобный вариант)
Если вы не хотите возиться с формулами или VBA, установите специальную надстройку. Самые популярные решения:
| Надстройка | Стоимость | Поддержка русского | Ссылка |
|---|---|---|---|
| ЧислоПрописью | Бесплатно | Да | Скачать |
| NumWords | Платная (~$20) | Да (настраивается) | Официальный сайт |
| Атлант-Информ | Бесплатно | Да (рубли, доллары, евро) | Скачать |
| Excel Number to Words | Условно-бесплатно | Нет (только английский) | ExtendOffice |
Инструкция по установке надстройки ЧислоПрописью:
- Скачайте файл
.xlamс официального сайта. - Откройте Excel и перейдите в
Файл → Параметры → Надстройки. - Внизу окна выберите
Перейти...(илиGo...в англоязычной версии). - Нажмите
Обзор, найдите скачанный файл и добавьте его. - Теперь в Excel появится новая функция
=ЧИСЛОПРОПИСЬЮ(A1).
Важно: Надстройки могут конфликтовать с антивирусами. Перед установкой добавьте папку с файлом .xlam в исключения антивируса.
5. Типичные ошибки и как их избежать
При работе с преобразованием чисел в текст прописью пользователи часто сталкиваются с следующими проблемами:
- 🔸 Ошибка #ИМЯ? — возникает, если макрос не подключён или название функции написано с ошибкой. Проверьте регистр (например,
=RubText, а не=rubtext). - 🔸 Неправильное склонение валют — если функция выдаёт "1 рублей" вместо "1 рубль", исправьте код в разделе склонения (см. раздел с VBA).
- 🔸 Округление копеек — если копейки отображаются как "99 копеек" вместо "99 копеек", проверьте формат ячейки с исходным числом (должен быть "Числовой" с 2 знаками после запятой).
- 🔸 Медленная работа файла — если в книге много вызовов функции
=RubText, отключите автоматический пересчёт (Формулы → Параметры вычислений → Вручную).
Также обратите внимание на региональные настройки Windows: если в системе установлен английский язык, функция может выдавать результат на английском даже при русском коде. Чтобы исправить это, измените язык системы на русский в Панель управления → Язык и региональные стандарты.
6. Альтернативные решения: Онлайн-сервисы и Power Query
Если вы работаете с облачными документами или не хотите устанавливать надстройки, рассмотрите эти варианты:
1. Онлайн-конвертеры:
- 🌐 NumWord — поддерживает 20+ языков, включая русский.
- 🌐 Text.ru — простой интерфейс, подходит для одноразового использования.
- 🌐 Calculat.org — конвертация чисел до 10100.
Как использовать:
- Скопируйте число из Excel.
- Вставьте в поле на сайте и получите текст прописью.
- Скопируйте результат обратно в Excel (вставляйте как
Текст, чтобы избежать автоматического преобразования в число).
2. Power Query (для Excel 2016 и новее):
Если вам нужно преобразовать большой массив данных, воспользуйтесь Power Query:
- Выделите диапазон с числами.
- Перейдите в
Данные → Получить данные → Из таблицы/диапазона. - В редакторе Power Query добавьте пользовательский столбец с формулой на языке M:
= Number.ToText([Column1], "ru-RU") - Загрузите данные обратно в Excel.
Минус этого метода — результат будет на английском ("one thousand"), но его можно доработать через замену текста.
7. Сравнение методов: Какой выбрать?
| Метод | Сложность | Гибкость | Подходит для | Минусы |
|---|---|---|---|---|
Формула ЕСЛИ |
Низкая | Ограничена | Одноразовые задачи, числа до 999 | Не поддерживает миллионы, сложно редактировать |
| VBA-макрос | Средняя | Высокая | Регулярное использование, большие объёмы данных | Требует навыков VBA, может конфликтовать с антивирусом |
| Надстройки | Низкая | Высокая | Любые задачи, поддержка нескольких валют | Нужно устанавливать, возможны конфликты с макросами |
| Онлайн-сервисы | Низкая | Средняя | Одноразовые задачи, небольшие объёмы | Ручной ввод, риск ошибок при копировании |
| Power Query | Средняя | Средняя | Обработка больших массивов данных | Результат на английском, требует доработки |
Рекомендации по выбору:
- 🔹 Для одноразового использования — онлайн-сервисы или формула
ЕСЛИ. - 🔹 Для регулярной работы — VBA-макрос или надстройка.
- 🔹 Для корпоративного использования — надстройка с поддержкой нескольких валют.
FAQ: Частые вопросы по теме
❓ Можно ли в Excel преобразовать сумму прописью без макросов?
Да, но с ограничениями. Вы можете:
- Использовать формулу на основе
ЕСЛИ(подходит для чисел до 999). - Воспользоваться онлайн-конвертером и вставить результат как текст.
- Установить надстройку (не требует знаний VBA).
Для полноценной работы без ограничений всё же рекомендуется использовать VBA.
❓ Почему функция выдаёт "1 рублей" вместо "1 рубль"?
Это ошибка склонения, которая возникает из-за некорректной логики в коде VBA. Исправьте блок склонения в макросе (см. раздел с кодом), где проверяется остаток от деления на 10 и 100. Пример правильного условия:
If Rub Mod 100 >= 11 And Rub Mod 100 <= 19 Then
Temp = Temp & " рублей"
Else
Select Case Rub Mod 10
Case 1: Temp = Temp & " рубль"
Case 2, 3, 4: Temp = Temp & " рубля"
Case Else: Temp = Temp & " рублей"
End Select
End If
❓ Как преобразовать сумму прописью в Google Таблицах?
В Google Таблицах нет встроенной функции для этой задачи, но вы можете:
- Использовать надстройку Number to Words (устанавливается из меню
Дополнения → Установить дополнения). - Написать собственную функцию на Google Apps Script (аналог VBA):
function RubText(number) {
// Код функции (аналогично VBA)
return result;
}
Пример вызова: =RubText(A1).
❓ Можно ли преобразовать отрицательные числа?
Да, но для этого нужно доработать макрос. Добавьте в начало функции RubText проверку:
If MyNumber < 0 Then
RubText = "минус " & RubText(Abs(MyNumber))
Exit Function
End If
Теперь функция будет корректно обрабатывать отрицательные значения, например: "минус пятьсот рублей".
❓ Где скачать готовый шаблон Excel с функцией "Сумма прописью"?
Готовые шаблоны можно найти на следующих ресурсах:
- 🔗 Excel-VBA.ru (раздел "Шаблоны").
- 🔗 PlanetaExcel (поиск по запросу "сумма прописью").
- 🔗 GitHub (репозитории с открытым кодом для Excel).
При скачивании проверяйте файлы антивирусом — некоторые шаблоны могут содержать вредоносный код.