Как в Excel перевести цифры в текст прописью: от простых чисел до сумм с копейками

Преобразование числовых значений в текстовый формат прописью — одна из самых востребованных задач в 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 функция БАТЕКСТ может отсутствовать или работать нестабильно. Проверьте ее доступность в вашей версии через Формулы → Вставить функцию.

Если вам нужно срочное решение для небольших чисел (до миллиона) и без копеек, этот способ подойдет. Для всего остального читаем дальше.

📊 Какой версией Excel вы пользуетесь?
Excel 2010-2013
Excel 2016-2019
Microsoft 365 (Excel Online)
Excel для Mac
Другой

2. Пользовательская функция на VBA: универсальное решение

Для полноценной работы с числами любого размера, валютами и копейками лучше создать пользовательскую функцию на VBA. Этот метод требует разового включения макросов, но затем вы сможете использовать функцию =РубльПрописью() как стандартную.

Вот пошаговая инструкция:

  1. Нажмите Alt + F11, чтобы открыть редактор VBA.
  2. В меню выберите Insert → Module.
  3. Скопируйте и вставьте этот код:
    Function РубльПрописью(ByVal MyNumber As Currency) As String
    

    Dim 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 новую функцию =ЧислоПрописью() с поддержкой:

  • 💰 Разных валют (рубли, доллары, евро, гривны).
  • 📊 Числовых форматов (целые числа, дроби, отрицательные значения).
  • 🌍 нескольких языков (русский, английский, украинский).
  • Установка надстройки занимает 2 минуты:

    1. Скачайте файл NumberToText.xlam с официального сайта.
    2. Откройте Excel и перейдите в Файл → Параметры → Надстройки.
    3. Внизу окна выберите Управление: Надстройки ExcelПерейти.
    4. Нажмите Обзор, выберите скачанный файл и подтвердите установку.

После установки в списке функций появится категория Пользовательские с новой функцией. Пример использования:

=ЧислоПрописью(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 — простой конвертер с копированием результата.
  • Как пользоваться:

    1. Скопируйте число из Excel.
    2. Вставьте его в поле на сайте.
    3. Выберите валюту и язык.
    4. Скопируйте результат обратно в Excel.

    Плюсы онлайн-сервисов:

    • ✅ Не нужно ничего устанавливать.
    • ✅ Поддержка редких валют (например, тенге, сум).
    • ✅ Возможность конвертации чисел на иностранных языках.

    Минусы:

    • ❌ Риск утечки конфиденциальных данных (если работаете с финансовыми документами).
    • ❌ Невозможно автоматизировать процесс для большого количества ячеек.
    • ❌ Зависимость от интернета.
    ⚠️ Внимание: При работе с коммерческой тайной или персональными данными избегайте онлайн-сервисов. Используйте офлайн-методы (VBA или надстройки).

    6. Адаптация для Google Таблиц: альтернативные формулы

    В Google Sheets нет функции БАТЕКСТ, а макросы работают иначе, чем в Excel. Однако здесь можно использовать App Script (аналог VBA) или готовые формулы.

    Самый простой способ — установить бесплатную надстройку "Number to Words":

    1. Откройте Google Таблицу.
    2. Перейдите в Расширения → Надстройки → Установить надстройки.
    3. Найдите "Number to Words" и установите.
    4. После установки в меню появится пункт Number to Words → Start.

    Для ручного ввода можно использовать эту формулу (до 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 лучше использовать надстройки — они не требуют знаний программирования, но нуждаются в разовой установке.

    Почему функция БАТЕКСТ возвращает текст на тайском языке?

    Функция БАТЕКСТ изначально предназначена для тайского бата (валюты Таиланда), поэтому она преобразует числа в тайские слова. Чтобы получить русский текст, нужно:

    1. Использовать функцию ПОДСТАВИТЬ для замены тайских символов на русские.
    2. Или написать собственную функцию на VBA (как в разделе 2).

    Пример замены:

    =ПОДСТАВИТЬ(ПОДСТАВИТЬ(БАТЕКСТ(A1);"บาท";"рубль");"สตางค์";"копейка")

    Но это решение все равно не идеально — склонения и грамматика останутся некорректными.

    Как преобразовать сумму с копейками (например, 123,45)?

    Для чисел с дробной частью нужно:

    1. Разделить число на целую и дробную части с помощью функций ЦЕЛОЕ и ОСТАТ (или МOD).
    2. Обработать каждую часть отдельно.