Преобразование цифр в текстовый формат с прописными буквами — одна из самых востребованных задач в Microsoft Excel, особенно при работе с финансовыми документами, договорами или отчётами. Вы когда-нибудь сталкивались с ситуацией, когда нужно было написать сумму прописью вместо сухих чисел? Например, вместо "1 254,78" получить "Одна тысяча двести пятьдесят четыре рубля 78 копеек"? Эта задача кажется простой, но стандартные функции Excel не содержат готового решения — придётся использовать обходные пути.
В этой статье мы разберём 5 проверенных методов, от простых формул до автоматизированных надстроек, которые работают во всех версиях Excel (2010–2023 и Office 365). Вы узнаете, как преобразовать числа в слова для рублей, долларов, евро, а также научитесь обрабатывать большие суммы с копейками/центами. Особое внимание уделим типичным ошибкам, которые портят результат, и покажем, как их избежать.
Если вам нужно срочно оформить счёт, квитанцию или договор — этот гайд сэкономит часы ручной работы. А для опытных пользователей мы подготовили продвинутые приёмы, включая создание пользовательской функции на VBA и интеграцию с внешними сервисами.
1. Встроенная функция Excel: почему её нет и что делать
Многие пользователи удивляются, узнав, что в Excel нет стандартной функции для преобразования чисел в прописной текст. В отличие от 1C или специализированных бухгалтерских программ, где эта опция есть "из коробки", Microsoft не включила её в базовый набор. Почему?
Причина кроется в многоязычности и локализации: правила написания чисел прописью сильно отличаются не только в разных странах, но и в разных валютах. Например, в русском языке мы пишем "двадцать пять", а в английском — "twenty-five", при этом форматы для рублей, долларов и евро тоже разные. Создать универсальную функцию, которая учтёт все нюансы, технически сложно.
Однако это не значит, что задача нерешаема. Вот 3 основных подхода, которые используют профессионалы:
- 🔹 Формулы с вложенными функциями — подходит для простых чисел (до миллионов) и не требует программирования.
- 🔹 Пользовательские функции на VBA — гибкое решение для любых сумм, но нужно разрешить макросы.
- 🔹 Внешние надстройки и сервисы — готовые решения от сторонних разработчиков (например, NumToText или Атлас-Прогноз).
Далее мы подробно разберём каждый метод, начиная с самого простого.
2. Метод 1: Формула для чисел до 999 (без копеек)
Если вам нужно преобразовать небольшие числа (до 999) без дробной части, можно обойтись чистыми формулами Excel без макросов. Этот способ подойдёт для учебных задач или простых документов, где не требуется обработка копеек или миллионов.
Идея метода: мы разбиваем число на сотни, десятки и единицы, а затем "склеиваем" их названия с помощью функции ВЫБОР(). Вот пошаговая инструкция:
- Создайте вспомогательную таблицу с названиями чисел (см. пример ниже).
- Используйте формулу для извлечения сотен, десятков и единиц с помощью
ЦЕЛОЕ()иОСТАТ(). - Объедините результаты функцией
СЦЕПИТЬ()илиТЕКСТСЦЕП().
Пример вспомогательной таблицы:
| Диапазон | Название |
|---|---|
| 1–9 | один, два, ..., девять |
| 10–19 | десять, одиннадцать, ..., девятнадцать |
| 20–90 (десятки) | двадцать, тридцать, ..., девяносто |
| 100–900 (сотни) | сто, двести, ..., девятьсот |
Готовая формула для ячейки A1 (число 123 → "сто двадцать три"):
=СЦЕПИТЬ(
ВЫБОР(ЦЕЛОЕ(A1/100); ""; "сто"; "двести"; "триста"; "четыреста"; "пятьсот"; "шестьсот"; "семьсот"; "восемьсот"; "девятьсот");
ЕСЛИ(И(ОСТАТ(A1;100)>=20; ОСТАТ(A1;100)<=99);
ВЫБОР(ЦЕЛОЕ(ОСТАТ(A1;100)/10); ""; "двадцать"; "тридцать"; "сорок"; "пятьдесят"; "шестьдесят"; "семьдесят"; "восемьдесят"; "девяносто");
""
);
ЕСЛИ(ОСТАТ(A1;100)<20;
ВЫБОР(ОСТАТ(A1;100); ""; "один"; "два"; ...; "девятнадцать");
ВЫБОР(ОСТАТ(A1;10); ""; "один"; "два"; ...; "девять")
)
)
☑️ Подготовка к использованию формулы
⚠️ Внимание: Эта формула работает только для целых чисел от 1 до 999. Для обработки тысяч, миллионов или копеек потребуется доработать логику или использовать другие методы.
3. Метод 2: Пользовательская функция на VBA (для любых сумм)
Если вам нужно преобразовывать большие числа с копейками (например, "1 254 389,56 рублей 56 копеек"), лучший способ — создать пользовательскую функцию на VBA. Этот метод требует разового настройки, но затем работает мгновенно для любых сумм.
Вот пошаговая инструкция:
- Нажмите
Alt + F11, чтобы открыть редактор VBA. - В меню выберите
Insert → Module. - Вставьте код функции (см. ниже).
- Закройте редактор и вернитесь в Excel.
- Используйте функцию как обычную:
=РублиПрописью(A1).
Код функции для рублей и копеек:
Function РублиПрописью(Сумма As Currency) As String
Dim Rub As String, Kop As String, Temp As String
Dim Рубли As Variant, Копейки As Variant
' Массивы для чисел
Рубли = Array("", "один", "два", "три", "четыре", "пять", "шесть", "семь", "восемь", "девять", _
"десять", "одиннадцать", "двенадцать", "тринадцать", "четырнадцать", "пятнадцать", _
"шестнадцать", "семнадцать", "восемнадцать", "девятнадцать")
Копейки = Array("", "одна", "две", "три", "четыре", "пять", "шесть", "семь", "восемь", "девять", _
"десять", "одиннадцать", "двенадцать", "тринадцать", "четырнадцать", "пятнадцать", _
"шестнадцать", "семнадцать", "восемнадцать", "девятнадцать")
' Обработка рублей
Temp = ПрописьюРубли(Int(Сумма))
If Right(Temp, 1) = "ь" Then Temp = Left(Temp, Len(Temp) - 1)
Rub = Temp & " " & ВыборПадежа(Int(Сумма), "рубль", "рубля", "рублей")
' Обработка копеек
Kop = ПрописьюРубли((Сумма - Int(Сумма)) * 100)
If Right(Kop, 1) = "ь" Then Kop = Left(Kop, Len(Kop) - 1)
Kop = Kop & " " & ВыборПадежа(CLng((Сумма - Int(Сумма)) * 100), "копейка", "копейки", "копеек")
' Объединение результата
РублиПрописью = Rub & " " & Kop
End Function
Function ПрописьюРубли(Число As Long) As String
Dim Единицы As Variant, Десятки As Variant, Сотни As Variant
Dim Result As String, Temp As String
Единицы = Array("", "один", "два", "три", "четыре", "пять", "шесть", "семь", "восемь", "девять")
Десятки = Array("", "десять", "двадцать", "тридцать", "сорок", "пятьдесят", _
"шестьдесят", "семьдесят", "восемьдесят", "девяносто")
Сотни = Array("", "сто", "двести", "триста", "четыреста", "пятьсот", _
"шестьсот", "семьсот", "восемьсот", "девятьсот")
If Число = 0 Then
ПрописьюРубли = "ноль"
Exit Function
End If
' Обработка миллиардов
If Число >= 1000000000 Then
Temp = ПрописьюРубли(Число \ 1000000000)
Result = Result & Temp & " " & ВыборПадежа(Число \ 1000000000, "миллиард", "миллиарда", "миллиардов")
Число = Число Mod 1000000000
End If
' Обработка миллионов
If Число >= 1000000 Then
Temp = ПрописьюРубли(Число \ 1000000)
If Temp <> "" Then Result = Result & " " & Temp
Result = Result & " " & ВыборПадежа(Число \ 1000000, "миллион", "миллиона", "миллионов")
Число = Число Mod 1000000
End If
' Обработка тысяч
If Число >= 1000 Then
Temp = ПрописьюРубли(Число \ 1000)
If Temp <> "" Then Result = Result & " " & Temp
Result = Result & " " & ВыборПадежа(Число \ 1000, "тысяча", "тысячи", "тысяч")
Число = Число Mod 1000
End If
' Обработка сотен
If Число >= 100 Then
Result = Result & " " & Сотни(Число \ 100)
Число = Число Mod 100
End If
' Обработка десятков и единиц
If Число >= 20 Then
Result = Result & " " & Десятки(Число \ 10)
Число = Число Mod 10
End If
If Число >= 10 Then
Result = Result & " " & Единицы(Число)
ElseIf Число > 0 Then
Result = Result & " " & Единицы(Число)
End If
ПрописьюРубли = Application.WorksheetFunction.Trim(Result)
End Function
Function ВыборПадежа(Число As Long, Форма1 As String, Форма2 As String, Форма5 As String) As String
Dim Mod100 As Long
Mod100 = Число Mod 100
Select Case Mod100
Case 11 To 19: ВыборПадежа = Форма5
Case Else
Select Case Число Mod 10
Case 1: ВыборПадежа = Форма1
Case 2 To 4: ВыборПадежа = Форма2
Case Else: ВыборПадежа = Форма5
End Select
End Select
End Function
После вставки кода сохраните файл как Macro-Enabled Workbook (.xlsm). Теперь вы можете использовать функцию 1. Включены ли макросы ( 2. Правильно ли скопирован код (особенно русские названия функций). 3. Сохранён ли файл в формате .xlsm, а не .xlsx=РублиПрописью(A1) для любого числа. Например, для ячейки с значением 1254,78 результат будет:
"одна тысяча двести пятьдесят четыре рубля семьдесят восемь копеек".
Файл → Параметры → Центр управления безопасностью → Параметры центра → Включить все макросы).
4. Метод 3: Надстройка "NumToText" (для непрограммистов)
Если работа с Как установить и использовать NumToText:
Преимущества этого метода:
Недостатки:
Альтернативные надстройки:
Перейдите в Если вам нужно преобразовать числа в буквы один раз (например, для одного договора), проще воспользоваться онлайн-сервисами. Они не требуют установки и работают прямо в браузере.
Топ-3 проверенных сервиса:
Как пользоваться:
Если вам нужно преобразовать числа в английские слова (например, "one thousand two hundred fifty-four"), можно использовать комбинацию функций Пример формулы для чисел до 999:
IF(A1<20, CHOOSE(A1, "one", "two", ..., "nineteen"), IF(A1<100, CHOOSE(FLOOR(A1/10,1), "twenty", "thirty", ..., "ninety") & " " & CHOOSE(MOD(A1,10), "", "one", "two", ..., "nine"), CHOOSE(FLOOR(A1/100,1), "one hundred", "two hundred", ..., "nine hundred") & " " & [формула для десятков и единиц] ) ) )VBA кажется сложной, можно воспользоваться готовыми надстройками. Одна из самых популярных — NumToText от Microsoft, которая устанавливается за несколько кликов и поддерживает несколько языков, включая русский.
Вставка → Надстройки → Мои надстройки.NumToText.
Как удалить надстройку, если она не нужна?
Файл → Параметры → Надстройки. Внизу окна в выпадающем списке выберите "Надстройки COM" и нажмите "Перейти". Снимите галочку с ненужной надстройки и подтвердите удаление.5. Метод 4: Онлайн-конвертеры (для разовых задач)
Сервис Ссылка Особенности Числа прописью от Calc.ru calc.ru Поддерживает рубли, доллары, евро. Есть API для автоматизации. NumWord numword.com Многовалютый, есть история преобразований. Textify textify.it Позволяет скачать результат в Word или PDF.
⚠️ Внимание: Онлайн-сервисы не подходят для конфиденциальных данных (номера договоров, суммы по счетам клиентов). В этом случае используйте
VBA или надстройки.6. Метод 5: Формулы для английских чисел (для международных документов)
CHOOSER() (в английской версии Excel) или создать пользовательскую функцию на VBA.
=IF(A1=0, "zero",
Для полноценной поддержки миллионов и миллиардов проще использовать надстройку SpellNumber (входит в стандартный пакет Excel для английской локализации). Чтобы её активировать:
Даже опытные пользователи Excel сталкиваются с проблемами при преобразовании чисел в буквы. Вот 5 самых распространённых ошибок и способы их решения:
Да, но только для чисел до 999 и без копеек (см. Метод 1 в статье). Для больших сумм или дробных чисел без VBA или надстроек не обойтись. Excel Online не поддерживает пользовательские функции на VBA. Используйте настольную версию Excel или надстройки из Microsoft AppSource. Для этого нужно:
Готовая формула:
Файл → Параметры → Надстройки.SpellNumber и нажмите OK.=SpellNumber(A1).7. Типичные ошибки и как их избежать
Причина: Макросы отключены или файл сохранён в формате .xlsx вместо .xlsm.
Решение: Включите макросы в настройках безопасности Excel.
Причина: Ошибка в логике функции ВыборПадежа в коде VBA.
Решение: Проверьте условия для чисел 11–19 (они всегда используют форму "рублей").
Причина: Формула или функция работает только с целой частью числа.
Решение: Добавьте обработку дробной части (см. пример кода в Методе 2).
Причина: Многие зарубежные конвертеры работают только с долларами.
Решение: Используйте русскоязычные сервисы (например, Calc.ru).
Причина: В формуле жёстко прописаны диапазоны (например, только до 999).
Решение: Доработайте формулу или используйте VBA.FAQ: Ответы на частые вопросы
Можно ли преобразовать числа в буквы без VBA и надстроек?
Почему моя пользовательская функция не работает в Excel Online?
Как преобразовать сумму с НДС прописью (например, "в том числе НДС 20% — двести рублей")?
=A1*0.2).=РублиПрописью(B1)).="в том числе НДС 20% — " & РублиПрописью(A1*0,2).
Можно ли автоматически обновлять прописные суммы при изменении чисел?
Да. Если вы используете формулы или пользовательские функции VBA, они будут пересчитываться автоматически при изменении исходных данных. Для надстроек проверьте настройки обновления (обычно это включается по умолчанию).
Как преобразовать числа в буквы на украинском/белорусском/казахском?
Для других языков нужно:
- Найти или адаптировать код VBA (правила склонения отличаются).
- Использовать специализированные надстройки (например, Українські гроші прописью для украинского).
- Воспользоваться онлайн-сервисами с поддержкой нужного языка (например, sum.in.ua для украинского).