Преобразование числовых значений в текстовый формат прописью — одна из самых востребованных задач в Microsoft Excel, особенно при работе с финансовыми документами, счетами и отчётами. Несмотря на то, что в программе нет встроенной функции для автоматического перевода чисел в слова, существует несколько проверенных методов: от использования формул до создания пользовательских макросов на VBA. Эта статья поможет разобраться, как реализовать функцию "сумма прописью" в разных версиях Excel (2010–2026), избежать типичных ошибок и адаптировать решение под русскоязычные правила склонения.
Многие пользователи ошибочно считают, что для этой задачи обязательно нужен опыт программирования. На самом деле, даже начинающий может справиться с помощью готовых шаблонов или надстроек. Главное — понимать, что перевод чисел в текст требует учёта грамматических особенностей (например, склонения рублей и копеек), а также правильной обработки дробных частей. Далее мы подробно разберём все доступные способы — от самых простых до продвинутых.
———
1. Почему в Excel нет встроенной функции «Сумма прописью»?
На первый взгляд кажется странным, что в Excel отсутствует стандартная функция для преобразования чисел в текстовый формат. Причина кроется в многообразии языковых и региональных особенностей. Например, правила написания чисел прописью сильно отличаются в русском, английском или немецком языках. Даже внутри одного языка есть нюансы: в России используют "рубль/рубля/рублей", а в Украине — "гривна/гривны/гривен".
Кроме того, Microsoft изначально позиционирует Excel как инструмент для вычислений, а не для текстовых преобразований. Встроенные функции вроде TEXT или VALUE работают с форматированием, но не решают задачу полного перевода числа в слова. Это объясняет, почему пользователям приходится прибегать к сторонним решениям.
Тем не менее, отсутствие готовой функции — не проблема. Существует как минимум 5 альтернативных способов:
- 📊 Формулы с вложенными условиями (для простых случаев)
- 🤖 Пользовательские функции на VBA (гибкое решение)
- 📦 Готовые надстройки (например, NumToText или РубльТекст)
- 🔗 Power Query (для автоматизации в больших таблицах)
- 🌐 Онлайн-конвертеры (если нужно одноразовое решение)
———
2. Способ 1: Формула без VBA (для чисел до 999 999)
Если вам нужно преобразовать относительно небольшие суммы (до миллиона), можно обойтись без макросов, используя вложенные функции ЕСЛИ и ВЫБОР. Этот метод подходит для Excel 2010–2026 и не требует дополнительных настроек.
Пример формулы для ячейки A1 (где хранится число 1234):
=ЕСЛИ(A1=0;"ноль";
ТЕКСТ(ЦЕЛОЕ(A1/1000000);"[>=1000000]0 \"млн \"\"\"\"\"\"") &
ВЫБОР(ОСТАТ(ЦЕЛОЕ(A1/1000);100);"";"одна тысяча ";"две тысячи ";"три тысячи ";"четыре тысячи ";"пять тысяч ";"шесть тысяч ";"семь тысяч ";"восемь тысяч ";"девять тысяч ") &
ВЫБОР(ОСТАТ(ЦЕЛОЕ(A1);1000);"";"сто ";"двести ";"триста ";"четыреста ";"пятьсот ";"шестьсот ";"семьсот ";"восемьсот ";"девятьсот ") &
ЕСЛИ(И(ОСТАТ(ЦЕЛОЕ(A1);100)>19;ОСТАТ(ЦЕЛОЕ(A1);100)<20);"девяносто ";
ЕСЛИ(ОСТАТ(ЦЕЛОЕ(A1);100)<10;"";
ВЫБОР(ЦЕЛОЕ(ОСТАТ(ЦЕЛОЕ(A1);100)/10);"";"десять ";"двадцать ";"тридцать ";"сорок ";"пятьдесят ";"шестьдесят ";"семьдесят ";"восемьдесят ";"девяносто ")
)
) &
ЕСЛИ(ОСТАТ(ЦЕЛОЕ(A1);100)<20;
ВЫБОР(ОСТАТ(ЦЕЛОЕ(A1);100);"";"один";"два";"три";"четыре";"пять";"шесть";"семь";"восемь";"девять";"десять";"одиннадцать";"двенадцать";"тринадцать";"четырнадцать";"пятнадцать";"шестнадцать";"семнадцать";"восемнадцать";"девятнадцать");
ВЫБОР(ОСТАТ(ЦЕЛОЕ(A1);10);"";"один";"два";"три";"четыре";"пять";"шесть";"семь";"восемь";"девять")
) &
" руб. " &
ЕСЛИ(ОСТАТ(A1;1)*100=0;"00 коп.";
ТЕКСТ(ОКРУГЛ(ОСТАТ(A1;1)*100;0);"00") & " коп."
)
)
Эта формула работает по принципу разбиения числа на разряды (миллионы, тысячи, сотни, десятки, единицы) и последующего "склеивания" текстовых фрагментов. Обратите внимание, что она:
- ✅ Корректно обрабатывает целые числа до 999 999.
- ✅ Учитывает копейки (дробную часть).
- ❌ Не поддерживает миллиарды и триллионы.
- ❌ Может выдавать ошибки при отрицательных числах.
⚠️ Внимание: Если в ячейкеA1содержится текст или пустое значение, формула вернёт ошибку#ЗНАЧ!. Чтобы избежать этого, оберните её вЕСЛИОШИБКА:=ЕСЛИОШИБКА(ваша_формула;"Некорректное значение")———
3. Способ 2: Пользовательская функция на VBA (универсальное решение)
Для обработки чисел любой длины (включая миллиарды) и учёта всех грамматических нюансов русского языка лучше использовать пользовательскую функцию на VBA. Этот метод требует однократной настройки, но затем работает как стандартная функция Excel.
Чтобы добавить функцию
СуммаПрописью, выполните следующие шаги:Открыть редактор VBA (
Alt + F11)|Вставить новый модуль (Insert → Module)|Скопировать код функции (см. ниже)|Сохранить файл как .xlsm (с поддержкой макросов)|Использовать функцию в таблице как=СуммаПрописью(A1)-->
Код функции для вставки в модуль:
Function СуммаПрописью(Число As Double, Optional Валюта As String = "рубль") As StringDim Рубль As Variant, Копейка As Variant, Текст As String
Dim Целые As Long, Дробные As Integer
' Массивы для склонения валют
Рубль = Array("рубль", "рубля", "рублей")
Копейка = Array("копейка", "копейки", "копеек")
' Обработка целой и дробной частей
Целые = Int(Число)
Дробные = Round((Число - Целые) * 100, 0)
' Преобразование целой части
If Целые = 0 Then
Текст = "ноль " & ВыборПадежа(Целые, Рубль)
Else
Текст = ЧислоПрописью(Целые) & " " & ВыборПадежа(Целые, Рубль)
End If
' Добавление дробной части
If Дробные > 0 Then
Текст = Текст & " " & ЧислоПрописью(Дробные) & " " & ВыборПадежа(Дробные, Копейка)
End If
СуммаПрописью = Текст
End Function
Function ЧислоПрописью(Число As Long) As String
Dim Единицы As Variant, Десятки As Variant, Сотни As Variant
Dim Текст As String, Остаток As Long
' Массивы для разрядов
Единицы = Array("", "один", "два", "три", "четыре", "пять", "шесть", "семь", "восемь", "девять", _
"десять", "одиннадцать", "двенадцать", "тринадцать", "четырнадцать", "пятнадцать", _
"шестнадцать", "семнадцать", "восемнадцать", "девятнадцать")
Десятки = Array("", "десять", "двадцать", "тридцать", "сорок", "пятьдесят", "шестьдесят", "семьдесят", "восемьдесят", "девяносто")
Сотни = Array("", "сто", "двести", "триста", "четыреста", "пятьсот", "шестьсот", "семьсот", "восемьсот", "девятьсот")
If Число = 0 Then Exit Function
' Обработка миллиардов
If Число >= 1000000000 Then
Текст = Текст & ЧислоПрописью(Число \ 1000000000) & " миллиард" & ВыборОкончания(Число \ 1000000000, "а", "", "ов")
Число = Число Mod 1000000000
End If
' Обработка миллионов
If Число >= 1000000 Then
Остаток = Число \ 1000000
Текст = Текст & ЧислоПрописью(Остаток) & " миллион" & ВыборОкончания(Остаток, "а", "", "ов")
Число = Число Mod 1000000
End If
' Обработка тысяч
If Число >= 1000 Then
Остаток = Число \ 1000
Текст = Текст & ЧислоПрописью(Остаток) & " тысяч" & ВыборОкончания(Остаток, "а", "и", "")
Число = Число Mod 1000
End If
' Обработка сотен
If Число >= 100 Then
Текст = Текст & Сотни(Число \ 100)
Число = Число Mod 100
End If
' Обработка десятков и единиц
If Число >= 20 Then
Текст = Текст & Десятки(Число \ 10)
Число = Число Mod 10
End If
If Число > 0 Then
Текст = Текст & Единицы(Число)
End If
ЧислоПрописью = Trim(Текст)
End Function
Function ВыборПадежа(Число As Long, Валюта As Variant) As String
Dim Остаток As Integer
Остаток = Число Mod 100
If Остаток >= 11 And Остаток <= 19 Then
ВыборПадежа = Валюта(2)
Else
Остаток = Остаток Mod 10
Select Case Остаток
Case 1: ВыборПадежа = Валюта(0)
Case 2, 3, 4: ВыборПадежа = Валюта(1)
Case Else: ВыборПадежа = Валюта(2)
End Select
End If
End Function
Function ВыборОкончания(Число As Long, Окончание1 As String, Окончание2 As String, Окончание3 As String) As String
Dim Остаток As Integer
Остаток = Число Mod 100
If Остаток >= 11 And Остаток <= 19 Then
ВыборОкончания = Окончание3
Else
Остаток = Остаток Mod 10
Select Case Остаток
Case 1: ВыборОкончания = Окончание1
Case 2, 3, 4: ВыборОкончания = Окончание2
Case Else: ВыборОкончания = Окончание3
End Select
End If
End Function
Эта функция учитывает:
- 💰 Склонение валют ("рубль/рубля/рублей", "копейка/копейки/копеек").
- 🔢 Числа любой длины (включая триллионы).
- 📉 Отрицательные значения (выведет "минус [сумма прописью]").
- 🔄 Дробные части (копейки).
Чтобы использовать её для другой валюты (например, долларов), вызовите функцию с втором параметром:
=СуммаПрописью(A1; "доллар")⚠️ Внимание: Если при вызове функции появляется ошибка#ИМЯ?, проверьте:
- Сохранён ли файл в формате .xlsm (с поддержкой макросов).
- Включены ли макросы в настройках безопасности (
Файл → Параметры → Центр управления безопасностью).- Нет ли опечаток в имени функции при вызове.
———
📊 Какой способ преобразования чисел в текст вы используете чаще?Встроенные формулыVBA-макросыГотовые надстройкиОнлайн-конвертерыНе использую4. Способ 3: Готовые надстройки для Excel
Если вам не хочется разбираться в формулах или VBA, можно воспользоваться бесплатными или платными надстройками. Они устанавливаются как дополнения к Excel и добавляют новые функции в список стандартных.
Популярные надстройки для русскоязычных пользователей:
Название Тип Особенности Ссылка NumToText Бесплатная Поддерживает русский, английский, украинский. Работает с миллиардами. Скачать РубльТекст Платная (от 500 ₽) Интеграция с 1С, корректное склонение для бухгалтерских документов. Официальный сайт Excel Number to Words Бесплатная Поддерживает 20+ языков, включая русский. Легкая установка. GitHub Атлант-Сумма Платная (от 1200 ₽) Для профессионалов: работа с НДС, актами, счетами-фактурами. Купить Установка надстройки занимает не более 5 минут:
- Скачайте файл надстройки (.xlam или .xlsm).
- Откройте Excel и перейдите в
Файл → Параметры → Надстройки.- Нажмите
Перейти...внизу окна.- В появившемся окне нажмите
Обзори выберите скачанный файл.- Подтвердите установку и перезапустите Excel.
После установки в списке функций появится новая категория (например,
Текстовые), где будет функция вроде=РУБЛЬТЕКСТ(A1).———
5. Способ 4: Power Query для массовой обработки
Если вам нужно преобразовать большой массив данных (например, столбец с тысячами строк), удобнее использовать Power Query. Этот инструмент встроен в Excel 2016–2026 и позволяет автоматизировать преобразования без формул.
Алгоритм действий:
- Выделите столбец с числами и перейдите на вкладку
Данные.- Нажмите
Из таблицы/диапазона(если данные не в таблице, Excel предложит создать её).- В открывшемся редакторе Power Query выберите столбец и нажмите
Добавить столбец → Пользовательский столбец.- Введите формулу для преобразования (пример ниже) и назовите новый столбец (например, "Сумма прописью").
- Нажмите
Закрыть и загрузить.Пример формулы для Power Query (на языке M):
[Сумма] = 1234,Рублей = if [Сумма] = 0 then "ноль рублей"
else Number.ToText([Сумма], "ru-RU") & " руб.",
Копеек = Text.End(Text.From(Number.Mod([Сумма], 1) * 100), 2) & " коп."
Обратите внимание, что в Power Query нет готовой функции для русскоязычного преобразования, поэтому придётся:
- Использовать внешние скрипты на Python или R (если они подключены в вашем Excel).
- Либо предварительно создать таблицу соответствий чисел и их текстовых эквивалентов.
Как подключить Python в Power Query?
Для этого нужно:
1. Установить Python (версии 3.6+) на компьютер.
2. В Excel перейти в
Файл → Параметры → Надстройки → Управление надстройками COMи выбрать Python.3. В Power Query использовать функцию
Python.Scriptс передачей данных в скрипт.———
6. Способ 5: Онлайн-конвертеры (для одноразовых задач)
Если вам нужно преобразовать сумму прописью один или несколько раз, проще воспользоваться онлайн-сервисами. Они не требуют установки и работают прямо в браузере. Достаточно ввести число — и сервис вернёт текстовый эквивалент.
Проверенные сервисы для русского языка:
- 🌍 NumToWords — поддерживает 30+ языков, включая русский с правильным склонением.
- 💰 Рубли.рф — специализируется на финансовых суммах (рубли/копейки).
- 📄 Convertio — позволяет загружать Excel-файлы и конвертировать целые столбцы.
Преимущества онлайн-конвертеров:
- ✅ Не нужно ничего устанавливать.
- ✅ Поддержка больших чисел (триллионы).
- ✅ Корректное склонение валют.
Недостатки:
- ❌ Риск утечки конфиденциальных данных (если передаёте суммы из реальных документов).
- ❌ Невозможно автоматизировать процесс для регулярных задач.
- ❌ Зависимость от интернет-соединения.
⚠️ Внимание: Перед использованием онлайн-сервисов для работы с финансовыми данными убедитесь, что сайт использует HTTPS (закрытый замок в адресной строке) и имеет политику конфиденциальности. Не загружайте файлы с персональной информацией на неизвестные ресурсы.———
7. Типичные ошибки и как их избежать
При преобразовании чисел в текст прописью пользователи часто сталкиваются с одними и теми же проблемами. Вот самые распространённые ошибки и способы их решения:
Ошибка Причина Решение Функция возвращает #ИМЯ?Опечатка в имени функции или не сохранён макрос. Проверьте регистр (например, СуммаПрописью, а несуммапрописью). Сохраните файл как .xlsm.Неправильное склонение ("1 рубль" вместо "1 рубля") Ошибка в логике функции VBA. Используйте готовую функцию из раздела 3 или проверьте код на наличие опечаток в массивах склонений. Копейки отображаются как "0 копеек" даже если они есть Формула или макрос не учитывает дробную часть. Добавьте обработку дробной части через ОКРУГЛ(ОСТАТ(число;1)*100;0).Отрицательные числа выводятся без слова "минус" Функция не обрабатывает знак числа. Добавьте проверку: ЕСЛИ(Число<0; "минус " & СуммаПрописью(ABS(Число))).Надстройка не работает после обновления Excel Изменения в API или формате файлов. Обновите надстройку или свяжитесь с разработчиком. Проверьте совместимость с вашей версией Excel. Ещё одна частая проблема — некорректное отображение больших чисел (например, "1000000" превращается в "один миллионноль"). Это происходит из-за ошибок округления. Чтобы избежать этого, всегда используйте
ЦЕЛОЕ(число)для целой части иОКРУГЛ(ОСТАТ(число;1)*100;0)для копеек.———
8. FAQ: Ответы на частые вопросы
Можно ли сделать сумму прописью в Excel Online?
В Excel Online нет поддержки VBA-макросов, поэтому пользовательские функции не работают. Альтернативы:
- Используйте Power Automate (бывший Microsoft Flow) для автоматизации.
- Применяйте онлайн-конвертеры и вставляйте результат вручную.
- Установите надстройки из Microsoft AppSource (если доступны для вашей страны).
Как сделать, чтобы сумма прописью автоматически обновлялась при изменении числа?
Если вы используете:
- Формулу — обновление происходит автоматически.
- VBA-функцию — включите автоматический пересчёт (
Формулы → Параметры вычислений → Автоматически).- Power Query — обновите запрос вручную (
Данные → Обновить все) или настройте автоматическое обновление при открытии файла.Можно ли изменить валюту с рублей на доллары или евро?
Да. В VBA-функции из раздела 3 замените массивы склонений:
Рубль = Array("доллар", "доллара", "долларов")Копейка = Array("цент", "цента", "центов")
Для надстроек обычно есть настройки валюты в параметрах.
Почему в результате появляются лишние пробелы?
Это происходит из-за некорректной обработки строк в формулах или VBA. Чтобы убрать лишние пробелы, оберните результат в функцию
СЖПРОБЕЛЫ:=СЖПРОБЕЛЫ(СуммаПрописью(A1))Как сделать сумму прописью в Google Таблицах?
В Google Sheets нет встроенной функции, но можно:
- Использовать App Script (аналог VBA). Пример кода есть в документации Google.
- Установить надстройку из Google Workspace Marketplace (например, Number to Words).
- Применить формулу с регулярными выражениями (но это сложно и не всегда корректно).
———