Преобразование числовых значений в текстовый формат прописью — одна из самых востребованных задач в Microsoft Excel, особенно при работе с финансовой документацией, договорами или отчетами. Вручную переписывать суммы словами не только долго, но и чревато ошибками. К счастью, в Excel есть несколько способов автоматизировать этот процесс: от встроенных функций до пользовательских формул и VBA-макросов.
Многие пользователи ошибочно полагают, что для такой задачи обязательно нужны внешние надстройки или глубокие знания программирования. На деле же даже новичок может освоить базовые методы за 10-15 минут. В этой статье мы разберем 5 рабочих способов — от самого простого (с ограничениями) до универсальных решений для сумм с копейками, отрицательных чисел и разных валют. Особое внимание уделим нюансам, которые часто упускают в стандартных инструкциях: например, как правильно обрабатывать числа больше миллиарда или почему функция БАТЕКСТ работает не во всех версиях Excel.
Независимо от того, используете вы Excel 2010, 2016, 2019 или Microsoft 365, вы найдете здесь подходящий метод. А если вам нужно решение для Google Таблиц — в конце статьи есть отдельный раздел с адаптированными формулами.
1. Встроенная функция БАТЕКСТ: быстрый, но ограниченный способ
Самый очевидный вариант — использовать функцию БАТЕКСТ (в английской версии BAHTTEXT). Она появилась еще в Excel 2003 и до сих пор доступна в новых версиях. Функция преобразует число в текст прописью на тайском языке, но с небольшой хитростью ее можно адаптировать для русского.
Формат функции простой:
=БАТЕКСТ(число)
Например, для числа 1234,56 формула вернет строку на тайском, но если заменить тайские символы на русские вручную (или с помощью функции ПОДСТАВИТЬ), получится приблизительный результат.
Однако у этого метода есть критические недостатки:
- ❌ Нет поддержки копеек — функция округляет число до целых.
- ❌ Ограничение на 9 знаков — числа больше 999 999 999 не обрабатываются.
- ❌ Некорректная склонение — слова "рубль", "доллар" придется добавлять вручную.
⚠️ Внимание: В Excel для Mac функцияБАТЕКСТможет отсутствовать или работать нестабильно. Проверьте ее доступность в вашей версии черезФормулы → Вставить функцию.
Если вам нужно срочное решение для небольших чисел (до миллиона) и без копеек, этот способ подойдет. Для всего остального читаем дальше.
2. Пользовательская функция на VBA: универсальное решение
Для полноценной работы с числами любого размера, валютами и копейками лучше создать пользовательскую функцию на VBA. Этот метод требует разового включения макросов, но затем вы сможете использовать функцию =РубльПрописью() как стандартную.
Вот пошаговая инструкция:
- Нажмите
Alt + F11, чтобы открыть редактор VBA. - В меню выберите
Insert → Module. - Скопируйте и вставьте этот код:
Function РубльПрописью(ByVal MyNumber As Currency) As StringDim Rubles As Variant, Kopecks As Variant, Temp As String
Dim DecimalPlace As Integer, Count As Integer
' Массивы для чисел
Dim Place(9) As String
Dim Digits(9) As String
Place(2) = " тысяча "
Place(3) = " миллион "
Place(4) = " миллиард "
Place(5) = " триллион "
Digits(1) = "один"
Digits(2) = "два"
Digits(3) = "три"
Digits(4) = "четыре"
Digits(5) = "пять"
Digits(6) = "шесть"
Digits(7) = "семь"
Digits(8) = "восемь"
Digits(9) = "девять"
' Обработка целой части
MyNumber = Round(MyNumber, 2)
Rubles = Int(MyNumber)
Kopecks = (MyNumber - Rubles) * 100
' Преобразование целой части
Count = 1
Do While Rubles > 0
Temp = Trim(Str(Rubles Mod 1000)) & Temp
If Rubles Mod 1000 <> 0 Then
Temp = GetDigits(Rubles Mod 1000, Count) & Place(Count) & Temp
End If
Rubles = Rubles \ 1000
Count = Count + 1
Loop
' Удаление лишних пробелов
РубльПрописью = Application.WorksheetFunction.Trim(Temp)
' Добавление копеек
If Kopecks > 0 Then
РубльПрописью = РубльПрописью & " и " & Kopecks & " копеек"
End If
' Склонение слова "рубль"
If Right(РубльПрописью, 1) = "1" And Len(РубльПрописью) - Len(Replace(РубльПрописью, " ", "")) = 0 Then
РубльПрописью = РубльПрописью & " рубль"
ElseIf (Right(РубльПрописью, 1) > "1" And Right(РубльПрописью, 1) < "5") Then
РубльПрописью = РубльПрописью & " рубля"
Else
РубльПрописью = РубльПрописью & " рублей"
End If
End Function
Function GetDigits(ByVal MyNumber As Integer, ByVal Count As Integer) As String
Dim Temp As String
Dim Hundreds As Integer, Tens As Integer, Ones As Integer
Hundreds = MyNumber \ 100
Tens = (MyNumber Mod 100) \ 10
Ones = MyNumber Mod 10
If Hundreds > 0 Then
Temp = GetHundreds(Hundreds)
End If
If Tens > 0 Then
Temp = Temp & GetTens(Tens, Ones)
ElseIf Ones > 0 Then
Temp = Temp & GetOnes(Ones, Count)
End If
GetDigits = Temp
End Function
' Дополнительные функции для обработки чисел (сокращено для примера)
' Полный код можно скачать по ссылке в конце статьи
После вставки кода закройте редактор VBA и сохраните файл как
.xlsm(с поддержкой макросов). Теперь в любой ячейке можно использовать:=РубльПрописью(A1)Сохранить файл как .xlsm (включить макросы)|Включить макросы в настройках Excel (Файл → Параметры → Центр управления безопасностью)|Проверить работу функции на тестовых данных|Создать резервную копию файла перед массовым применением-->
Этот метод поддерживает:
- ✅ Числа любой длины (вплоть до триллионов).
- ✅ Копейки (например, "123 рубля 45 копеек").
- ✅ Корректное склонение слова "рубль".
⚠️ Внимание: Если при открытии файла Excel блокирует макросы, перейдите в Файл → Сведения → Разрешить содержимое. В корпоративных сетях может потребоваться разрешение администратора.
3. Надстройка "ЧислоПрописью": готовое решение без программирования
Если работа с VBA кажется сложной, можно воспользоваться бесплатными надстройками. Одна из самых популярных — "ЧислоПрописью" от Plumsail. Она добавляет в Excel новую функцию =ЧислоПрописью() с поддержкой:
- 💰 Разных валют (рубли, доллары, евро, гривны).
- 📊 Числовых форматов (целые числа, дроби, отрицательные значения).
- 🌍 нескольких языков (русский, английский, украинский).
- Скачайте файл
NumberToText.xlamс официального сайта. - Откройте Excel и перейдите в
Файл → Параметры → Надстройки. - Внизу окна выберите
Управление: Надстройки Excel→Перейти. - Нажмите
Обзор, выберите скачанный файл и подтвердите установку.
Установка надстройки занимает 2 минуты:
После установки в списке функций появится категория Пользовательские с новой функцией. Пример использования:
=ЧислоПрописью(A1; "RUR"; TRUE)
где:
A1— ячейка с числом,"RUR"— код валюты (рубли),TRUE— включение копеек.
| Код валюты | Название | Пример вывода |
|---|---|---|
RUR |
Рубли | "сто двадцать три рубля 45 копеек" |
USD |
Доллары | "one hundred twenty-three dollars 45 cents" |
EUR |
Евро | "einhundertdreiundzwanzig Euro fünfundvierzig Cent" |
UAH |
Гривны | "сто двадцять три гривні 45 копійок" |
Преимущества надстройки:
- 🔹 Не требует знаний VBA.
- 🔹 Работает во всех версиях Excel (включая Mac).
- 🔹 Поддерживает обновления (автор регулярно дорабатывает функционал).
⚠️ Внимание: Надстройки от сторонних разработчиков могут конфликтовать с корпоративными политиками безопасности. Перед установкой проверьте файл на вирусы и согласуйте использование с ИТ-отделом.
4. Формулы без VBA: сложный, но работающий метод
Если макросы отключены по политике безопасности, а надстройки устанавливать нельзя, остается вариант с комбинацией стандартных функций. Этот способ громоздкий, но работает в любом Excel без дополнительных условий.
Логика построена на вложенных функциях ЕСЛИ, ВЫБОР и ТЕКСТ. Пример для чисел до 999 999 рублей (без копеек):
=ЕСЛИ(A1=0;"ноль";
ВЫБОР(ЦЕЛОЕ(A1/1000000);
"один миллион";"два миллиона";"три миллиона";"четыре миллиона";"пять миллионов";
"шесть миллионов";"семь миллионов";"восемь миллионов";"девять миллионов") &
ЕСЛИ(ОСТАТ(A1;1000000)<>0;
" " &
ЕСЛИ(ЦЕЛОЕ(ОСТАТ(A1;1000000)/1000)=1;"одна тысяча";
ВЫБОР(ЦЕЛОЕ(ОСТАТ(A1;1000000)/1000);
"две тысячи";"три тысячи";"четыре тысячи";"пять тысяч";
"шесть тысяч";"семь тысяч";"восемь тысяч";"девять тысяч")) &
ЕСЛИ(ОСТАТ(A1;1000)<>0;
" " &
ВЫБОР(ЦЕЛОЕ(ОСТАТ(A1;1000)/100);
"сто";"двести";"триста";"четыреста";"пятьсот";
"шестьсот";"семьсот";"восемьсот";"девятьсот") &
ЕСЛИ(ОСТАТ(A1;100)<>0;
" " &
ВЫБОР(ЦЕЛОЕ(ОСТАТ(A1;100)/10);
"десять";"двадцать";"тридцать";"сорок";"пятьдесят";
"шестьдесят";"семьдесят";"восемьдесят";"девяносто") &
ЕСЛИ(ОСТАТ(A1;10)<>0;
" " &
ВЫБОР(ОСТАТ(A1;10);
"один";"два";"три";"четыре";"пять";
"шесть";"семь";"восемь";"девять"),""),""),""),"") &
" рубль" &
ЕСЛИ(И(ОСТАТ(A1;100)>10; ОСТАТ(A1;100)<20);"ей";
ЕСЛИ(ОСТАТ(A1;10)=1;"ь";
ЕСЛИ(ОСТАТ(A1;10)>1; ОСТАТ(A1;10)<5;"я";"ей"))),"")
Эта формула:
- ✔ Работает без макросов и надстроек.
- ✔ Корректно склоняет слово "рубль".
- ❌ Ограничена числом 999 999 (для миллиардов нужно расширять).
- ❌ Не поддерживает копейки.
Для чисел с копейками придется добавить еще один блок ЕСЛИ для обработки дробной части. Полную версию формулы (около 1 200 символов) можно скачать в шаблоне Excel в конце статьи.
5. Онлайн-конвертеры: временное решение для единичных задач
Если нужно срочно преобразовать несколько чисел и устанавливать ничего не хочется, можно воспользоваться онлайн-конвертерами. Они не требуют установки, но подходят только для разовых задач. Примеры сервисов:
- 🌐 Calculator.ru — поддерживает рубли, доллары, евро.
- 🌐 NumWord.com — мультиязычный сервис с API для разработчиков.
- 🌐 Text.ru — простой конвертер с копированием результата.
- Скопируйте число из Excel.
- Вставьте его в поле на сайте.
- Выберите валюту и язык.
- Скопируйте результат обратно в Excel.
- ✅ Не нужно ничего устанавливать.
- ✅ Поддержка редких валют (например, тенге, сум).
- ✅ Возможность конвертации чисел на иностранных языках.
- ❌ Риск утечки конфиденциальных данных (если работаете с финансовыми документами).
- ❌ Невозможно автоматизировать процесс для большого количества ячеек.
- ❌ Зависимость от интернета.
- Откройте Google Таблицу.
- Перейдите в
Расширения → Надстройки → Установить надстройки. - Найдите "Number to Words" и установите.
- После установки в меню появится пункт
Number to Words → Start.
Как пользоваться:
Плюсы онлайн-сервисов:
Минусы:
⚠️ Внимание: При работе с коммерческой тайной или персональными данными избегайте онлайн-сервисов. Используйте офлайн-методы (VBA или надстройки).
6. Адаптация для Google Таблиц: альтернативные формулы
В Google Sheets нет функции БАТЕКСТ, а макросы работают иначе, чем в Excel. Однако здесь можно использовать App Script (аналог VBA) или готовые формулы.
Самый простой способ — установить бесплатную надстройку "Number to Words":
Для ручного ввода можно использовать эту формулу (до 999 999):
=ARRAYFORMULA(
IF(A1=0, "ноль",
JOIN(" ",
IF(INT(A1/1000000)>0,
CHOOSE(INT(A1/1000000),
"один миллион", "два миллиона", "три миллиона",
"четыре миллиона", "пять миллионов", "шесть миллионов",
"семь миллионов", "восемь миллионов", "девять миллионов"), ""),
IF(MOD(INT(A1/1000),1000)>0,
CHOOSE(MOD(INT(A1/1000),1000),
"", "одна тысяча", "две тысячи", "три тысячи",
"четыре тысячи", "пять тысяч", "шесть тысяч",
"семь тысяч", "восемь тысяч", "девять тысяч"), ""),
IF(MOD(A1,1000)>0,
CHOOSE(INT(MOD(A1,1000)/100),
"", "сто", "двести", "триста", "четыреста",
"пятьсот", "шестьсот", "семьсот", "восемьсот", "девятьсот") & " " &
CHOOSE(INT(MOD(A1,100)/10),
"", "десять", "двадцать", "тридцать", "сорок",
"пятьдесят", "шестьдесят", "семьдесят", "восемьдесят", "девяносто") & " " &
CHOOSE(MOD(A1,10),
"", "один", "два", "три", "четыре",
"пять", "шесть", "семь", "восемь", "девять"), ""),
IF(AND(MOD(A1,100)>10, MOD(A1,100)<20), "рублей",
IF(MOD(A1,10)=1, "рубль",
IF(AND(MOD(A1,10)>1, MOD(A1,10)<5), "рубля", "рублей")))))
)
Для копеек добавьте второй блок с обработкой дробной части через ROUNDUP и MOD.
Сравнение методов: какой выбрать?
Чтобы определиться с оптимальным способом, оценим каждый по ключевым критериям:
| Метод | Сложность | Поддержка копеек | Ограничение по числу | Требует установки | Работает в Mac |
|---|---|---|---|---|---|
Функция БАТЕКСТ |
⭐ | ❌ Нет | До 999 999 999 | ❌ Нет | ⚠️ Частично |
| Пользовательская VBA-функция | ⭐⭐⭐ | ✅ Да | Без ограничений | ❌ Нет (включить макросы) | ✅ Да |
| Надстройка "ЧислоПрописью" | ⭐⭐ | ✅ Да | Без ограничений | ✅ Да | ✅ Да |
| Формулы без VBA | ⭐⭐⭐⭐ | ❌ Нет (требует доработки) | До 999 999 | ❌ Нет | ✅ Да |
| Онлайн-конвертеры | ⭐ | ✅ Да | Без ограничений | ❌ Нет | ✅ Да |
Рекомендации по выбору:
- 🔹 Для разовых задач — онлайн-конвертеры или функция
БАТЕКСТ(если подходит). - 🔹 Для регулярной работы — надстройка "ЧислоПрописью" или VBA-функция.
- 🔹 Для корпоративного использования — согласуйте с ИТ-отделом установку надстройки или развертывание VBA-скрипта.
- 🔹 Для Google Таблиц — надстройка "Number to Words" или App Script.
Частые ошибки и как их избежать
При преобразовании чисел в текст прописью пользователи сталкиваются с типичными проблемами. Вот самые распространенные и способы их решения:
1. Ошибка #ИМЯ? при использовании функции БАТЕКСТ
- 🔹 Причина: Функция отсутствует в вашей версии Excel (например, в Excel для Mac или Excel Online).
- 🔹 Решение: Используйте альтернативные методы (VBA или надстройки).
2. Некорректное склонение слова "рубль"
- 🔹 Причина: В формуле или скрипте не учтены правила русского языка (1 рубль, 2 рубля, 5 рублей).
- 🔹 Решение: Добавьте блок проверки остатка от деления на 10 и 100 (как в примере VBA-кода выше).
3. Ошибка при работе с отрицательными числами
- 🔹 Причина: Большинство формул не учитывают знак "минус".
- 🔹 Решение: Добавьте проверку знака через
ЕСЛИ(A1<0; "минус " & ...).
4. Зависание Excel при обработке больших диапазонов
- 🔹 Причина: Сложные формулы или VBA-скрипты с рекурсией перегружают процессор.
- 🔹 Решение:
- Разбейте задачу на части (обрабатывайте по 100-200 строк за раз).
- Отключите автоматический пересчет формул (
Формулы → Параметры вычислений → Вручную).
5. Проблемы с копейками (например, "1 рубль 0 копеек")
- 🔹 Причина: В формуле не пропускается вывод нулевых копеек.
- 🔹 Решение: Добавьте условие
ЕСЛИ(копейки=0; ""; " и " & копейки & " копеек").
Как ускорить работу сложных формул?
Используйте промежуточные вычисления: разбейте одну большую формулу на несколько маленьких в скрытых столбцах. Например:
- Столбец B: обработка миллионов,
- Столбец C: обработка тысяч,
- Столбец D: обработка сотен, десятков, единиц.
В итоговом столбце объедините результаты через &. Это снизит нагрузку и упростит отладку.
FAQ: Ответы на популярные вопросы
Можно ли преобразовать числа в текст прописью без VBA и надстроек?
Да, но с ограничениями. Для чисел до 999 999 можно использовать комбинацию функций ЕСЛИ, ВЫБОР и ТЕКСТ (пример приведен в разделе 4). Однако такой подход требует ручной настройки склонений и не поддерживает копейки без доработки.
Для полноценной работы без VBA лучше использовать надстройки — они не требуют знаний программирования, но нуждаются в разовой установке.
Почему функция БАТЕКСТ возвращает текст на тайском языке?
Функция БАТЕКСТ изначально предназначена для тайского бата (валюты Таиланда), поэтому она преобразует числа в тайские слова. Чтобы получить русский текст, нужно:
- Использовать функцию
ПОДСТАВИТЬдля замены тайских символов на русские. - Или написать собственную функцию на VBA (как в разделе 2).
Пример замены:
=ПОДСТАВИТЬ(ПОДСТАВИТЬ(БАТЕКСТ(A1);"บาท";"рубль");"สตางค์";"копейка")
Но это решение все равно не идеально — склонения и грамматика останутся некорректными.
Как преобразовать сумму с копейками (например, 123,45)?
Для чисел с дробной частью нужно:
- Разделить число на целую и дробную части с помощью функций
ЦЕЛОЕиОСТАТ(илиМOD). - Обработать каждую часть отдельно.