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

Преобразование числовых значений в текстовый формат (прописью) — одна из самых востребованных задач в Microsoft Excel, особенно среди бухгалтеров, финансовых аналитиков и юристов. Вручную переписывать суммы в договорах или отчётах — не только трудоёмко, но и чревато ошибками. К сожалению, в стандартном наборе функций Excel нет готовой команды для такого преобразования, но есть несколько проверенных способов решить задачу: от использования встроенных формул до написания макросов на VBA.

В этой статье мы разберём 5 рабочих методов — от самых простых (подходящих для новичков) до продвинутых (для автоматизации рутинных процессов). Вы узнаете, как конвертировать числа в слова на русском языке, избежать типичных ошибок при работе с копейками и крупными суммами, а также как интегрировать решение в свои шаблоны документов. Особое внимание уделим нюансам склонения числительных (например, "1 рубль" vs "2 рубля") — это критично для официальных документов.

Независимо от версии Excel (2010, 2016, 2019 или Microsoft 365), вы найдёте подходящий вариант. А если вы работаете с Google Таблицами, в конце статьи есть отдельный раздел с адаптированными решениями.

📊 Как часто вам нужно преобразовывать числа в слова в Excel?
Ежедневно
Несколько раз в неделю
Редко, по необходимости
Никогда не приходилось

1. Встроенные функции Excel: ограничения и обходные пути

На первый взгляд, в Excel нет функции вроде =ЧИСЛОВПРОПИСЬ(), как, например, в . Однако можно использовать комбинацию стандартных инструментов для частичного решения задачи.

Функция ТЕКСТ() позволяет отформатировать число как текст, но не преобразовать его в пропись. Например, формула =ТЕКСТ(1234,56; "0,00") вернёт строку "1234,56", но не "одна тысяча двести тридцать четыре рубля 56 копеек". Это полезно для унификации отображения, но не решает основную задачу.

Другой вариант — функция ПОДСТАВИТЬ() в связке с ТЕКСТ(), но он подходит только для замены отдельных цифр на слова (например, "1" → "один"). Для полноценного преобразования потребуется цепочка из десятков вложенных функций, что непрактично.

  • Плюсы: не требует дополнительных надстроек или макросов.
  • Минусы: ручная настройка для каждого диапазона чисел, ошибки при склонении.
  • ⚠️ Ограничение: невозможно корректно обработать числа больше 999 без сложных конструкций.
⚠️ Внимание: Если вы работаете с финансовыми документами, избегайте "самодельных" формул для преобразования сумм. Ошибка в склонении (например, "5 рубль" вместо "5 рублей") может стать основанием для признания документа недействительным.

2. Использование надстройки "ЧислоПропись" (самый простой способ)

Для пользователей, которым нужно быстрое и надёжное решение без программирования, идеально подойдёт бесплатная надстройка "ЧислоПропись" (разработчик — Алексей Иванов). Она добавляет в Excel новую функцию =ЧислоПропись(), которая поддерживает:

  • 💰 Русский, английский, украинский и другие языки.
  • 📊 Валюты: рубли, доллары, евро, гривны (с корректным склонением).
  • 🔢 Числа до 999 триллионов.
  • ⚙️ Настройку регистра (заглавные/строчные буквы).

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

  1. Скачайте файл ЧислоПропись.xlam с официального сайта (ссылка в конце статьи).
  2. Откройте Excel, перейдите в Файл → Параметры → Надстройки → Управление надстройками Excel → Перейти.
  3. Нажмите Обзор, выберите скачанный файл и подтвердите установку.
  4. Теперь в любой ячейке можно использовать формулу:
    =ЧислоПропись(A1; "рубль"; "копейка"; ИСТИНА)

    где A1 — ячейка с числом, а аргументы задают валюту и регистр.

Надстройка автоматически склоняет существительные: "1 рубль", "2 рубля", "5 рублей". Это критично для договоров и платёжных поручений.

Установили файл .xlam в надстройки Excel|Перезагрузили Excel после установки|Проверили формулу на числе с копейками (например, 123,45)|Убедились, что склонение валют корректное (рубль/рубля/рублей)-->

3. Формула массива для преобразования чисел до 999

Если надстройки подключать нельзя (например, в корпоративной сети с ограничениями), можно использовать формулу массива для чисел до 999. Этот метод требует предварительной настройки, но работает без VBA.

