Преобразование чисел в текстовый формат — одна из самых востребованных задач при работе с финансовыми документами, счетами и отчётами в Microsoft Excel. Например, когда нужно прописать сумму прописью в договоре или платежном поручении: "Сто двадцать три тысячи четыреста пятьдесят шесть рублей 78 копеек". Вручную переписывать каждое число неэффективно, особенно при работе с большими массивами данных. К счастью, в Excel есть несколько способов автоматизировать этот процесс — от встроенных функций до пользовательских скриптов.
Многие пользователи ошибочно считают, что для этой задачи обязательно нужны надстройки или знание программирования. На самом деле, даже начинающий может справиться с задачей, используя стандартные инструменты программы. В этой статье мы разберём 5 рабочих методов: от простейшего применения функции ЧИСЛТЕКСТ до создания собственных формул на VBA. Особое внимание уделим нюансам работы с валютами, дробными числами и локализацией (русский, украинский, казахский языки).
Если вам нужно не просто преобразовать число в текст, а ещё и учесть падежи (например, "одна тысяча рублей" vs "одной тысячей рублей"), или автоматически добавлять валюту — в статье найдутся решения и для этих задач. Также мы рассмотрим типичные ошибки, из-за которых Excel выдаёт некорректный результат (например, #ИМЯ? вместо текста), и как их избежать.
Прежде чем переходить к инструкциям, ответьте на вопрос: какой метод вам ближе?
1. Функция ЧИСЛТЕКСТ — базовый метод для русского языка
Самый простой способ преобразовать число в текст — использовать встроенную функцию =ЧИСЛТЕКСТ(). Она доступна в Excel 2013 и новее, а также в Excel Online. Функция поддерживает русский, английский и другие языки, но имеет ограничения: не работает с дробными числами (копейками) и не добавляет валюту автоматически.
Синтаксис функции:
=ЧИСЛТЕКСТ(число; [формат])
где:
- 📌
число— ячейка с числом или само число (например,1234,56). - 📌
[формат]— необязательный аргумент для указания языка. Для русского языка используйте1(по умолчанию) или"Р".
Примеры использования:
=ЧИСЛТЕКСТ(A1) // "Одна тысяча двести тридцать четыре"
=ЧИСЛТЕКСТ(1234,56; "Р") // "Одна тысяча двести тридцать четыре целых пятьдесят шесть сотых"
Обратите внимание: функция не округляет дробные числа, а выводит их полностью ("пятьдесят шесть сотых" вместо "56 копеек"). Чтобы получить корректное отображение валют, придётся комбинировать ЧИСЛТЕКСТ с другими функциями (об этом — в следующем разделе).
2. Преобразование чисел с учётом валют (рубли/копейки)
Чтобы вывести сумму прописью с указанием валюты (например, "1234 рубля 56 копеек"), одной функции ЧИСЛТЕКСТ недостаточно. Нужно разделить число на целую и дробную части, а затем объединить результаты с текстом валюты. Для этого используем комбинацию функций:
=ЧИСЛТЕКСТ(ЦЕЛОЕ(A1);"Р") & " рубль " & ЧИСЛТЕКСТ((A1-ЦЕЛОЕ(A1))*100;"Р") & " копеек"
Однако этот метод имеет критическую ошибку: он не учитывает склонение слов ("рубль", "рубля", "рублей"). Чтобы исправить это, нужно добавить проверку остатка от деления. Полная формула:
=ЧИСЛТЕКСТ(ЦЕЛОЕ(A1);"Р") & " " &
ЕСЛИ(
МОД(ЦЕЛОЕ(A1);100)>10;
ЕСЛИ(МОД(ЦЕЛОЕ(A1);100)>20; "рублей"; "рублей");
ЕСЛИ(МОД(ЦЕЛОЕ(A1);10)=1; "рубль";
ЕСЛИ(МОД(ЦЕЛОЕ(A1);10)<5; "рубля"; "рублей")
)
) & " " &
ЧИСЛТЕКСТ(ОКРУГЛ((A1-ЦЕЛОЕ(A1))*100;0);"Р") & " копеек"
Эта формула корректно обрабатывает склонения для любых чисел:
- 💰 1 рубль 50 копеек
- 💰 2 рубля 50 копеек
- 💰 5 рублей 50 копеек
- 💰 21 рубль 50 копеек
Для других валют (доллары, евро, тенге) замените слова "рубль"/"копеек" на нужные и скорректируйте склонения.
Если вам не нужно выводить копейки (например, для целых сумм), используйте укороченный вариант:
Это округлит число до целого и добавит сокращение "руб."Как упростить формулу для копеек?
=ЧИСЛТЕКСТ(ОКРУГЛ(A1;0);"Р") & " руб."
3. Надстройки для Excel: "ЧислоПрописью" и аналоги
Если встроенные функции кажутся слишком громоздкими, можно установить бесплатные надстройки, которые добавляют удобные инструменты для преобразования чисел в текст. Самые популярные:
- 🔹 ЧислоПрописью — поддерживает рубли, доллары, евро, гривны, тенге, а также падежи (именительный, родительный, творительный).
- 🔹 NumToText — надстройка с открытым исходным кодом, работает с 15+ валютами.
- 🔹 RubCop — специализирована на российских рублях и копейках, учитывает все правила склонения.
Установка надстройки ЧислоПрописью:
- Скачайте файл
.xlamс официального сайта (например, excel-vba.ru). - Откройте Excel, перейдите в
Файл → Параметры → Надстройки. - Внизу окна выберите
Перейти...→Обзори укажите путь к скачанному файлу. - Поставьте галочку напротив надстройки и нажмите
ОК.
После установки в Excel появится новая функция =ЧислоПрописью(). Пример использования:
=ЧислоПрописью(A1; 1; "рубль;рубля;рублей;копейка;копейки;копеек")
где:
- 📌
A1— ячейка с числом. - 📌
1— режим вывода (1 — рубли, 2 — доллары, 3 — евро и т.д.). - 📌 Текст в кавычках — шаблон склонения для валют.
Преимущества надстроек:
- ✅ Поддержка всех падежей и валют.
- ✅ Возможность настройки формата вывода (например, с заглавной буквы).
- ✅ Работа с отрицательными числами ("Минус одна тысяча рублей").
Недостатки:
- ❌ Требуется установка на каждый компьютер.
- ❌ Может конфликтовать с другими надстройками.
Убедитесь, что Excel разблокировал макросы|Скачайте надстройку с официального источника|Проверьте совместимость с вашей версией Excel (32-bit или 64-bit)|Создайте резервную копию важных файлов-->
4. VBA-скрипты: гибкое решение для продвинутых пользователей
Если вам нужно полностью контролировать формат вывода (например, добавлять префиксы, работать с нестандартными валютами или интегрировать преобразование в макрос), лучший вариант — написать собственную функцию на VBA. Ниже приведён код функции, которая преобразует число в текст с учётом рублей и копеек, а также склоняет слова правильно.
Как добавить функцию в Excel:
- Нажмите
Alt + F11, чтобы открыть редактор VBA. - В меню выберите
Insert → Module. - Скопируйте код ниже в открывшееся окно:
Function NumberToRubles(ByVal n As Double) As String
Dim rub As String, kop As String
Dim rublText As String, kopText As String
' Разделяем рубли и копейки
rub = Int(n)
kop = Round((n - rub) * 100, 0)
' Преобразуем рубли в текст
rublText = Application.WorksheetFunction.Text(rub, "[$-419]0")
rublText = Application.WorksheetFunction.BahtText(rub)
' Преобразуем копейки в текст
If kop > 0 Then
kopText = Application.WorksheetFunction.Text(kop, "[$-419]0")
kopText = " " & Application.WorksheetFunction.BahtText(kop) & " копеек"
Else
kopText = ""
End If
' Складываем результат
NumberToRubles = rublText & kopText
' Исправляем склонение для рублей
Dim lastDigit As Integer, lastTwoDigits As Integer
lastDigit = rub Mod 10
lastTwoDigits = rub Mod 100
If lastTwoDigits >= 11 And lastTwoDigits <= 19 Then
NumberToRubles = Replace(NumberToRubles, "руб.", "рублей")
Else
Select Case lastDigit
Case 1: NumberToRubles = Replace(NumberToRubles, "руб.", "рубль")
Case 2, 3, 4: NumberToRubles = Replace(NumberToRubles, "руб.", "рубля")
Case Else: NumberToRubles = Replace(NumberToRubles, "руб.", "рублей")
End Select
End If
End Function
Теперь в Excel можно использовать новую функцию:
=NumberToRubles(A1)
Она вернёт результат вида: "Одна тысяча двадцать три рубля пятьдесят шесть копеек".
Важно: функция BahtText в VBA работает только на русскоязычных версиях Excel. Если у вас англоязычная версия, замените её на вызов ЧИСЛТЕКСТ через Application.WorksheetFunction.
Преимущества VBA-решения:
- 🔧 Полный контроль над логикой преобразования.
- 🔧 Возможность интеграции с другими макросами.
- 🔧 Работает без подключения к интернету.
5. Онлайн-сервисы для преобразования чисел в текст
Если вам нужно одноразово преобразовать числа в текст, или вы работаете на компьютере, где нельзя устанавливать надстройки, можно воспользоваться онлайн-сервисами. Они позволяют ввести число и получить результат в текстовом формате без установки дополнительного ПО.
Популярные сервисы:
| Сервис | Поддержка валют | Падежи | Ограничения |
|---|---|---|---|
| Num2Word | Рубли, доллары, евро, гривны | Именительный, родительный | Ограничение на количество запросов |
| Numerex | 20+ валют | Все падежи | Реклама |
| Calculat.org | Только рубли | Именительный | Нет API для Excel |
| PlanetCalc | Рубли, доллары | Именительный | Медленная работа при больших числах |
Как использовать онлайн-сервис в Excel:
- Скопируйте числа из Excel в буфер обмена.
- Вставьте их в поле на сайте сервиса.
- Скопируйте полученный текстовый результат.
- Вставьте его обратно в Excel как
значения(черезСпециальная вставка).
⚠️
Внимание: Онлайн-сервисы не подходят для работы с конфиденциальными данными (например, суммами по счетам клиентов). Все введённые числа передаются на сторонние серверы.
6. Ручной ввод: когда автоматизация не подходит
В некоторых случаях автоматические методы могут дать сбой или не учесть специфические требования. Например:
- 📄 Документы с юридической силой, где важна точная формулировка.
- 📄 Нестандартные валюты (например, криптовалюты: "0.5 биткоина").
- 📄 Тексты с дополнительными условиями (например, "не менее одной тысячи рублей").
В таких ситуациях лучше вводить числа прописью вручную. Чтобы ускорить процесс:
- Используйте
ЧИСЛТЕКСТкак основу, а затем редактируйте результат. - Создайте шаблоны для часто используемых фраз (например, "Сумма сделки составляет [вставить текст]").
- Применяйте
Найти и заменить(Ctrl + H) для исправления типичных ошибок (например, замены "руб." на "рублей").
Пример ручного редактирования:
- Исходная формула:
=ЧИСЛТЕКСТ(1500)→ "Одна тысяча пятьсот". - Ручная правка: "Сумма составляет одну тысячу пятьсот рублей 00 копеек".
⚠️
Внимание: При ручном вводе легко допустить ошибку в склонении или написании числа. Всегда перепроверяйте результат с помощью сервисов вроде Грамота.ру.
7. Типичные ошибки и как их избежать
Даже при использовании автоматизированных методов пользователи часто сталкиваются с проблемами. Вот самые распространённые ошибки и их решения:
| Ошибка | Причина | Решение |
|---|---|---|
#ИМЯ? |
Функция ЧИСЛТЕКСТ не поддерживается в вашей версии Excel |
Обновите Excel или используйте VBA/надстройки |
| "Одна тысяча двести тридцать четыре целых ноль сотых" | Функция выводит дробную часть как "ноль сотых" | Используйте формулу с ЕСЛИ для скрытия нулевых копеек |
| "1234 руб." (без склонения) | Формула не учитывает падежи | Добавьте проверку остатка от деления (см. раздел 2) |
Ошибка #ЗНАЧ! в VBA |
Некорректный тип данных (например, текст вместо числа) | Проверьте формат ячейки (Числовой) |
| "Минус одна тысяча рублей" отображается как "Одна тысяча рублей" | Функция игнорирует знак минус | Добавьте проверку: =ЕСЛИ(A1<0; "Минус " & ЧИСЛТЕКСТ(ABS(A1)); ЧИСЛТЕКСТ(A1)) |
Ещё одна частая проблема — некорректное отображение больших чисел (например, "один миллион двести три тысячи" вместо "один миллион двести три тысячи"). Это происходит из-за ошибок в логике склонения. Чтобы избежать таких ошибок:
- 🔍 Тестируйте формулы на числах разной величины (1, 999, 1000, 1001, 1000000).
- 🔍 Используйте надстройки с открытым исходным кодом (можно проверить логику).
FAQ: Ответы на частые вопросы
Можно ли в Excel преобразовать число в текст на украинском или казахском языке?
Да, но стандартная функция ЧИСЛТЕКСТ поддерживает только русский и английский. Для украинского или казахского нужно:
- Использовать надстройки (например, NumToText с поддержкой мног языков).
- Написать VBA-функцию с правилами склонения для нужного языка.
- Вручную редактировать результат
ЧИСЛТЕКСТ(заменить "рублей" на "гривен"/"тенге").
Как сделать, чтобы сумма прописью начиналась с заглавной буквы?
Используйте функцию ПРОПНАЧ или ЗАГЛАВНЫЕ:
=ПРОПНАЧ(ЧИСЛТЕКСТ(A1)) // "Одна тысяча двадцать три"
=ЗАГЛАВНЫЕ(ЛЕВСИМВ(ЧИСЛТЕКСТ(A1))) & ПСТР(ЧИСЛТЕКСТ(A1);2;99) // "Одна тысяча двадцать три"
Для VBA добавьте строку NumberToRubles = UCase(Left(NumberToRubles, 1)) & Mid(NumberToRubles, 2) в конец функции.
Почему после копирования формулы в другую ячейку результат становится неверным?
Скорее всего, в формуле используются относительные ссылки (например, A1 вместо $A$1). Исправьте ссылки на абсолютные:
=ЧИСЛТЕКСТ($A$1) // Фиксированная ссылка на ячейку A1
Также проверьте, не изменился ли формат ячейки (например, с Числовой на Текстовый).
Можно ли преобразовать число в текст в Google Таблицах?
В Google Sheets нет функции ЧИСЛТЕКСТ, но есть альтернативы:
- Используйте
=RUB(1234)для рублей (только целые числа). - Установите надстройку Number to Words из Google Workspace Marketplace.
- Напишите кастомную функцию на Google Apps Script:
function NumberToRubles(number) {
return Utilities.formatString(
"%s руб.%s коп.",
numToText(Math.floor(number)),
numToText(Math.round((number - Math.floor(number)) * 100))
);
}
Как преобразовать дату в текст (например, "первое января")?
Для преобразования дат используйте комбинацию функций ДЕНЬ, МЕСЯЦ, ГОД и ВЫБОР:
=ВЫБОР(ДЕНЬ(A1);
"первое", "второе", "третье", "четвёртое", "пятое",
"шестое", "седьмое", "восьмое", "девятое", "десятое",
... // продолжение для всех дней
) & " " &
ВЫБОР(МЕСЯЦ(A1);
"января", "февраля", "марта", ..., "декабря"
) & " " &
ЧИСЛТЕКСТ(ГОД(A1)) & " года"
Для упрощения можно создать таблицу соответствий дней/месяцев и использовать ПОИСКПОЗ.