Перевод числовых значений в текстовый формат — одна из самых востребованных задач при работе с финансовыми документами в Microsoft Excel. Будь то счета, акты выполненных работ или договоры, суммы прописью требуются для соблюдения бухгалтерских стандартов и юридической значимости документов. Однако стандартный функционал Excel не включает встроенной функции для такого преобразования, что заставляет пользователей искать обходные пути.
В этой статье мы разберём 5 проверенных методов, как прописать сумму прописью в Excel — от использования комбинаций стандартных функций (ТЕКСТ, ВЫБОР, ЕСЛИ) до создания пользовательских функций на VBA. Вы узнаете, какой способ подходит для одноразовых задач, а какой лучше автоматизировать для регулярного использования. Особое внимание уделим нюансам работы с копейками, отрицательными числами и крупными суммами (миллионы и миллиарды).
Все примеры сопровождаются готовыми формулами и шаблонами, которые вы сможете скачать и адаптировать под свои нужды. А для тех, кто предпочитает готовые решения — в конце статьи приведён обзор бесплатных надстроек Excel для автоматического преобразования чисел в текст.
1. Способ: Использование стандартных функций Excel (без VBA)
Если вам нужно единожды прописать сумму прописью или вы работаете в корпоративной среде, где установка макросов запрещена, этот метод станет оптимальным решением. Он комбинации функций ТЕКСТ, ВЫБОР, ЕСЛИ и ПОИСКПОЗ, но требует ручного создания справочных таблиц с названиями чисел.
Основной принцип: число разбивается на разряды (единицы, десятки, сотни), а затем каждый разряд преобразуется в текст с помощью вложенных функций. Например, число 1 234 будет обработано как:
- 🔹 1 (тысяча) →"одна тысяча"
- 🔹 2 (сотни) →"двести"
- 🔹 34 (десятки и единицы) →"тридцать четыре"
Для реализации этого метода:
- Создайте на листе Excel справочную таблицу с названиями чисел от 0 до 999 (можно ограничиться до 99, если суммы не превышают 1000).
- Используйте функцию
=ЦЕЛОЕ(A1/1000)для выделения тысяч,=ОСТАТ(A1;1000)— для остатка. - Примените вложенные
ЕСЛИилиВЫБОРдля подстановки текстового эквивалента.
Пример формулы для числа до 999:
=ЕСЛИ(A1=0;"ноль";
ВЫБОР(ЦЕЛОЕ(A1/100);
"";
ЕСЛИ(ОСТАТ(ЦЕЛОЕ(A1/100);10)=1;"сто";"ста");
"двести";"триста";"четыреста";"пятьсот";"шестьсот";"семьсот";"восемьсот";"девятьсот") &"" &
ЕСЛИ(И(ЦЕЛОЕ(A1/10)>0;ЦЕЛОЕ(A1/10)<2);
ВЫБОР(ОСТАТ(A1;10);
"десять";"одиннадцать";"двенадцать";"тринадцать";"четырнадцать";
"пятнадцать";"шестнадцать";"семнадцать";"восемнадцать";"девятнадцать");
ЕСЛИ(ЦЕЛОЕ(A1/10)>1;
ВЫБОР(ЦЕЛОЕ(A1/10);
"двадцать";"тридцать";"сорок";"пятьдесят";"шестьдесят";
"семьдесят";"восемьдесят";"девяносто") &"" &
ВЫБОР(ОСТАТ(A1;10);
"";"один";"два";"три";"четыре";"пять";"шесть";"семь";"восемь";"девять");
"")) &"" &
ЕСЛИ(И(ЦЕЛОЕ(A1/10)=0;ОСТАТ(A1;10)>0);
ВЫБОР(ОСТАТ(A1;10);
"";"один";"два";"три";"четыре";"пять";"шесть";"семь";"восемь";"девять");
""))
⚠️ Внимание: Этот метод имеет ограничение — формула становится чрезвычайно громоздкой при работе с суммами свыше 999 999. Для миллионов и миллиардов рекомендуется использовать VBA или надстройки.
2. Способ: Пользовательская функция на VBA (самый универсальный)
Для тех, кто готов использовать макросы, VBA (Visual Basic for Applications) предлагает самое гибкое решение. Созданная один раз функция SumProp будет доступна во всех книгах Excel на вашем компьютере (при сохранении в Персональной книге макросов).
Преимущества метода:
- 🔹 Обработка чисел любой длины (включая триллионы).
- 🔹 Автоматическое склонение валют ("рубль"/"рубля"/"рублей").
- 🔹 Поддержка отрицательных чисел и нулевых значений.
- 🔹 Возможность кастомизации (например, добавление"только" или"00 копеек").
Инструкция по установке:
- Нажмите
Alt + F11, чтобы открыть редактор VBA. - В меню выберите
Insert → Module. - Вставьте приведённый ниже код.
- Сохраните файл как
.xlsm(с поддержкой макросов).
Function SumProp(ByVal n As Double, Optional valuta As String ="рубль/рубля/рублей") As String
Dim rubl As String, kop As String, temp As String
Dim valutaParts As String
valutaParts = Split(valuta,"/")
n = Round(n, 2)
If n = 0 Then
SumProp ="ноль" & valutaParts(2)
Exit Function
End If
If n < 0 Then
SumProp ="минус"
n = Abs(n)
End If
rubl = Num2Str(Int(n))
kop = Num2Str(Round((n - Int(n)) * 100, 0))
If Len(rubl) > 0 Then
temp = GetRub(n, valutaParts)
If Len(temp) > 0 Then rubl = rubl &"" & temp
End If
If Len(kop) > 0 Then
SumProp = rubl &"" & kop &" копеек"
Else
SumProp = rubl &"" & GetRub(n, valutaParts)
End If
End Function
Function Num2Str(n As Long) As String
Dim strNum As String, i As Integer
Dim arr As String, arrNum(1 To 6) As String
Dim j As Integer, k As Integer
If n = 0 Then Exit Function
arrNum(1) =""
arrNum(2) =" тысяча/тысячи/тысяч"
arrNum(3) =" миллион/миллиона/миллионов"
arrNum(4) =" миллиард/миллиарда/миллиардов"
arrNum(5) =" триллион/триллиона/триллионов"
arrNum(6) =" квадриллион/квадриллиона/квадриллионов"
strNum = CStr(n)
j = Len(strNum)
k = Int((j - 1) / 3) + 1
ReDim arr(1 To k)
For i = 1 To k
If i < k Then
arr(i) = Right(strNum, 3)
strNum = Left(strNum, Len(strNum) - 3)
Else
arr(i) = strNum
End If
arr(i) = Triad(Right("000" & arr(i), 3), (i = k))
Next i
For i = k To 1 Step -1
If Len(arr(i)) > 0 Then
Num2Str = Num2Str &"" & arr(i) & ChooseCase(arr(i), arrNum(i))
End If
Next i
Num2Str = Application.WorksheetFunction.Trim(Num2Str)
End Function
Function Triad(n As String, isLast As Boolean) As String
Dim hundreds As String, tens As String, ones As String
Dim arr1 As String, arr2 As String, arr3 As String
Dim i As Integer, j As Integer, k As Integer
arr1 = Array("","один","два","три","четыре","пять","шесть","семь","восемь","девять")
arr2 = Array("","десять","двадцать","тридцать","сорок","пятьдесят", _
"шестьдесят","семьдесят","восемьдесят","девяносто")
arr3 = Array("","одна","две","три","четыре","пять","шесть","семь","восемь","девять")
hundreds = Mid(n, 1, 1)
tens = Mid(n, 2, 1)
ones = Mid(n, 3, 1)
If hundreds <>"0" Then
If (tens ="1") And (isLast = False) Then
Triad = arr1(hundreds) &"ста"
Else
Triad = arr1(hundreds) &"сот"
End If
End If
If tens ="1" Then
Triad = Triad &"" & arr2(Val(ones) + 1)
Else
If tens <>"0" Then Triad = Triad &"" & arr2(Val(tens))
If ones <>"0" Then
If (tens ="0") And (isLast = True) And (hundreds ="0") Then
Triad = Triad &"" & arr3(Val(ones))
Else
Triad = Triad &"" & arr1(Val(ones))
End If
End If
End If
Triad = Application.WorksheetFunction.Trim(Triad)
End Function
Function ChooseCase(n As String, s As String) As String
Dim arr As String
arr = Split(s,"/")
n = Val(n)
If n = 0 Then Exit Function
Select Case Right(n, 1)
Case 1: ChooseCase = arr(0)
Case 2, 3, 4: ChooseCase = arr(1)
Case Else: ChooseCase = arr(2)
End Select
End Function
Function GetRub(n As Double, valutaParts As String) As String
n = Int(n)
Select Case Right(n, 1)
Case 1: GetRub = valutaParts(0)
Case 2, 3, 4: GetRub = valutaParts(1)
Case Else: GetRub = valutaParts(2)
End Select
End Function
После установки используйте функцию в ячейке как обычно:
=SumProp(A1)
или с указанием валюты:
=SumProp(A1;"доллар/доллара/долларов")
3. Способ: Надстройки для Excel (готовые решения)
Если программирование на VBA кажется сложным, а стандартные функции слишком ограничены, на помощь приходят бесплатные и платные надстройки. Они устанавливаются за несколько кликов и добавляют в Excel новые функции для работы с текстом.
Топ-3 надстройки для преобразования чисел в текст:
| Название | Тип | Особенности | Ссылка |
|---|---|---|---|
| NumWord | Бесплатная | Поддерживает 15 валют, склонение по падежам, работу с копейками | numword.ru |
| ЧислоПрописью | Условно-бесплатная | Интеграция с 1С, экспорт в Word, обработка отрицательных чисел | chislopropisyu.ru |
| Excel Number to Words | Платная | Мног языковая поддержка, кастомизация формата вывода | ablebits.com |
Как установить надстройку NumWord (на примере):
- Скачайте файл
NumWord.xlamс официального сайта. - В Excel перейдите в
Файл → Параметры → Надстройки. - Нажмите
Перейтивнизу окна, затемОбзори выберите скачанный файл. - Активируйте надстройку и сохраните изменения.
После установки в Excel появится новая функция:
=NUMWORD(A1;"RUR")
где "RUR" — код валюты (доступны также USD, EUR и др.).
Как удалить надстройку, если она перестала работать?
Чтобы удалить надстройку, перейдите в Файл → Параметры → Надстройки → Управление: Надстройки Excel → Перейти. Снимите галочку с ненужной надстройки и нажмите ОК. Если надстройка повреждена, найдите её файл (обычно в C:\Users\ИмяПользователя\AppData\Roaming\Microsoft\AddIns) и удалите вручную.
4. Способ: Онлайн-конвертеры (для одноразовых задач)
Если вам нужно прописать сумму прописью один раз и устанавливать надстройки нет желания, можно воспользоваться онлайн-сервисами. Они преобразуют числа в текст прямо в браузере, а результат можно скопировать в Excel.
Популярные сервисы:
- 🌐 NumWord Online — поддерживает 20 валют, экспорт в Excel.
- 🌐 ЧислоПрописью Онлайн — русскоязычный интерфейс, склонение по падежам.
- 🌐 Calculat.org — простой конвертер с поддержкой дробных чисел.
Как перенести результат в Excel:
- Введите число на сайте и получите текстовый эквивалент.
- Скопируйте результат (
Ctrl+C). - В Excel выделите ячейку и вставьте значения (
Ctrl+V). - Если нужно сохранить форматирование, используйте
Специальная вставка → Текст.
⚠️ Внимание: Онлайн-сервисы не подходят для работы с конфиденциальными данными (номерами счетов, суммами по договорам). Для таких случаев используйте офлайн-методы (VBA или надстройки).
5. Способ: Формулы для рублей и копеек (раздельный вывод)
Часто требуется вывести сумму прописью в формате"123 рубля 45 копеек". Для этого можно разбить задачу на две части: обработку целой части (рубли) и дробной (копейки).
Пример формулы для рублей (ячейка A1 содержит число 123,45):
=ЕСЛИ(ЦЕЛОЕ(A1)=0;"ноль";
ЕСЛИ(ЦЕЛОЕ(A1)=1;"один рубль";
ЕСЛИ(ЦЕЛОЕ(A1)>1;ЕСЛИ(ЦЕЛОЕ(A1)<5;"рубля";"рублей");""))) &"" &
ТЕКСТ(ЦЕЛОЕ(A1);"[$-419]0")
Для копеек (дробная часть):
=ЕСЛИ(ОСТАТ(A1*100;100)=0;"00 копеек";
ТЕКСТ(ОСТАТ(A1*100;100);"00") &" копеек")
Объедините результаты в одной ячейке:
=SumProp(ЦЕЛОЕ(A1)) &"" & ТЕКСТ(ОСТАТ(A1*100;100);"00") &" копеек"
Сверьте целую часть (рубли) с исходным числом|Проверьте склонение валюты ("рубль"/"рубля"/"рублей")|Убедитесь, что копейки округлены до двух знаков|Проверьте обработку нулевых значений (например,"ноль рублей 00 копеек")|Тестируйте на отрицательных числах, если они возможны-->
6. Распространённые ошибки и как их избежать
При преобразовании чисел в текст пользователи часто сталкиваются с типичными проблемами. Вот самые частые из них и способы их решения:
| Ошибка | Причина | Решение |
|---|---|---|
| Неправильное склонение валют ("1 рубль" →"1 рублей") | Ошибка в логике функции ChooseCase или формуле |
Используйте проверенные шаблоны или надстройки с поддержкой склонения |
| Округление копеек (например, 99,995 →"100 копеек") | Excel округляет дробную часть при форматировании | Применяйте =ОКРУГЛ(A1*100;0) перед преобразованием |
| Ошибка"#ИМЯ?" при использовании VBA-функции | Макрос не сохранён или книга открыта без поддержки макросов | Сохраните файл как .xlsm и включите макросы при открытии |
| Медленная работа при больших объёмах данных | Слишком много вложенных функций или неоптимизированный код VBA | Используйте надстройки или оптимизируйте код (например, заранее рассчитайте разряды) |
Дополнительные рекомендации:
- 🔹 Тестируйте формулы на краевых значениях: 0, 1, 2, 5, 11, 21, 99, 100, 101, 999, 1000, 1000000.
- 🔹 Для отрицательных чисел добавьте проверку
=ЕСЛИ(A1<0;"минус" & SumProp(ABS(A1)); SumProp(A1)). - 🔹 Если используете VBA, всегда сохраняйте резервную копию книги перед внесением изменений в код.
7. Автоматизация для бухгалтерских документов
В бухгалтерии суммы прописью требуются в счетах, актах, платежных поручениях. Чтобы ускорить работу, можно создать шаблон Excel с автоматическим заполнением полей.
Пример структуры шаблона:
- 📌 Ячейка A1: Сумма числом (например,
1234,56). - 📌 Ячейка B1: Формула
=SumProp(A1)(вывод прописью). - 📌 Ячейка C1: Формула для копеек
=ТЕКСТ(ОСТАТ(A1*100;100);"00") &" копеек". - 📌 Ячейка D1: Объединённый результат
=B1 &"," & C1.
Чтобы шаблон был универсальным:
- Создайте
Выпадающий список(проверка данных) для выбора валюты. - Добавьте флажок для включения/отключения слова"только" (например,"Сто двадцать рублей 00 копеек только").
- Защитите ячейки с формулами от изменений (
Рецензирование → Защитить лист).
FAQ: Частые вопросы по суммам прописью в Excel
Можно ли прописать сумму прописью в Excel Online?
В веб-версии Excel (Excel Online) нет поддержки VBA, поэтому доступны только стандартные функции или надстройки (если они поддерживаются браузером). Альтернатива — использовать десктопную версию Excel или онлайн-конвертеры.
Как прописать сумму с учетом падежей (например,"оплатить пятьсот пятьдесят пять рублей")?
Для склонения по падежам потребуется модифицировать VBA-функцию или использовать специализированные надстройки (например, ЧислоПрописью). В стандартных формулах реализовать корректное склонение крайне сложно.
Почему функция SumProp выдаёт ошибку при открытии файла на другом компьютере?
Ошибка возникает, если на втором компьютере не установлена надстройка или отключены макросы. Решения:
- Сохраните файл как
.xlsx(без макросов) и используйте стандартные функции. - Установите надстройку на втором компьютере.
- Экспортируйте данные в
PDFс уже прописанными суммами.
Как прописать сумму в иностранной валюте (доллары, евро)?
В VBA-функции SumProp замените параметр валюты:
=SumProp(A1;"доллар/доллара/долларов")
Для евро:
=SumProp(A1;"евро/евро/евро")
В надстройке NumWord используйте коды валют: =NUMWORD(A1;"USD").
Можно ли автоматически прописать сумму в Word из Excel?
Да, для этого подходит два метода:
- Связывание данных: Вставьте в Word объект Excel (
Вставка → Объект → Лист Microsoft Excel) и используйте формулу прописью. - VBA-скрипт: Напишите макрос, который экспортирует данные из Excel в Word с преобразованием чисел в текст.