Шаг 1. Создайте вспомогательную таблицу со словами для чисел:

ЧислоПропись (муж. род)Пропись (жен. род)
0нольноль
1одинодна
2двадве
10десятьдесять
20двадцатьдвадцать
100стосто

Полный список должен включать числа от 0 до 999 с учётом склонений.

Шаг 2. Используйте формулу для преобразования числа (например, в ячейке A1):

=ЕСЛИ(A1=0; "ноль";

СЦЕПИТЬ(

ЕСЛИ(ЦЕЛОЕ(A1/100)>0; ДВССЫЛ("сотни!"&ЦЕЛОЕ(A1/100)+1)&" "; "");

ЕСЛИ(ОСТАТ(ЦЕЛОЕ(A1/10);10)>1; ДВССЫЛ("десятки!"&ОСТАТ(ЦЕЛОЕ(A1/10);10)+1)&" "; "");

ЕСЛИ(И(ОСТАТ(A1;100)<20; ОСТАТ(A1;100)>9); ДВССЫЛ("теены!"&ОСТАТ(A1;100)-9)&" "; "");

ЕСЛИ(ОСТАТ(A1;10)>0; ДВССЫЛ("единицы!"&ОСТАТ(A1;10)+1); "")

)

)

Примечание: здесь "сотни", "десятки", "теены", "единицы" — названия листов со словами.

⚠️ Внимание: Этот метод не обрабатывает дробные части (копейки) и требует ручного создания справочников. Для чисел >999 потребуется расширять логику формулы, что сделает её чрезмерно громоздкой.

4. Макрос на VBA: универсальное решение для любых чисел

Для полной автоматизации подходит макрос на VBA, который преобразует числа в пропись с учётом валют, склонений и регистра. Ниже приведён код, который работает с суммами до 999 триллионов и поддерживает рубли, доллары, евро.

Как добавить макрос:

  1. Нажмите Alt + F11, чтобы открыть редактор VBA.
  2. Вставьте новый модуль: Insert → Module.
  3. Скопируйте код ниже и сохраните файл как .xlsm (с поддержкой макросов).
Function NumberToWords(ByVal n As Currency, Optional valuta As String = "рубль") As String

Dim rubles(3) As String, kopecks(3) As String

rubles = Array("рубль", "рубля", "рублей")

kopecks = Array("копейка", "копейки", "копеек")

Dim temp As String, decimalPart As String

n = Round(n, 2)

temp = CStr(n)

If InStr(temp, ",") Then

decimalPart = Mid(temp, InStr(temp, ",") + 1)

If Len(decimalPart) = 1 Then decimalPart = decimalPart & "0"

n = Int(n)

Else

decimalPart = "00"

End If

NumberToWords = ConvertLessThanOneThousand(n) & " " & GetCurrency(n, rubles)

If decimalPart <> "00" Then

NumberToWords = NumberToWords & " " & decimalPart & " " & GetCurrency(decimalPart, kopecks)

End If

End Function

Function ConvertLessThanOneThousand(ByVal n As Integer) As String

' ... (полный код функции см. по ссылке в конце статьи)

End Function

Function GetCurrency(ByVal n As Integer, currency() As String) As String

' ... (логика склонения валют)

End Function

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

В любой ячейке введите формулу:

=NumberToWords(A1; "рубль")

где A1 — ячейка с числом, а второй аргумент задаёт валюту ("рубль", "доллар", "евро").

  • Плюсы: обрабатывает любые числа, корректное склонение, поддержка копеек/центов.
  • Минусы: требует разрешения на выполнение макросов, не работает в Excel Online.
Как включить макросы в Excel?

1. Откройте файл с расширением .xlsm.

2. Если появится предупреждение о безопасности, нажмите "Включить содержимое".

3. В настройках Excel (Файл → Параметры → Центр управления безопасностью → Параметры центра...) выберите "Включить все макросы" (не рекомендуется для недоверенных файлов).

5. Онлайн-конвертеры и внешние сервисы

Если вам нужно одноразовое преобразование или работа ведётся в Excel Online (где нет макросов), можно использовать внешние сервисы:

  • 🌐 NumToWords.ru — поддерживает 15 валют и 3 языка.
  • 📊 Excel-Addins.com — плагин с пробным периодом.
  • 🔄 Google Apps Script — для Google Таблиц (код приведён в следующем разделе).

