Преобразование чисел в текст в Excel: от простых формул до VBA

В работе с 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%
⚠️ Внимание: Функция ТЕКСТ() не меняет тип данных — результат остаётся текстом. Если вам нужно дальнейшее вычисление, используйте ЗНАЧЕН() для обратного преобразования.

—— • ——

📊 Какой способ преобразования чисел в текст вы используете чаще?
Встроенную функцию ЧИСЛТЕКСТ
Формулы ТЕКСТ+СЦЕПИТЬ
Надстройку от сторонних разработчиков
Собственный VBA-макрос
Не знаю, как это делать

3. Надстройки для Excel: готовые решения

Если встроенных функций недостаточно, можно установить надстройки от сторонних разработчиков. Они расширяют возможности Excel и часто поддерживают несколько языков, включая русский.

Популярные надстройки для преобразования чисел в текст:

  • 🔧 NumWords — бесплатная надстройка с поддержкой 20+ языков, включая русские рубли и копейки. Скачать.
  • 🔧 Kutools for Excel — платный пакет инструментов с функцией =NUMTOWORD(), которая работает с валютами и дробными числами.
  • 🔧 BANANA — русскоязычная надстройка, оптимизированная для бухгалтерских задач (НДС, налоги, суммы прописью).

Как установить надстройку:

  1. Скачайте файл надстройки (.xlam или .xlsm).
  2. Откройте Excel и перейдите в Файл → Параметры → Надстройки.
  3. Нажмите Перейти... внизу окна и выберите скачанный файл.
  4. Активируйте надстройку и используйте новые функции в формулах.

Преимущества надстроек:

  • ✅ Работают во всех версиях 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

Как использовать:

  1. Нажмите Alt + F11, чтобы открыть редактор VBA.
  2. Вставьте код в модуль (Insert → Module).
  3. Сохраните файл как .xlsm (с поддержкой макросов).
  4. В ячейке Excel используйте формулу =RUBTEXT(A1), где A1 — ячейка с числом.

Полный код функции с обработкой всех чисел до 999 триллионов можно скачать по этой ссылке (см. спойлер ниже).

Полный код VBA-функции для русских чисел

Функция поддерживает числа до 999 триллионов, корректно склоняет "рубль/рубля/рублей" и обрабатывает копейки. В архиве также есть примеры для долларов и евро. [Скачать пример](https://example.com/excel-vba-rubtext.zip)

—— • ——

5. Преобразование чисел в текст без формул: ручной ввод

Если вам нужно преобразовать небольшое количество чисел, можно обойтись без формул:

  • 📝 Копирование через Буфер обмена:
    1. Выделите ячейку с числом и скопируйте её (Ctrl + C).
    2. Вставьте в Блокнот или Word — число автоматически станет текстом.
    3. Скопируйте обратно в Excel (вставляйте как Значения).
  • 🔄 Форматирование ячеек:
    1. Выделите ячейку, нажмите Ctrl + 1 (или ПКМ → Формат ячеек).
    2. Выберите формат Текстовый.
    3. Введите число вручную — оно сохранится как текст.

    Эти методы подходят для разовых задач, но неэффективны при работе с большими массивами данных. Кроме того, ручной ввод чреват ошибками, особенно при работе с валютами.

    —— • ——

    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

      Как использовать:

      1. Откройте редактор VBA (Alt + F11).
      2. Вставьте код в новый модуль.
      3. Запустите макрос (F5) и выделите диапазон с числами.

      Для преобразования в пропись замените строку cell.Value = Application.WorksheetFunction.Text(...) на вызов вашей пользовательской функции (например, RUBTEXT).

      ☑️ Подготовка к автоматизации

      Выполнено: 0 / 4

      —— • ——

      FAQ: Частые вопросы

      Можно ли преобразовать число в текст без потери точности?

      Да, если использовать текстовый формат ячейки до ввода числа. Для этого:

      1. Выделите ячейку и установите формат Текстовый (Ctrl + 1).
      2. Введите число — оно сохранится как текст (например, '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.