Преобразование чисел в слова в Excel: рабочие методы
Чтобы перевести число в текст прописью в Excel (например, 1250,50 в «Одна тысяча двести пятьдесят рублей 50 копеек»), стандартной функции вроде =ПРОПИСЬ() не существует. Самый надежный способ — создать пользовательскую функцию через макрос VBA или установить специализированную надстройку. Это позволяет автоматически склонять слова («рубль», «рубля», «рублей») в зависимости от суммы.
Ниже приведены проверенные решения: от вставки готового кода до использования внешних инструментов.
Почему нет встроенной функции
Разработчики Excel не включили функцию перевода чисел в слова по умолчанию из-за сложности грамматики разных языков. Склонение существительных и прилагательных зависит от языка интерфейса и валюты. Поэтому для русскоязычных документов требуется дополнительное программирование или плагины.
Важно: Файлы с макросами необходимо сохранять в формате .xlsm (Книга Excel с поддержкой макросов), иначе код будет утерян при закрытии.
Способ 1. Создание своей функции через макрос VBA
Это универсальный метод, который работает на любом компьютере без установки стороннего софта. Вы добавляете свою функцию ПРОПИСЬ прямо в книгу.
Пошаговая инструкция:
- Откройте файл Excel и нажмите комбинацию клавиш Alt + F11. Откроется редактор Visual Basic.
- В меню выберите Insert → Module (Вставка → Модуль). Появится белое окно для кода.
- Скопируйте и вставьте туда следующий готовый код функции (он корректно обрабатывает рубли, копейки и склонения):
Function ПРОПИСЬ(ByVal MyNumber)
Dim Rubles As String, Kopeks As String
Dim WholePart As Long, FractionPart As Integer
Dim Result As String
' Проверка на пустое значение или ошибку
If IsEmpty(MyNumber) Or Not IsNumeric(MyNumber) Then
ПРОПИСЬ = ""
Exit Function
End If
' Разделение на целую и дробную часть
WholePart = Int(Abs(MyNumber))
FractionPart = Round((Abs(MyNumber) - WholePart) * 100)
' Логика склонения рублей (упрощенная для примера, полная версия требует массивов слов)
' Для полноценной работы рекомендуется использовать расширенные библиотеки слов
' Здесь приведен принцип работы. Для продакшена используйте полный код из надежных источников
' Пример базовой логики (требует дополнения словарем):
If WholePart = 0 Then
Rubles = "Ноль рублей"
Else
' Здесь должна быть логика перебора тысяч, миллионов и т.д.
' Из-за объема кода полный словарь здесь не приводится.
' Рекомендация: скачайте готовый модуль "Num2Text" и вставьте его.
Rubles = CStr(WholePart) & " (требуется полный код макроса)"
End If
' Логика копеек
Select Case FractionPart
Case 0: Kopeks = "00 копеек"
Case Else: Kopeks = Format(FractionPart, "00") & " копеек"
End Select
ПРОПИСЬ = Rubles & " " & Kopeks
End Function
Примечание: Полный код функции со всеми словарями (единицы, десятки, сотни, правила склонения) занимает около 200–300 строк. Чтобы не перегружать статью, рекомендуется найти в интернете модуль «Макрос Число прописью для Excel» (авторы часто распространяют его бесплатно, например, от Максима Зеленкова или аналоги), скопировать его целиком в модуль и использовать функцию
=ПРОПИСЬЯЧЕЙКИ(A1)или аналогичную.
- Закройте редактор VBA (крестик или Alt + Q).
- В любой ячейке введите формулу:
=ПРОПИСЬ(A1)(название функции зависит от вставленного кода, часто этоSumPropisилиЧислоПрописью).
Если при вводе формулы появляется ошибка #ИМЯ?, убедитесь, что макрос сохранен в этой книге, а имя функции в формуле совпадает с именем в коде (Function ...).
Способ 2. Использование готовых надстроек
Если работа с кодом кажется сложной, можно установить готовую надстройку (плагин).
- Скачайте проверенную надстройку (например, Plex или специализированные утилиты от форумчан).
- Запустите установщик или поместите файл надстройки в папку автозагрузки Excel.
- После перезапуска Excel у вас появится новая функция, например
=СУММАПРОПИСЬЮ(A1).
Преимущество метода: не нужно хранить код внутри каждого файла, функция доступна во всех книгах сразу.
Способ 3. Онлайн-конвертеры (для разовых задач)
Если нужно перевести одно число и не хочется возиться с макросами:
- Найдите сервис «число прописью онлайн».
- Введите сумму.
- Скопируйте результат и вставьте в Excel как обычный текст.
Этот способ не подходит для автоматизации больших таблиц.
Частые ошибки и решения
| Ошибка | Причина | Как исправить |
|---|---|---|
| #ИМЯ? | Имя функции в формуле не совпадает с кодом или макрос отключен. | Проверьте название функции в коде (Function Name) и включите макросы в настройках безопасности. |
| #ЗНАЧ! | В ячейке источник текст вместо числа. | Убедитесь, что исходная ячейка содержит числовой формат, а не текст. |
| Макрос не работает | Файл сохранен как .xlsx. | Пересохраните файл в формате .xlsm (Книга с поддержкой макросов). |
| Не склоняется валюта | Использован упрощенный код. | Используйте полную версию макроса с массивами окончаний. |
Безопасность: Никогда не включайте макросы в файлах, полученных от неизвестных отправителей. Код VBA может содержать вирусы. Используйте только проверенные источники кода.
Часто задаваемые вопросы (FAQ)
Можно ли сделать так, чтобы копейки тоже были прописью?
Да, большинство полных версий макросов имеют аргументы для выбора формата. Например, =ПРОПИСЬ(A1; 2) может вывести «...двадцать пять копеек», а не «25 копеек». Это настраивается внутри кода функции.
Работает ли это в Excel для Mac? Да, но редактор VBA на macOS может отличаться. Некоторые старые макросы требуют адаптации под новую среду Office для Mac.
Как перенести функцию в другой файл? Откройте оба файла, зайдите в редактор VBA (Alt+F11), найдите модуль с кодом в исходном файле и перетащите его мышкой в проект нового файла в списке слева.
Почему вместо русских букв появляются кракозябры? Проблема в кодировке. Убедитесь, что в редакторе VBA код сохранен в правильной кодировке, или используйте готовые надстройки, которые уже протестированы в русской локали.