Как в Excel преобразовать число в сумму прописью — пошаговое руководство с примерами

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

Но как выбрать оптимальный метод? Всё зависит от версии программы, требуемого формата вывода (рубли, доллары, копейки/центы) и уровня ваших навыков. В этой статье мы разберём 5 рабочих способов — от простейших для новичков до продвинутых для опытных пользователей. А ещё вы узнаете, как избежать типичных ошибок при конвертации и адаптировать решение под специфические задачи.

Сразу отметим: универсального решения "из коробки" в Excel нет. Стандартные функции вроде TEXT или NUMBERSTRING (доступна только в новых версиях Excel 365) не покрывают все случаи. Поэтому чаще всего приходится комбинировать инструменты или подключать сторонние надстройки. Но не пугайтесь — мы подробно разберём каждый этап.

═══

1. Встроенная функция NUMBERSTRING (Excel 365 и Excel 2021)

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

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

=NUMBERSTRING(число; [формат]; [язык])

Где:

  • 📌 число — ячейка или значение для конвертации (например, A1 или 1234,56);
  • 📌 формат (необязательно) — способ отображения:
    • 0 — стандартный (например, "одна тысяча двести тридцать четыре");
    • 1 — с валютами (например, "одна тысяча двести тридцать четыре рубля 56 копеек");
    • 2 — для чеков (с заглавной буквы).
  • 📌 язык (необязательно) — код языка (для русского — "ru-RU").

Пример для суммы в рублях:

=NUMBERSTRING(B2; 1; "ru-RU")

Если в ячейке B2 указано 1234,56, результат будет: "одна тысяча двести тридцать четыре рубля пятьдесят шесть копеек".

⚠️ Внимание: Функция NUMBERSTRING работает только в Excel 365 и Excel 2021. В более старых версиях (2019, 2016 и ранее) она недоступна — используйте альтернативные методы из следующих разделов.
📊 Какую версию Excel вы используете?
Excel 365 или 2021
Excel 2019
Excel 2016
Excel 2013 или старше
Не знаю

═══

2. Пользовательская функция на VBA для старых версий Excel

Для пользователей Excel 2019, 2016, 2013 и более ранних версий единственный надёжный способ — создать пользовательскую функцию на VBA. Этот метод требует минимальных навыков программирования, но зато работает стабильно и поддерживает рубли, доллары, евро и другие валюты.

