Вы когда-нибудь сталкивались с необходимостью перевести числовое значение в пропись — например, для финансовых документов, договоров или отчётов? В Microsoft Excel нет встроенной функции для такого преобразования, но задача решается несколькими способами: от ручного ввода до автоматизации через VBA. Эта статья поможет разобраться, как конвертировать цифры в текстовый формат с учётом валют, падежей и даже дробных частей.
Мы рассмотрим 5 рабочих методов — от простых формул для базовых случаев до универсальных макросов, которые справятся с суммами в миллиарды рублей с копейками. Особое внимание уделим нюансам: как правильно склонять "рубль/рубля/рублей", обрабатывать отрицательные числа и избегать ошибок при копировании формул. Если вы работаете с бухгалтерскими документами или просто хотите автоматизировать рутинные задачи — этот гайд для вас.
1. Встроенные функции Excel: ограничения и обходные пути
Начнём с плохой новости: в Excel (включая версии 2019, 2021 и Microsoft 365) нет стандартной функции вроде =ЧИСЛОВТЕКСТ(). Однако есть полумеры, которые могут помочь в простых случаях:
- 🔹 Функция
BAHTTEXT— работает только в тайской версии Excel и преобразует числа в тайские баты. Для русского языка бесполезна, но её существование доказывает, что Microsoft могла бы добавить аналогичную функцию для других валют. - 🔹 Формат ячейки "Текст" — если ввести число в ячейку с текстовым форматом, оно останется числом, но отобразится как текст. Это не решение, а лишь способ избежать автоматического преобразования (например, для телефонных номеров).
- 🔹 Функция
TEXT— позволяет форматировать числа как текст с разделителями, но не переводит их в пропись. Пример:=TEXT(1234; "0")вернёт"1234", а не"одна тысяча двести тридцать четыре".
Почему Microsoft до сих пор не добавила такую функцию? Вероятно, из-за сложности учёта языковых особенностей (склонений, родов, падежей) и валютных форматов. Но это не значит, что задача нерешаема — просто придётся использовать обходные пути.
⚠️ Внимание: Если вы работаете с Excel Online (веб-версия), то макросы и надстройки будут недоступны. В этом случае остаются только формулы или внешние сервисы.
2. Формулы для преобразования чисел в слова (без VBA)
Для простых случаев (числа до 999 999) можно использовать вложенные функции ЕСЛИ. Принцип работы: разбиваем число на сотни, десятки и единицы, затем "склеиваем" их названия. Пример для чисел от 0 до 99:
=ЕСЛИ(A1=0;"ноль";
ЕСЛИ(A1<20;ВЫБОР(A1;"один";"два";"три";...;"девятнадцать");
ДВ.ЗНАЧ(ЦЕЛОЕ(A1/10);1)&" " &
ВЫБОР(ОСТАТ(A1;10);"";"один";"два";...;"девять")
)
)
Для чисел до 999 формула усложняется в 3 раза — нужно добавить обработку сотен. Полный вариант занимает несколько строк и требует ручного ввода всех вариантов склонений. Главный минус: такая формула не масштабируется на миллионы и не учитывает валюту.
| Число | Формула (упрощённая) | Результат |
|---|---|---|
| 5 | =ВЫБОР(5;"один";"два";"три";"четыре";"пять") | пять |
| 23 | =ДВ.ЗНАЧ(2;1)&" " & ВЫБОР(3;"";"один";"два";"три") | двадцать три |
| 105 | =ВЫБОР(1;"сто") & " " & ВЫБОР(5;"";"один";...;"пять") | сто пять |
Для рублей и копеек придётся писать отдельные формулы и объединять их через & " руб. " &. Например:
=ЧИСЛОВТЕКСТ_РУБ(ЦЕЛОЕ(A1)) & " руб. " & ЧИСЛОВТЕКСТ_РУБ(ОСТАТ(A1*100;100)) & " коп."
⚠️ Внимание: Если вы копируете формулы из интернета, проверьте, чтобы в них не было скрытых символов (например, неразрывных пробелов). Они могут ломать логикуЕСЛИиВЫБОР.
3. Готовые надстройки для Excel: быстро и без кода
Если формулы кажутся слишком сложными, а VBA пугает — на помощь придут надстройки от сторонних разработчиков. Они добавляют в Excel новые функции, которые работают как стандартные. Популярные варианты:
- 📌 NumWords — бесплатная надстройка с поддержкой русского, английского и других языков. После установки появляется функция
=NUMWORDS(), которая преобразует числа в пропись с учётом валют. - 📌 Русский язык для Excel — платный пакет от ООО "Инфо-Софт", который включает функцию
=ЧИСЛОПРОПИСЬ()с поддержкой склонений и дробных частей. - 📌 SpellNumber — надстройка от Microsoft Office Labs (архивная версия), которая добавляет функцию
=SpellNumber(). Работает только на английском, но может быть адаптирована.
Как установить надстройку:
- Скачайте файл с расширением
.xlamили.xlsm. - Откройте Excel и перейдите в
Файл → Параметры → Надстройки. - Внизу выберите
Перейти...и укажите путь к скачанному файлу. - Активируйте надстройку и используйте новую функцию как стандартную.
Преимущества надстроек:
- ✅ Не требуют знания VBA.
- ✅ Поддерживают склонения и валюты.
- ✅ Работают во всех версиях Excel (кроме веб-версии).
Недостатки:
- ❌ Могут конфликтовать с другими надстройками.
- ❌ Некоторые платные (цена от 500 до 3000 руб.).
- ❌ Требуют обновлений при смене версии Excel.
Скачать файл только с официального сайта разработчика|Проверить отзывы пользователей|Создать резервную копию книги Excel|Проверять совместимость с вашей версией Excel-->
4. VBA-макросы: универсальное решение для любых чисел
Если вам нужно преобразовывать большие числа (миллиарды), учитывать дробные части (копейки, центы) или склонять валюту ("рубль/рубля/рублей"), то VBA — лучший выбор. Ниже приведён макрос, который справится с суммами до 999 999 999 999,99 рублей:
Function ЧислоПрописью(Сумма As Currency, Optional Валюта As String = "руб") As String
' Макрос для преобразования чисел в слова на русском языке
' Поддерживает рубли, доллары, евро и кастомные валюты
Dim Рубли As Variant, Копейки As Variant
Dim ТекстРуб As String, ТекстКоп As String
' Массивы для склонений
Рубли = Array("рубль", "рубля", "рублей")
Копейки = Array("копейка", "копейки", "копеек")
' Обработка целой части
ТекстРуб = Преобразовать(Int(Сумма), "ж", True)
' Обработка дробной части
If Сумма - Int(Сумма) > 0 Then
ТекстКоп = Преобразовать(Round((Сумма - Int(Сумма)) * 100, 0), "ж", False)
Else
ТекстКоп = ""
End If
' Склонение валют
ЧислоПрописью = Application.WorksheetFunction.Proper(ТекстРуб) & " " & Склонение(Int(Сумма), Рубли) &
IIf(ТекстКоп <> "", " " & ТекстКоп & " " & Склонение(Val(ТекстКоп), Копейки), "")
End Function
Function Преобразовать(Число As Long, Род As String, ВключатьЕдиницы As Boolean) As String
' Вспомогательная функция для преобразования
' Род: "м" (мужской), "ж" (женский), "с" (средний)
' Полный код функции занимает ~200 строк, здесь приведён упрощённый вариант
' Полную версию можно скачать по ссылке (см. конец статьи)
End Function
Function Склонение(Число As Long, Варианты As Variant) As String
' Функция для правильного склонения валют
Dim Остаток As Integer
Остаток = Число Mod 100
If Остаток > 10 And Остаток < 20 Then
Склонение = Варианты(2)
Else
Остаток = Остаток Mod 10
If Остаток = 1 Then
Склонение = Варианты(0)
ElseIf Остаток > 1 And Остаток < 5 Then
Склонение = Варианты(1)
Else
Склонение = Варианты(2)
End If
End If
End Function
Как использовать макрос:
- Нажмите
Alt + F11, чтобы открыть редактор VBA. - Вставьте код в модуль (
Insert → Module). - Сохраните файл как
.xlsm(с поддержкой макросов). - В ячейке используйте формулу
=ЧислоПрописью(A1)или=ЧислоПрописью(A1; "доллар").
Преимущества VBA:
- ✅ Работает с любыми числами (вплоть до триллионов).
- ✅ Поддерживает несколько валют.
- ✅ Можно доработать под свои нужды (например, добавить поддержку украинского языка).
⚠️ Внимание: Макросы блокируются по умолчанию в Excel. Чтобы они работали, нужно включить их в Файл → Параметры → Центр управления безопасностью → Параметры центра → Включить все макросы. Не делайте этого для файлов из ненадёжных источников!
Как защитить книгу с макросами от изменений?
Чтобы предотвратить случайное изменение кода VBA, можно защитить проект паролем:
1. Откройте редактор VBA (Alt + F11).
2. В окне Project Explorer кликните правой кнопкой по названию проекта.
3. Выберите VBAProject Properties → Protection.
4. Установите флажок Lock project for viewing и задайте пароль.
5. Сохраните файл.
Важно: Если забудете пароль, восстановить доступ к коду будет невозможно!5. Онлайн-сервисы и внешние инструменты
Если вам нужно преобразовать числа в слова однократно или вы работаете в Excel Online, можно воспользоваться внешними сервисами. Они не требуют установки и часто поддерживают дополнительные функции (например, выбор валюты или языка). Популярные варианты:
- 🌐 NumWord.com — поддерживает русский, английский, немецкий. Есть API для автоматизации.
- 🌐 Числапрописью.рф — специализируется на рублях и копейках, учитывает падежи.
- 🌐 ConvertNumber.com — международный сервис с поддержкой 20+ языков.
Как использовать:
- Скопируйте число из Excel.
- Вставьте его в поле на сайте.
- Выберите валюту и язык.
- Скопируйте результат обратно в Excel.
Плюсы онлайн-сервисов:
- ✅ Не требуют установки.
- ✅ Часто бесплатны.
- ✅ Поддерживают редкие валюты (например, тенге, гривны).
Минусы:
- ❌ Неудобно для больших объёмов данных.
- ❌ Риск утечки конфиденциальной информации (если передаёте данные через интернет).
- ❌ Зависимость от скорости интернета.
1. Экспортируйте данные в .csv.
2. Используйте Google Sheets с функцией =SPARKLINE() (не напрямую, но есть скрипты для этого).
3. Импортируйте обратно в Excel. Это быстрее, чем ручной ввод!-->
6. Обработка отрицательных чисел и специальных случаев
Все описанные методы (кроме VBA) не работают с отрицательными числами по умолчанию. Чтобы обработать их, нужно добавить проверку знака. Пример для формулы:
=ЕСЛИ(A1<0; "минус " & ЧИСЛОВТЕКСТ_РУБ(ABS(A1)); ЧИСЛОВТЕКСТ_РУБ(A1))
В VBA это решается добавлением одной строки в начало функции:
If Сумма < 0 Then ЧислоПрописью = "минус " & ЧислоПрописью(Abs(Сумма), Валюта): Exit Function
Другие специальные случаи:
- 🔢 Ноль — многие функции возвращают пустую строку для
0. Чтобы получить "ноль рублей", добавьте проверку:=ЕСЛИ(A1=0; "ноль рублей"; ЧИСЛОВТЕКСТ_РУБ(A1)). - 🔢 Дробные числа без копеек — если сумма целая (например,
100,00), но нужно указать "00 копеек", используйте:=ЕСЛИ(ОСТАТ(A1;1)=0; ЧИСЛОВТЕКСТ_РУБ(A1) & " 00 копеек"; ЧИСЛОВТЕКСТ_РУБ(A1)). - 🔢 Валюты с другими названиями — для долларов или евро замените массивы склонений в VBA-коде:
Рубли = Array("доллар", "доллара", "долларов")Копейки = Array("цент", "цента", "центов")
Если вы работаете с бухгалтерскими документами, обратите внимание на требования к оформлению сумм прописью. Например, в некоторых банках требуется писать "руб." и "коп." с точками, а не "рублей". Это можно настроить в VBA-коде.
7. Автоматизация для больших таблиц: Power Query и Python
Если вам нужно преобразовать тысячи строк (например, в отчёте по зарплате или инвойсах), то ручные методы не подойдут. В этом случае поможет:
- 📊 Power Query — инструмент для преобразования данных в Excel. Можно написать кастомную функцию на M (язык Power Query), которая будет вызывать внешний скрипт или API.
- 🐍 Python — с библиотекой
num2wordsможно обработать данные и вернуть результат в Excel. Пример кода:from num2words import num2wordsprint(num2words(1234, lang='ru')) # "одна тысяча двести тридцать четыре"
Для интеграции с Excel используйте
xlwingsилиopenpyxl.
Как автоматизировать процесс:
- Экспортируйте данные из Excel в
.csv. - Обработайте файл скриптом на Python.
- Импортируйте результат обратно.
Преимущества:
- ✅ Обрабатывает миллионы строк.
- ✅ Гибкая настройка (можно добавить обработку валют, падежей и т.д.).
Недостатки:
- ❌ Требует знания Python или Power Query.
- ❌ Дольше настраивается, чем VBA.
FAQ: Частые вопросы по преобразованию чисел в слова
Можно ли преобразовать числа в слова на телефоне (Excel для Android/iOS)?
В мобильной версии Excel нет поддержки VBA и надстроек, поэтому остаются только два варианта:
- Использовать онлайн-сервисы (см. раздел 5).
- Вводить числа вручную или копировать из десктопной версии.
Некоторые пользователи устанавливают Termux на Android и запускают Python-скрипты, но это сложно для новичков.
Почему моя формула возвращает ошибку #ИМЯ?
Ошибка #ИМЯ! возникает, если:
- Вы опечатались в названии функции (например,
=ЧИСЛОТЕКСТвместо=ЧИСЛОПРОПИСЬ). - Не подключена надстройка, которая предоставляет эту функцию.
- В формуле используются русские кавычки («») вместо прямых ("").
Решение: проверьте синтаксис и убедитесь, что надстройка активирована в Файл → Параметры → Надстройки.
Как преобразовать дату в слова (например, "первое января")?
Для преобразования дат в текстовый формат используйте комбинацию функций ДЕНЬ(), МЕСЯЦ() и ВЫБОР():
=ВЫБОР(ДЕНЬ(A1);"первое";"второе";...;"тридцатое") & " " &
ВЫБОР(МЕСЯЦ(A1);"января";"февраля";...;"декабря")
Для полной автоматизации лучше написать VBA-функцию или использовать надстройку DateToText.
Можно ли преобразовать числа в слова в Google Таблицах?
В Google Sheets тоже нет встроенной функции, но есть два обходных пути:
- Скрипт Apps Script — аналог VBA для Google Таблиц. Можно адаптировать код из раздела 4.
- Надстройка Number to Words — устанавливается из магазина надстроек Google.
Пример вызова функции после установки надстройки: =NUMBERTOWORDS(A1; "ru"; "RUB").
Как сделать, чтобы сумма прописью автоматически обновлялась при изменении числа?
Если вы используете формулу или функцию из надстройки, она будет обновляться автоматически. Для VBA-макроса нужно:
- Сделать функцию летучей (volatile), добавив в начало кода строку:
Application.Volatile - Или использовать событие
Worksheet_Change, чтобы макрос срабатывал при изменении ячейки.
Пример кода для автоматического обновления:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1:A100")) Is Nothing Then
Range("B" & Target.Row).Value = ЧислоПрописью(Target.Value)
End If
End Sub