Автоматическое преобразование чисел в текст в Excel
Чтобы записать число прописью (например, 12500,50 как «Двенадцать тысяч пятьсот рублей 50 копеек»), используйте встроенную функцию СУММАПРОПИСЬЮ в новых версиях Excel или создайте пользовательскую функцию через макрос VBA для старых версий. Это исключает ошибки ручного ввода при оформлении счетов, договоров и накладных.
В стандартном наборе функций Excel нет кнопки «Сумма прописью», но задачу можно решить тремя способами в зависимости от вашей версии программы.
Встроенная функция для Microsoft 365 и Excel 2024+
Если у вас оформлена подписка Microsoft 365 или установлена свежая версия пакета (начиная с обновления 2402), функция уже встроена. Это самый надежный вариант, не требующий программирования.
Алгоритм действий:
- Введите числовое значение в ячейку (например,
A1). - В соседней ячейке используйте формулу:
=СУММАПРОПИСЬЮ(A1; "рубль"; "рубля"; "рублей"; "копейка"; "копейки"; "копеек")
Функция автоматически склоняет слова в зависимости от числа. Если нужно добавить пробел перед валютой или изменить формат, просто добавьте пустые строки или нужные символы в аргументы функции.
Функция чувствительна к разделителям. Убедитесь, что в настройках системы десятичный разделитель соответствует тому, что используется в файле (запятая или точка).
Универсальная формула без макросов
Для версий Excel 2010–2021, где нет встроенной функции, а использование макросов запрещено политикой безопасности, подойдет сложная формула на базе функций ВЫБОР, ПСТР и математических операторов.
Этот метод не требует сохранения файла в формате .xlsm, но формула получается громоздкой. Она разбивает число на разряды (миллионы, тысячи, сотни) и собирает текстовую строку по частям.
Пример реализации:
Предположим, сумма находится в ячейке A1. Вам потребуется создать вспомогательные вычисления для целой части (рубли) и дробной (копейки), а затем применить длинную формулу конкатенации.
Основные этапы построения логики:
- Выделение целой части:
=ЦЕЛОЕ(A1) - Выделение копеек:
=ОКРУГЛ((A1-ЦЕЛОЕ(A1))*100;0) - Сборка текста: Использование массивов слов («сто», «двадцать», «один») и выбор нужного слова в зависимости от остатка от деления разряда.
Копирование таких формул из интернета часто приводит к ошибкам из-за различий в именах функций (английский/русский интерфейс) и кодировке кириллицы. Протестируйте формулу на небольших суммах перед внедрением в отчеты.
Создание своей функции через макрос VBA (Рекомендуемый способ)
Самый гибкий метод, работающий во всех версиях Excel (включая старые 2010, 2013, 2016). Вы создаете свою функцию СуммаПрописью, которая ведет себя как обычная формула.
Инструкция по установке:
- Откройте книгу Excel и нажмите комбинацию клавиш
Alt + F11. Откроется редактор Visual Basic. - В меню выберите Insert > Module.
- Вставьте следующий код в открывшееся окно:
Function СуммаПрописью(ByVal MyNumber As Double) As String
Dim Rubles As Long, Kopecks As Integer
Dim Result As String
If MyNumber < 0 Then
СуммаПрописью = "Отрицательное число"
Exit Function
End If
Rubles = Int(MyNumber)
Kopecks = Round((MyNumber - Rubles) * 100, 0)
Result = GetRubles(Rubles)
If Kopecks > 0 Then
Result = Result & " " & GetKopecks(Kopecks)
Else
Result = Result & " 00 копеек"
End If
СуммаПрописью = Application.Proper(Result)
End Function
Function GetRubles(ByVal Num As Long) As String
' Упрощенная логика для примера.
' В полный код необходимо добавить массивы слов для сотен, десятков и единиц
' с учетом родов (один рубль, две тысячи, пять миллионов).
' Для полноценной работы скачайте готовый модуль или используйте надстройку.
GetRubles = Num & " рублей (требуется полный код модуля)"
End Function
Function GetKopecks(ByVal Num As Integer) As String
GetKopecks = Num & " копеек"
End Function
Примечание: Полный код функции занимает около 100 строк и включает массивы склонений. Для реальной работы рекомендуется скачать готовый проверенный модуль или использовать надстройку, так как ручной ввод всего кода склонения числительных трудоемок.
- Закройте редактор VBA.
- Сохраните файл в формате Excel с поддержкой макросов (.xlsm).
- Теперь в любой ячейке можно писать:
=СуммаПрописью(A1).
Если при открытии файла появляется предупреждение о макросах, нажмите «Включить содержимое». Без этого функция вернет ошибку #ИМЯ?.
Сравнение методов преобразования
| Метод | Версии Excel | Сложность внедрения | Требуются макросы | Надежность |
|---|---|---|---|---|
| Функция СУММАПРОПИСЬЮ | 365, 2024+ | Низкая | Нет | Высокая |
| Сложная формула | Любые | Высокая | Нет | Средняя |
| Макрос VBA | Любые | Средняя | Да | Высокая |
| Надстройки (Add-ins) | Любые | Низкая | Да | Высокая |
Частые ошибки и их решение
-
Ошибка #ИМЯ? Возникает, если вы используете функцию из макроса, но файл сохранен в обычном формате
.xlsx. Пересохраните файл как.xlsm. Также проверьте, включены ли макросы в настройках безопасности («Файл» > «Параметры» > «Центр управления безопасностью»). -
Неверное склонение (1 рублей вместо 1 рубль) При использовании самописных формул часто забывают учесть исключения для чисел 11–14 (одиннадцать рублей, а не одиннадцать рубля). В макросах это решается проверкой условия
If (Num Mod 100) > 10 And (Num Mod 100) < 15. -
Разделитель дробной части Если формула выдает ошибку или неверное количество копеек, проверьте системные настройки региона. В русской локали разделитель — запятая, в английской — точка. Формулы должны соответствовать настройкам Excel.
FAQ
Можно ли сделать сумму прописью в Google Таблицах? Стандартной функции там нет. Потребуется установить дополнение из магазина расширений (по запросу "numbertext") или написать скрипт на Google Apps Script, аналогичный VBA.
Как прописать доллары или евро? Логика та же, меняется только набор слов в массиве валюты. В макросе VBA замените слово «рубль» на «доллар» или «евро» и отредактируйте правила склонения (один доллар, два доллара, пять долларов).
Работает ли это на телефоне (Excel для Android/iOS)? Макросы VBA не работают в мобильных приложениях Excel. На телефонах можно использовать только встроенную функцию (если версия поддерживает) или заранее подготовленные файлы с формулами, созданные на ПК.