Следуйте пошаговой инструкции:

  1. Откройте редактор VBA: нажмите Alt + F11 или перейдите в Разработчик → Visual Basic (если вкладки Разработчик нет, включите её в Файл → Параметры → Настройка ленты).
  2. В редакторе выберите Insert → Module (Вставка → Модуль).
  3. Скопируйте и вставьте в модуль следующий код:
    Function SumProp(ByVal Summa As Currency, Optional Valuta As String = "руб") As String
    

    Dim Rubl As String, Kop As String, Temp As String

    Dim RubNol As String, KopNol As String, StrSum As String

    Dim kopeiki As Integer

    ' Массивы для преобразования чисел в слова

    Dim Ed(1 To 9) As String, Des(1 To 9) As String, Sotni(1 To 9) As String

    Dim i As Integer, j As Integer, Sum As String

    Ed(1) = "один": Ed(2) = "два": Ed(3) = "три": Ed(4) = "четыре": Ed(5) = "пять"

    Ed(6) = "шесть": Ed(7) = "семь": Ed(8) = "восемь": Ed(9) = "девять"

    Des(1) = "десять": Des(2) = "двадцать": Des(3) = "тридцать": Des(4) = "сорок"

    Des(5) = "пятьдесят": Des(6) = "шестьдесят": Des(7) = "семьдесят"

    Des(8) = "восемьдесят": Des(9) = "девяносто"

    Sotni(1) = "сто": Sotni(2) = "двести": Sotni(3) = "триста": Sotni(4) = "четыреста"

    Sotni(5) = "пятьсот": Sotni(6) = "шестьсот": Sotni(7) = "семьсот"

    Sotni(8) = "восемьсот": Sotni(9) = "девятьсот"

    ' Округление копеек

    kopeiki = Round((Summa - Int(Summa)) * 100, 0)

    ' Преобразование рублей

    If Int(Summa) = 0 Then

    Rubl = "ноль"

    Else

    Temp = Str(Int(Summa))

    For i = 1 To Len(Temp)

    If Mid(Temp, i, 1) <> " " Then

    Sum = Sum & Mid(Temp, i, 1)

    End If

    Next i

    Temp = StrReverse(Sum)

    For i = 1 To Len(Temp) Step 3

    j = j + 1

    Select Case j

    Case 1: Rubl = Rubl & Oborot(Mid(Temp, i, 3), 0)

    Case 2: Rubl = Rubl & Oborot(Mid(Temp, i, 3), 1)

    Case 3: Rubl = Rubl & Oborot(Mid(Temp, i, 3), 2)

    End Select

    Next i

    Temp = StrReverse(Rubl)

    If Left(Temp, 1) = " " Then Temp = Mid(Temp, 2)

    Rubl = Temp

    End If

    ' Преобразование копеек

    If kopeiki = 0 Then

    Kop = "00"

    Else

    Kop = Right("0" & kopeiki, 2)

    End If

    ' Формирование строки с учётом валюты

    Select Case Valuta

    Case "руб", "RUB"

    If kopeiki = 0 Then

    SumProp = Rubl & " руб. " & Kop & " коп."

    Else

    SumProp = Rubl & " руб. " & Kop & " коп."

    End If

    Case "долл", "USD", "$"

    SumProp = Rubl & " долл. " & Kop & " цент."

    Case "евро", "EUR", "€"

    SumProp = Rubl & " евро " & Kop & " цент."

    Case Else

    SumProp = Rubl & " " & Valuta & " " & Kop & "/100"

    End Select

    ' Обработка единиц для рублей

    If Right(Rubl, 4) = "один" And Valuta = "руб" Then

    SumProp = Left(SumProp, Len(SumProp) - 7) & "рубль " & Kop & " коп."

    ElseIf (Right(Rubl, 5) = "два " Or Right(Rubl, 5) = "три " Or Right(Rubl, 5) = "четыр") And Valuta = "руб" Then

    SumProp = Left(SumProp, Len(SumProp) - 7) & "рубля " & Kop & " коп."

    End If

    End Function

    Function Oborot(Temp As String, Razr As Integer) As String

    Dim Ed(1 To 9) As String, Des(1 To 9) As String, Sotni(1 To 9) As String

    Dim i As Integer, j As Integer, Sum As String

    Ed(1) = "один": Ed(2) = "два": Ed(3) = "три": Ed(4) = "четыре": Ed(5) = "пять"

    Ed(6) = "шесть": Ed(7) = "семь": Ed(8) = "восемь": Ed(9) = "девять"

    Des(1) = "десять": Des(2) = "двадцать": Des(3) = "тридцать": Des(4) = "сорок"

    Des(5) = "пятьдесят": Des(6) = "шестьдесят": Des(7) = "семьдесят"

    Des(8) = "восемьдесят": Des(9) = "девяносто"

    Sotni(1) = "сто": Sotni(2) = "двести": Sotni(3) = "триста": Sotni(4) = "четыреста"

    Sotni(5) = "пятьсот": Sotni(6) = "шестьсот": Sotni(7) = "семьсот"

    Sotni(8) = "восемьсот": Sotni(9) = "девятьсот"

    Select Case Razr

    Case 0: RazrName = " "

    Case 1: RazrName = " тысяча "

    Case 2: RazrName = " миллион "

    End Select

    If Len(Temp) = 3 And Mid(Temp, 1, 1) <> "0" Then

    Oborot = Sotni(Mid(Temp, 1, 1)) & " "

    If Mid(Temp, 2, 1) = "1" Then

    Oborot = Oborot & Des(1) & " "

    If Mid(Temp, 3, 1) = "0" Then Exit Function

    Else

    If Mid(Temp, 2, 1) <> "0" Then Oborot = Oborot & Des(Mid(Temp, 2, 1)) & " "

    If Mid(Temp, 3, 1) <> "0" Then Oborot = Oborot & Ed(Mid(Temp, 3, 1)) & RazrName

    End If

    ElseIf Len(Temp) = 3 And Mid(Temp, 1, 1) = "0" Then

    If Mid(Temp, 2, 1) = "1" Then

    Oborot = Des(1) & " "

    If Mid(Temp, 3, 1) = "0" Then Exit Function

    Else

    If Mid(Temp, 2, 1) <> "0" Then Oborot = Des(Mid(Temp, 2, 1)) & " "

    If Mid(Temp, 3, 1) <> "0" Then Oborot = Oborot & Ed(Mid(Temp, 3, 1)) & RazrName

    End If

    ElseIf Len(Temp) = 2 Then

    If Mid(Temp, 1, 1) = "1" Then

    Oborot = Des(1) & " "

    If Mid(Temp, 2, 1) = "0" Then Exit Function

    Else

    If Mid(Temp, 1, 1) <> "0" Then Oborot = Des(Mid(Temp, 1, 1)) & " "

    If Mid(Temp, 2, 1) <> "0" Then Oborot = Oborot & Ed(Mid(Temp, 2, 1)) & RazrName

    End If

    ElseIf Len(Temp) = 1 Then

    If Mid(Temp, 1, 1) <> "0" Then Oborot = Ed(Mid(Temp, 1, 1)) & RazrName

    End If

    End Function

  4. Закройте редактор VBA. Теперь функция SumProp доступна в Excel как стандартная.

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

