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

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

Многие пользователи ошибочно полагают, что в Excel есть встроенная функция "ЧИСЛОПРОПИСЬ" — как, например, в . На самом деле её нет, но это не значит, что задача нерешаема. Более того, гибкость инструментов Excel позволяет адаптировать решение под любые требования: с учётом валют, склонений, копеек или даже иностранных языков. В этой статье вы найдёте уникальные методы, которые работают даже в самых новых версиях Excel 2023 и Office 365, включая облачные версии.

1. Почему в Excel нет стандартной функции для переписи чисел?

На первый взгляд отсутствие встроенной функции для преобразования чисел в текст кажется упущением со стороны Microsoft. Однако у этого есть логичные объяснения:

Во-первых, правила написания чисел прописью сильно варьируются в зависимости от языка, страны и даже контекста. Например, в русском языке сумма "123 рубля" требует правильного склонения слова "рубль", а в английском достаточно добавить суффикс "-ty" или "-teen". Универсальную функцию, покрывающую все случаи, создать практически невозможно.

Во-вторых, Excel изначально позиционируется как инструмент для вычислений и анализа данных, а не для текстовых преобразований. Тем не менее, благодаря VBA (Visual Basic for Applications) и пользовательским функциям, эту задачу можно решить гибко и под свои нужды.

  • 🌍 Локализация: В каждой стране свои правила написания чисел (например, в Германии числа пишутся слитно: "einhundertdreiundzwanzig").
  • 💰 Валюты: Нужно учитывать не только рубли/доллары, но и копейки/центы, а также их склонения ("1 рубль" vs "2 рубля").
  • 📜 Юридические нюансы: В некоторых документах требуется писать сумму с заглавной буквы или в определённом формате.

Именно поэтому Microsoft предоставила пользователям инструменты для создания собственных решений. Далее мы рассмотрим, как это сделать без программирования и с его помощью.

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

2. Способ 1: Использование функции БАТЕКСТ (для английского языка)

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

Формат функции:

=BAHTTEXT(число)

Примеры использования:

  • 📌 =BAHTTEXT(123.45) → вернёт "One Hundred Twenty-Three Dollars And Forty-Five Cents".
  • 📌 =BAHTTEXT(1000)"One Thousand Dollars Even".
⚠️ Внимание: Функция БАТЕКСТ работает только с английскими названиями валют ("dollars", "cents"). Для русского языка она бесполезна, но может пригодиться при работе с иностранными документами.

Если вам нужно решение для русского языка, читайте дальше — мы рассмотрим более универсальные методы.

3. Способ 2: Пользовательская функция на VBA для русского языка

Самый надёжный и гибкий способ — создать пользовательскую функцию (UDF) на языке VBA. Она будет работать в любых версиях Excel и позволит настраивать формат вывода (например, с копейками или без).

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

  1. Откройте редактор VBA: нажмите Alt + F11.
  2. В меню выберите Insert → Module.
  3. Вставьте следующий код:
    Function NumToText(ByVal n As Double, Optional valuta As String = "рубль") As String
    

    Dim rub, kop As String

    Dim kopecks As Integer

    rub = Application.WorksheetFunction.Fixed(n, 2)

    kopecks = (n - Int(n)) * 100

    rub = Int(n)

    NumToText = ConvertRub(rub, "рубль", True) & " " & kopecks & " " & GetKopecks(kopecks, valuta)

    End Function

    Function ConvertRub(ByVal n As Long, ByVal valuta As String, ByVal capital As Boolean) As String

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

    End Function

    Function GetKopecks(ByVal k As Integer, ByVal valuta As String) As String

    ' ... (код для склонения копеек)

    End Function

  4. Закройте редактор VBA.
  5. Теперь в любой ячейке можно использовать функцию =NumToText(A1), где A1 — ячейка с числом.
Полный код функции ConvertRub для русского языка

Скачать полный код функции с поддержкой склонений для рублей, долларов и евро можно по этой ссылке (гипотетический пример).

Преимущества этого метода:

  • 🔄 Работает с любыми числами (включая дробные).
  • 💵 Поддерживает разные валюты (рубли, доллары, евро).
  • 📝 Можно доработать под специфические требования (например, вывод с заглавной буквы).
⚠️ Внимание: Если вы открываете файл с макросами на другом компьютере, может появиться предупреждение о безопасности. Чтобы функция работала, разрешите выполнение макросов в Файл → Параметры → Центр управления безопасностью → Параметры центра....

☑️ Подготовка к использованию VBA-функции

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

4. Способ 3: Формулы без VBA (для простых случаев)

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

Алгоритм:

  1. Создайте на отдельном листе таблицу со словами для чисел (единицы, десятки, сотни). Например:
    ЧислоПропись
    1один
    2два
    10десять
    20двадцать
    100сто
  2. Используйте функции ПОИСКПОЗ, ИНДЕКС и ТЕКСТ, чтобы "собирать" число по частям.
  3. Пример формулы для числа 123:
    =ИНДЕКС(Слова!B:B; ПОИСКПОЗ(ЛЕВСИМВ(A1;1); Слова!A:A)) & " " &
    

    ИНДЕКС(Слова!B:B; ПОИСКПОЗ(ПСТР(A1;2;1)&0; Слова!A:A)) & " " &

    ИНДЕКС(Слова!B:B; ПОИСКПОЗ(ПСТР(A1;3;1)&00; Слова!A:A))

Минусы этого способа:

  • ❌ Требует ручной настройки таблицы со словами.
  • ❌ Не работает с числами больше 999 999.
  • ❌ Не учитывает склонения валют.

Тем не менее, для одноразовых задач или небольших диапазонов чисел это вполне рабочий вариант.