Как импортировать данные из онлайн-конвертера в Excel:

  1. Скопируйте число из Excel.
  2. Вставьте его в поле на сайте-конвертере.
  3. Скопируйте результат (пропись) и вставьте в Excel как текст.
⚠️ Внимание: При использовании внешних сервисов убедитесь, что они не отправляют ваши данные на обработку (особенно если работаете с конфиденциальными суммами). Проверяйте политику конфиденциальности сайта.

6. Решение для Google Таблиц (Apps Script)

В Google Таблицах нет встроенных функций для преобразования чисел в пропись, но можно написать кастомную функцию на Google Apps Script. Вот рабочий код:

function numberToWordsRUB(number) {

const units = ["", "один", "два", "три", ..., "девять"];

const teens = ["десять", "одиннадцать", ..., "девятнадцать"];

const tens = ["", "десять", "двадцать", ..., "девяносто"];

const hundreds = ["", "сто", "двести", ..., "девятьсот"];

const scales = ["", "тысяча", "миллион", "миллиард"];

// ... (полная реализация функции см. по ссылке)

return result.trim();

}

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

  1. Откройте Google Таблицу, выберите Расширения → Apps Script.
  2. Удалите стандартный код и вставьте приведённый выше.
  3. Сохраните проект и закройте редактор.
  4. Теперь в ячейке можно использовать формулу:
    =numberToWordsRUB(A1)

Функция поддерживает рубли и копейки, но для других валют потребуется доработать массив склонений.

Сравнение методов: какой выбрать?

Метод Сложность Поддержка копеек Склонение валют Работает в Excel Online
Встроенные функции Низкая ❌ Нет ❌ Нет ✅ Да
Надстройка "ЧислоПропись" Средняя ✅ Да ✅ Да ❌ Нет
Формула массива Высокая ❌ Нет ❌ Нет ✅ Да
Макрос VBA Высокая ✅ Да ✅ Да ❌ Нет
Google Apps Script Средняя ✅ Да ✅ Да ✅ Да (в Google Таблицах)

Рекомендации по выбору:

  • 🏆 Для бухгалтерии: надстройка "ЧислоПропись" или макрос VBA (максимальная точность).
  • 💻 Для Google Таблиц: Apps Script.
  • Для разовых задач: онлайн-конвертеры.
  • 🔧 Для учебных целей: формула массива (чтобы понять логику).

FAQ: Частые вопросы и ошибки

❓ Почему функция возвращает "#ИМЯ?" вместо результата?

Это означает, что Excel не распознаёт имя функции. Убедитесь, что:

  • Надстройка "ЧислоПропись" установлена и активирована.
  • Файл сохранён с поддержкой макросов (.xlsm).
  • В Google Таблицах скрипт сохранён и опубликован.
❓ Как преобразовать число с копейками (например, 123,45)?

Используйте функции, которые поддерживают дробные части:

  • В надстройке "ЧислоПропись": =ЧислоПропись(A1; "рубль"; "копейка").
  • В макросе VBA: функция NumberToWords автоматически обрабатывает копейки.
  • Вручную: разделите число на целую и дробную части с помощью ЦЕЛОЕ() и ОСТАТ().
❓ Можно ли преобразовать отрицательные числа?

Да, но нужно доработать функцию. Например, в макросе VBA добавьте проверку:

If n < 0 Then

NumberToWords = "минус " & NumberToWords(Abs(n), valuta)

End If

В надстройке "ЧислоПропись" отрицательные числа обрабатываются автоматически.

❓ Почему склонение валют неправильное (например, "2 рубль" вместо "2 рубля")?

Это ошибка в логике склонения. Проверьте:

  • В надстройке: обновите её до последней версии.
  • В макросе: исправьте функцию GetCurrency() (приведён пример кода в статье).
  • В формуле массива: добавьте условия для склонения (например, =ЕСЛИ(И(A1>1; A1<5); "рубля"; ЕСЛИ(ИЛИ(A1=1; ОСТАТ(A1;10)=1); "рубль"; "рублей"))).
❓ Как автоматически обновлять пропись при изменении числа?

Если используете:

  • Формулу: пропись обновляется автоматически.
  • Макрос: добавьте в код обработчик события Worksheet_Change.
  • Надстройку: проверьте настройки автообновления.