=SumProp(B2; "руб")

Где B2 — ячейка с числом. Для долларов используйте =SumProp(B2; "USD").

Убедитесь, что макросы разрешены (Файл → Параметры → Центр управления безопасностью)

Сохраните файл как *.xlsm (с поддержкой макросов)

Проверьте регион ячейки (должен быть "Русский")

Тестируйте функцию на небольших суммах (например, 100, 101, 1500)-->

⚠️ Внимание: Если при вводе функции Excel выдаёт ошибку #ИМЯ?, проверьте:
  • 🔹 Правильно ли скопирован код (особенно кавычки и регистр);
  • 🔹 Сохранён ли файл в формате .xlsm (не .xlsx);
  • 🔹 Разрешены ли макросы в настройках безопасности.

═══

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

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

Плюсы метода:

  • 🔹 Не требует знаний VBA;
  • 🔹 Работает во всех версиях Excel;
  • 🔹 Поддерживает несколько валют и языков;
  • 🔹 Обновляется разработчиком.

Минусы:

  • 🔸 Некоторые надстройки платные;
  • 🔸 Требуется установка (может блокироваться корпоративными политиками безопасности).

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

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

После установки в списке функций появится =ЧислоПрописью(). Пример:

=ЧислоПрописью(B2; "RUR")
Где скачать бесплатные надстройки?

Бесплатные аналоги можно найти на форумах, например:

🔹 ExcelWorld (раздел "Надстройки")

🔹 Планета Excel (форум, тема "Число прописью")

🔹 GitHub (поиск по запросу "Excel number to words Russian")

Внимание: скачивайте файлы только с проверенных источников, чтобы избежать вирусов!

═══

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

Если вам нужно преобразовать только целые числа без копеек/центов (например, для номеров или количества), можно обойтись комбинацией стандартных функций Excel: ИНДЕКС, ПОИСКПОЗ и ТЕКСТ. Этот метод не идеален, но подходит для ограниченных задач.

Пример для чисел от 0 до 999:

  1. Создайте на листе таблицу соответствия чисел и их текстового вида (см. таблицу ниже).
  2. Используйте формулу:
    =ЕСЛИ(B2=0; "ноль";
    

    ТЕКСТ(ЦЕЛОЕ(B2/100);) & " " & ИНДЕКС($A$2:$A$10; ПОИСКПОЗ(ОСТАТ(B2;100); $B$2:$B$100; 0)))

Число (0–9) Прописью Число (10–99) Прописью
0 ноль 10 десять
1 один 20 двадцать
2 два 30 тридцать
3 три 40 сорок
4 четыре 50 пятьдесят

Для чисел >999 придётся добавлять вложенные формулы для тысяч, миллионов и т. д., что делает метод громоздким. Поэтому мы рекомендуем его только для ограниченных диапазонов (например, для номеров документов).

⚠️ Внимание: Этот способ не учитывает склонение валют (рубль/рубля/рублей) и не работает с дробными числами. Для финансовых документов используйте VBA или надстройки.

═══

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

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

Способ 1: Онлайн-сервисы

  • 🌐 Num2Word — поддерживает рубли, доллары, евро;
  • 🌐 Calculator888 — с настройкой валюты и падежей;
  • 🌐 TextFromNumbers — для английских чисел (dollars, pounds).

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

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

Способ 2: Power Query

Если у вас Excel 2016 или новее, можно автоматизировать процесс с помощью Power Query:

  1. Выделите данные и перейдите в Данные → Из таблицы/диапазона.
  2. В редакторе Power Query добавьте пользовательский столбец с формулой на языке M:
    = Number.ToText([YourColumn], "ru-RU")

    (замените YourColumn на имя вашего столбца).

  3. Загрузите данные обратно в Excel.
(amount as number) as text =>

let

rubles = Number.IntegerDivide(amount, 1),

kopecks = Number.Mod(amount, 1) * 100,

