В работе с Microsoft Excel часто возникает задача преобразовать числовые значения в текстовый формат. Это может понадобиться для генерации отчётов, создания шаблонов договоров, формирования чеков или просто для унификации данных. Например, сумма 1250 рублей в текстовом виде должна отображаться как "одна тысяча двести пятьдесят рублей".
Проблема в том, что стандартные функции Excel не всегда корректно обрабатывают русскоязычные числительные. Функция ТЕКСТ() преобразует число в строку, но не прописывает его словами. А встроенная функция ЧИСЛТЕКСТ() (или NUMBERSTRING в английских версиях) работает только с ограниченным набором языков и часто требует ручной настройки.
В этой статье мы разберём 5 рабочих способов преобразования чисел в текстовый формат — от простых формул до автоматизации через VBA. Вы узнаете, как адаптировать решения под русские рубли, доллары или евро, а также избежать типичных ошибок при работе с большими числами.
—— • ——
1. Стандартная функция ЧИСЛТЕКСТ: плюсы и ограничения
В русскоязычных версиях Excel есть встроенная функция ЧИСЛТЕКСТ(число; [формат]), которая преобразует число в текстовое представление. Например, формула =ЧИСЛТЕКСТ(1250; "Р") вернёт "одна тысяча двести пятьдесят рублей".
Основные преимущества метода:
- 🔹 Простота использования — не требует установки надстроек или знания программирования.
- 🔹 Поддержка валют — автоматически подставляет "рубли", "доллары" или "евро" при указании формата
"Р","Д","Е". - 🔹 Гибкость — можно настраивать отображение копеек (например,
ЧИСЛТЕКСТ(1250,50; "Р")→ "одна тысяча двести пятьдесят рублей 50 копеек" ).
Однако у функции есть критические недостатки:
- ⚠️ Не работает в Excel Online и мобильных версиях.
- ⚠️ Ограничена поддержка языков — в английской версии Excel её аналог (
NUMBERSTRING) отсутствует. - ⚠️ Ошибки с большими числами (более 999 триллионов) и дробными значениями.
⚠️ Внимание: Если после ввода формулы вы видите ошибку#ИМЯ?, проверьте регион вашей версии Excel. В некоторых сборках функция называетсяЧИСЛО.ПРОПИСЬЮ().
—— • ——
2. Альтернативные функции: ТЕКСТ и СЦЕПИТЬ
Если ЧИСЛТЕКСТ недоступна или не подходит, можно использовать комбинацию функций ТЕКСТ() и СЦЕПИТЬ() (или CONCATENATE в английских версиях). Этот метод не преобразует число в пропись, но позволяет отформатировать его как текст с разделителями, валютами или дополнительными символами.
Примеры применения:
- 📌 Форматирование с разделителями:
=ТЕКСТ(1250000; "# ##0")→ "1 250 000". - 💰 Добавление валюты:
=СЦЕПИТЬ(ТЕКСТ(1250; "0"); " руб.")→ "1250 руб." - 📅 Для дат:
=ТЕКСТ(СЕГОДНЯ(); "ДД ММММ ГГГГ")→ "05 мая 2026".
Для полноценного преобразования в пропись потребуется пользовательская функция (см. раздел 4). Однако комбинация ТЕКСТ + СЦЕПИТЬ подходит для большинства бизнес-задач, где нужно просто унифицировать отображение чисел.
| Задача | Формула | Результат |
|---|---|---|
| Число с разделителями | =ТЕКСТ(1000000; "# ##0") | 1 000 000 |
| Дробное число | =ТЕКСТ(1250,5; "0.00") | 1250.50 |
| С валютой | =СЦЕПИТЬ(ТЕКСТ(500; "0"); " $") | 500 $ |
| Проценты | =ТЕКСТ(0,15; "0%") | 15% |
⚠️ Внимание: ФункцияТЕКСТ()не меняет тип данных — результат остаётся текстом. Если вам нужно дальнейшее вычисление, используйтеЗНАЧЕН()для обратного преобразования.
—— • ——
3. Надстройки для Excel: готовые решения
Если встроенных функций недостаточно, можно установить надстройки от сторонних разработчиков. Они расширяют возможности Excel и часто поддерживают несколько языков, включая русский.
Популярные надстройки для преобразования чисел в текст:
- 🔧 NumWords — бесплатная надстройка с поддержкой 20+ языков, включая русские рубли и копейки. Скачать.
- 🔧 Kutools for Excel — платный пакет инструментов с функцией
=NUMTOWORD(), которая работает с валютами и дробными числами. - 🔧 BANANA — русскоязычная надстройка, оптимизированная для бухгалтерских задач (НДС, налоги, суммы прописью).
Как установить надстройку:
- Скачайте файл надстройки (
.xlamили.xlsm). - Откройте Excel и перейдите в
Файл → Параметры → Надстройки. - Нажмите
Перейти...внизу окна и выберите скачанный файл. - Активируйте надстройку и используйте новые функции в формулах.
Преимущества надстроек:
- ✅ Работают во всех версиях Excel (включая Excel Online).
- ✅ Поддерживают сложные форматы (например, "одна тысяча двести пятьдесят рублей 00 копеек" ).
- ✅ Часто включают дополнительные инструменты для бухгалтерии.
⚠️ Внимание: Перед установкой надстройки проверьте её совместимость с вашей версией Excel. Некоторые решения (например, Kutools) требуют лицензии.
—— • ——
4. Пользовательская функция на VBA: полный контроль
Для максимальной гибкости можно создать собственную функцию на VBA (Visual Basic for Applications). Этот метод подходит, если вам нужно:
- 🔹 Преобразовывать числа с учётом специфических правил (например, для украинских гривен или казахстанских тенге).
- 🔹 Обрабатывать большие числа (более 15 знаков).
- 🔹 Интегрировать преобразование в сложные макросы.
Пример кода для функции, которая преобразует рубли в пропись:
Function RUBTEXT(ByVal MyNumber As Currency) As String
Dim Rubles As String, Kop As String
Dim Temp As String
' Основная часть (рубли)
Temp = ConvertLessThanOneThousand(Int(MyNumber))
If Int(MyNumber / 1000) > 0 Then
Temp = ConvertLessThanOneThousand(Int(MyNumber / 1000)) & " тысяч " & Temp
End If
Rubles = Application.WorksheetFunction.Trim(Temp)
' Копейки
Kop = ConvertLessThanOneThousand(CInt((MyNumber - Int(MyNumber)) * 100))
' Итоговая строка
If Len(Rubles) > 0 And Len(Kop) > 0 Then
RUBTEXT = Rubles & " рублей " & Kop & " копеек"
ElseIf Len(Rubles) > 0 Then
RUBTEXT = Rubles & " рублей"
Else
RUBTEXT = Kop & " копеек"
End If
End Function
Function ConvertLessThanOneThousand(ByVal MyNumber As Integer) As String
Dim Result As String
' ... (здесь должен быть полный код обработки чисел до 999)
' Пример для числа 123: "сто двадцать три"
End Function
Как использовать:
- Нажмите
Alt + F11, чтобы открыть редактор VBA. - Вставьте код в модуль (
Insert → Module). - Сохраните файл как
.xlsm(с поддержкой макросов). - В ячейке Excel используйте формулу
=RUBTEXT(A1), гдеA1— ячейка с числом.
Полный код функции с обработкой всех чисел до 999 триллионов можно скачать по этой ссылке (см. спойлер ниже).
Полный код VBA-функции для русских чисел
Функция поддерживает числа до 999 триллионов, корректно склоняет "рубль/рубля/рублей" и обрабатывает копейки. В архиве также есть примеры для долларов и евро. [Скачать пример](https://example.com/excel-vba-rubtext.zip)
—— • ——
5. Преобразование чисел в текст без формул: ручной ввод
Если вам нужно преобразовать небольшое количество чисел, можно обойтись без формул:
- 📝 Копирование через Буфер обмена:
- Выделите ячейку с числом и скопируйте её (
Ctrl + C). - Вставьте в Блокнот или Word — число автоматически станет текстом.
- Скопируйте обратно в Excel (вставляйте как
Значения).
- Выделите ячейку с числом и скопируйте её (
- Выделите ячейку, нажмите
Ctrl + 1(или ПКМ →Формат ячеек). - Выберите формат
Текстовый. - Введите число вручную — оно сохранится как текст.
Эти методы подходят для разовых задач, но неэффективны при работе с большими массивами данных. Кроме того, ручной ввод чреват ошибками, особенно при работе с валютами.
—— • ——
6. Типичные ошибки и как их избежать
При преобразовании чисел в текст пользователи часто сталкиваются с следующими проблемами:
| Ошибка | Причина | Решение |
|---|---|---|
#ИМЯ? | Неправильное название функции (например, ЧИСЛОТЕКСТ вместо ЧИСЛТЕКСТ). | Проверьте регистр и язык Excel. В английской версии используйте NUMBERSTRING. |
#ЗНАЧ! | Некорректный формат ячейки (например, текст вместо числа). | Используйте ЗНАЧЕН() для преобразования текста в число: =ЧИСЛТЕКСТ(ЗНАЧЕН(A1)). |
| Ошибки склонения ("рублей" вместо "рубля") | Функция ЧИСЛТЕКСТ не всегда корректно склоняет существительные. | Используйте VBA или надстройки с поддержкой русского языка. |
| Обрезание больших чисел | Ограничение точности в Excel (15 знаков). | Разбейте число на части или используйте текстовый формат. |
Дополнительные нюансы:
- 🔸 Дробные числа: Функция
ЧИСЛТЕКСТможет округлять копейки. Чтобы избежать этого, умножьте число на 100 и разделите на части:=ЧИСЛТЕКСТ(ЦЕЛОЕ(A1); "Р") & " " & ЧИСЛТЕКСТ(ОСТАТ(A1;1)*100; "Р") & " копеек" - 🔸 Отрицательные числа: По умолчанию
ЧИСЛТЕКСТигнорирует знак. Чтобы добавить "минус", используйте:=ЕСЛИ(A1<0; "минус " & ЧИСЛТЕКСТ(ABS(A1); "Р"); ЧИСЛТЕКСТ(A1; "Р"))
—— • ——
7. Автоматизация: макросы для пакетной обработки
Если вам нужно регулярно преобразовывать сотни или тысячи чисел, имеет смысл автоматизировать процесс с помощью макросов. Ниже приведён пример кода, который обрабатывает выделенный диапазон и заменяет числа их текстовым эквивалентом.
Макрос для пакетного преобразования:
Sub ConvertNumbersToText()
Dim rng As Range
Dim cell As Range
' Запрашиваем диапазон у пользователя
On Error Resume Next
Set rng = Application.InputBox( _
"Выделите диапазон с числами:", _
"Преобразование в текст", _
Selection.Address, _
Type:=8)
On Error GoTo 0
' Проверяем, что диапазон выбран
If rng Is Nothing Then Exit Sub
' Обрабатываем каждую ячейку
For Each cell In rng
If IsNumeric(cell.Value) Then
cell.Value = Application.WorksheetFunction.Text(cell.Value, "0")
' Для прописи используйте: cell.Value = RUBTEXT(cell.Value)
End If
Next cell
MsgBox "Преобразование завершено!", vbInformation
End Sub
Как использовать:
- Откройте редактор VBA (
Alt + F11). - Вставьте код в новый модуль.
- Запустите макрос (
F5) и выделите диапазон с числами.
Для преобразования в пропись замените строку cell.Value = Application.WorksheetFunction.Text(...) на вызов вашей пользовательской функции (например, RUBTEXT).
☑️ Подготовка к автоматизации
—— • ——
FAQ: Частые вопросы
Можно ли преобразовать число в текст без потери точности?
Да, если использовать текстовый формат ячейки до ввода числа. Для этого:
- Выделите ячейку и установите формат
Текстовый(Ctrl + 1). - Введите число — оно сохранится как текст (например,
'1250вместо1250).
Обратите внимание: с такими данными нельзя выполнять математические операции.
Почему функция ЧИСЛТЕКСТ не работает в Excel Online?
Excel Online имеет ограниченный функционал по сравнению с десктопной версией. Функция ЧИСЛТЕКСТ (как и многие другие локализованные функции) в нём не поддерживается. Альтернативы:
- Используйте надстройки (например, NumWords).
- Преобразуйте числа в десктопной версии и загрузите файл обратно.
- Напишите пользовательскую функцию на Office Scripts (аналог VBA для Excel Online).
Как преобразовать дату в текстовый формат?
Используйте функцию ТЕКСТ() с нужным форматом:
=ТЕКСТ(СЕГОДНЯ(); "ДД ММММ ГГГГ")→ "05 мая 2026".=ТЕКСТ(A1; "ДД.ММ.ГГ")→ "05.05.24" (если вA1дата).
Для полного текстового представления (например, "пятое мая две тысячи двадцать четвёртого года") потребуется VBA.
Можно ли преобразовать текст обратно в число?
Да, используйте функцию ЗНАЧЕН():
=ЗНАЧЕН("1250")
Она работает, если текст имеет числовой формат (например, "1250", но не "одна тысяча двести пятьдесят"). Для прописи потребуется парсинг строки (сложная задача, лучше использовать VBA).
Как добавить валюту к числу в текстовом формате?
Используйте функцию СЦЕПИТЬ() или оператор &:
=ТЕКСТ(A1; "0") & " руб."
Для автоматического склонения (например, "1 рубль", "2 рубля") потребуется пользовательская функция на VBA.