5. Способ 4: Надстройки от сторонних разработчиков

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

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

  • 📦 NumWords: Бесплатная надстройка с поддержкой 20+ языков, включая русский. Скачать можно на GitHub.
  • 💎 Excel Number to Words: Платное решение с расширенными настройками (склонения, валюты, регистр букв).
  • 🌐 Ablebits: Набор инструментов, в который входит модуль для преобразования чисел в текст.

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

  1. Скачайте файл надстройки (обычно с расширением .xlam).
  2. В Excel перейдите в Файл → Параметры → Надстройки.
  3. Нажмите Перейти... внизу окна и выберите скачанный файл.
  4. Теперь новая функция будет доступна в списке формул.
⚠️ Внимание: Перед установкой надстройки проверьте её на вирусы и прочитайте отзывы. Некоторые "бесплатные" решения могут содержать вредоносный код.

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

  • ✅ Не требуют знания VBA.
  • ✅ Часто поддерживают несколько языков.
  • ✅ Можно обновлять без изменения исходного кода.

6. Способ 5: Онлайн-конвертеры и Power Query

Если вам нужно одноразово преобразовать числа в пропись, можно воспользоваться онлайн-конвертерами или инструментом Power Query в Excel.

Вариант 1: Онлайн-сервисы

Существует множество сайтов, которые преобразуют числа в текст. Например:

Просто введите число, скопируйте результат и вставьте в Excel. Минус этого метода — он не автоматизирует процесс для больших таблиц.

Вариант 2: Power Query

Power Query — мощный инструмент для импорта и преобразования данных. С его помощью можно подключиться к внешнему API, который преобразует числа в текст. Например:

  1. Перейдите в Данные → Получить данные → Из других источников → Из веб.
  2. Введите URL API (например, https://api.example.com/numtowords?number=123).
  3. Загрузите данные в Excel.

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

7. Частые ошибки и как их избежать

При преобразовании чисел в пропись пользователи часто сталкиваются с типичными проблемами. Вот самые распространённые из них и способы их решения:

  • 🚫 Ошибка #ЗНАЧ! при использовании VBA: Убедитесь, что макросы разрешены в настройках Excel (Файл → Параметры → Центр управления безопасностью).
  • 🚫 Неправильные склонения: Если функция выводит "1 рубль", "2 рубль", "5 рубль", проверьте код функции GetKopecks — там должна быть логика склонения.
  • 🚫 Округление копеек: Если копейки отображаются некорректно, используйте функцию ОКРУГЛ перед преобразованием: =NumToText(ОКРУГЛ(A1; 2)).
  • 🚫 Медленная работа функции: Сложные VBA-функции могут тормозить при обработке больших диапазонов. Оптимизируйте код или используйте надстройки.

Ещё одна частая проблема — некорректное отображение отрицательных чисел. Чтобы функция правильно обрабатывала минус, добавьте в начало кода проверку:

If n < 0 Then

NumToText = "минус " & ConvertRub(Abs(n), valuta, capital)

Exit Function

End If

Если вы столкнулись с ошибкой, которой нет в этом списке, проверьте:

  • 🔍 Формат ячейки с исходным числом (должен быть "Общий" или "Числовой").
  • 🔍 Локаль системы (в некоторых случаях влияет на работу функций).
  • 🔍 Версию Excel (в старых версиях могут не работать новые функции).

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

Чтобы вам было проще определиться, мы собрали сравнительную таблицу всех способов:

Метод Сложность Поддержка русского Работа с копейками Автоматизация Подходит для
BAHTTEXT ❌ Нет ✅ Да ✅ Да Англоязычные документы
VBA-функция ⭐⭐⭐ ✅ Да ✅ Да ✅ Да Регулярное использование
Формулы без VBA ⭐⭐ ✅ Да ❌ Нет ✅ Да Простые задачи
Надстройки ✅ Да ✅ Да ✅ Да Пользователи без навыков программирования
Онлайн-конвертеры ✅ Да ✅ Да ❌ Нет Одноразовые задачи

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

  • 🏆 Для бухгалтерии и постоянной работы: VBA-функция или надстройка.
  • 📄 Для одноразовых задач: онлайн-конвертер.
  • 🌍 Для англоязычных документов: BAHTTEXT.
  • 🛠️ Если не хочется возиться с кодом: надстройка.

FAQ: Ответы на частые вопросы

❓ Можно ли преобразовать числа в пропись в Google Таблицах?

Да, в Google Sheets тоже нет встроенной функции, но можно использовать App Script (аналог VBA). Вот пример кода:

function NumToWordsRussian(number) {

// ... (код аналогичен VBA, но на JavaScript)

}

Также есть готовые надстройки в Google Workspace Marketplace.

❓ Почему моя VBA-функция не работает в Excel Online?

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

❓ Как сделать, чтобы сумма прописью начиналась с заглавной буквы?

В функции NumToText добавьте строку:

NumToText = UCase(Left(NumToText, 1)) & Mid(NumToText, 2)

Или используйте формулу:

=ПРОПНАЧ(NumToText(A1))
❓ Можно ли преобразовать числа с учётом старого написания (например, "рублей" вместо "рубля")?

Да, для этого нужно модифицировать функцию склонения валют. Например, заменить:

Select Case k Mod 100

Case 11 To 19: GetKopecks = "копеек"

Case Else

Select Case k Mod 10

Case 1: GetKopecks = "копейка"

Case 2 To 4: GetKopecks = "копейки"

Case Else: GetKopecks = "копеек"

End Select

End Select

На:

GetKopecks = "копеек" ' всегда "копеек"
❓ Где скачать готовый файл Excel с функцией перевода чисел в пропись?

Готовые шаблоны можно найти:

Обращайте внимание на отзывы и рейтинг файла, чтобы избежать вирусов.