rublesText = Number.ToText(rubles, "ru-RU"),

kopecksText = Number.ToText(Number.Round(kopecks), "ru-RU"),

result = rublesText & " руб. " & kopecksText & " коп."

in

result

Этот код разделит сумму на рубли и копейки и сконвертирует их отдельно.-->

═══

6. Типичные ошибки и как их избежать

Даже с автоматизированными методами пользователи сталкиваются с проблемами. Вот TOP-5 ошибок и способы их решения:

  • 🔴 Ошибка #ИМЯ? в VBA

    Причина: опечатка в коде или файл не сохранён как .xlsm.

    Решение: проверьте регистр в названии функции (SumProp, а не sumprop) и формат файла.

  • 🔴 Неправильное склонение валют

    Причина: функция не учитывает правила русского языка (1 рубль, 2 рубля, 5 рублей).

    Решение: используйте VBA-код из раздела 2 — он корректно обрабатывает склонения.

  • 🔴 Копейки отображаются как 00

    Причина: число в ячейке целое (например, 100 вместо 100,50).

    Решение: форматируйте ячейку как числовой формат с 2 десятичными знаками.

  • 🔴 Надстройка не работает

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

    Решение: временно отключите другие надстройки в Файл → Параметры → Надстройки.

  • 🔴 Медленная работа при больших данных

    Причина: VBA-функции пересчитываются при каждом изменении листа.

    Решение: преобразуйте результаты в значения (Копировать → Специальная вставка → Значения).

🔹 0 (ноль рублей)

🔹 1,01 (один рубль одна копейка)

🔹 100,50 (сто рублей пятьдесят копеек)

🔹 1234,99 (одна тысяча двести тридцать четыре рубля девяносто девять копеек)

Это поможет выявить ошибки склонения или округления.-->

═══

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

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

Метод Поддерживаемые версии Excel Требует VBA? Поддержка валют Скорость работы Сложность настройки
NUMBERSTRING 365, 2021 ❌ Нет ✅ Рубли, доллары, евро ⚡ Мгновенно ⭐ Очень просто
Пользовательская VBA-функция 2019, 2016, 2013 ✅ Да ✅ Любые (настраивается) 🐢 Медленнее при больших данных ⭐⭐ Средняя
Надстройка Все версии ❌ Нет ✅ Зависит от надстройки ⚡ Быстро ⭐ Очень просто
Формулы без VBA Все версии ❌ Нет ❌ Только рубли (без копеек) ⚡ Быстро ⭐⭐⭐ Сложно (много вложенных функций)
Power Query 2016, 2019, 365 ❌ Нет ✅ Настраивается ⚡ Быстро ⭐⭐ Средняя

Наш совет:

  • 🔹 Для Excel 365/2021 используйте NUMBERSTRING — это самый простой и надёжный способ.
  • 🔹 Для Excel 2019/2016 с небольшими данными подойдёт VBA-функция.
  • 🔹 Если нужно одноразовое преобразование, воспользуйтесь онлайн-конвертером.
  • 🔹 Для корпоративных решений с большими объёмами данных выбирайте надстройки.

═══

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

Можно ли преобразовать сумму прописью на английском в Excel?

Да. В Excel 365 используйте функцию =NUMBERSTRING(число; 1; "en-US"). Для старых версий найдите VBA-код с поддержкой английского (например, на ExcelForum) или используйте надстройки вроде SpellNumber.

Почему функция возвращает "ноль рублей 00 копеек" для пустой ячейки?

Это стандартное поведение. Чтобы избежать этого, оберните функцию в ЕСЛИ:

=ЕСЛИ(B2=""; ""; SumProp(B2; "руб"))

Как преобразовать число прописью в Google Таблицах?

В Google Sheets нет встроенной функции, но можно:

  1. Использовать App Script (аналог VBA);
  2. Установить надстройку "Number to Words" из магазина;
  3. Воспользоваться формулой с IMPORTRANGE и внешним сервисом.

Можно ли сделать, чтобы первая буква была заглавной?

Да. В VBA-функции добавьте строку:

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

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

=ПРОПНАЧ(SumProp(B2; "руб"))

Как преобразовать отрицательные числа?

Добавьте в VBA-функцию проверку знака:

If Summa < 0 Then

SumProp = "минус " & SumProp(Abs(Summa), Valuta)

End If

Или используйте ЕСЛИ в Excel:

=ЕСЛИ(B2<0; "минус " & SumProp(ABS(B2); "руб"); SumProp(B2; "руб"))