Вы когда-нибудь сталкивались с необходимостью оформить в Excel документ, где цифровые значения должны дублироваться прописью? Например, в договорах, актах, платежных поручениях или бухгалтерских отчетах суммы указываются и цифрами, и словами. Вручную переписывать каждое число — утомительно и чревато ошибками. К счастью, в Excel есть несколько способов автоматизировать этот процесс, и сегодня мы разберем их все: от простых формул до продвинутых макросов.
В этой статье вы найдете пошаговые инструкции для разных версий Excel (включая Excel 365, 2019, 2016 и более ранние), а также узнаете, как адаптировать решения под русский, украинский или другие языки. Мы рассмотрим не только стандартные методы, но и малоизвестные приемы, которые сэкономят вам часы работы. Например, вы научитесь преобразовывать 1 234,56 ₽ в текст вида "Одна тысяча двести тридцать четыре рубля 56 копеек" — и все это без ручного ввода!
Почему нельзя просто ввести сумму прописью вручную?
На первый взгляд может показаться, что проще один раз напечатать сумму словами и скопировать ее в нужные ячейки. Однако такой подход таит в себе несколько подводных камней:
- 🔄 Ошибки при копировании: даже опытные пользователи иногда ошибаются, особенно при работе с большими числами (например,
1 000 005легко превращается в "один миллион пять рублей" вместо "один миллион пять рублей"). - 📊 Потеря динамичности: если исходная сумма изменится (например, из-за корректировки цены или количества), пропись придется переписывать заново.
- ⚖️ Юридические риски: в бухгалтерских документах расхождение между цифровым и текстовым значением может стать основанием для признания документа недействительным.
- ⏳ Потеря времени: в крупных таблицах с сотнями строк ручной ввод превращается в многочасовую рутину.
Автоматизация этого процесса не только избавляет от рутинной работы, но и гарантирует 100% совпадение между числовым и текстовым представлением суммы. Далее мы рассмотрим все доступные способы — от самых простых до самых гибких.
Способ 1: Использование функции ЧИСЛОТЕКСТ (для русскоязычных версий Excel)
Если у вас установлена русскоязычная версия Excel (или добавлен пакет языковой поддержки для русского), то самый простой способ — воспользоваться встроенной функцией =ЧИСЛОТЕКСТ(). Она преобразует числа в текстовое представление на русском языке, включая валюту.
Формат функции:
=ЧИСЛОТЕКСТ(число; [формат])
Где формат — необязательный аргумент, который определяет стиль отображения. Для рублей и копеек подходит значение 1 (по умолчанию) или "Р".
- 💰 Пример 1:
=ЧИСЛОТЕКСТ(1234,56; "Р")→ вернет "Одна тысяча двести тридцать четыре рубля 56 копеек". - 💵 Пример 2:
=ЧИСЛОТЕКСТ(1000; "Д")→ вернет "Одна тысяча долларов" (для долларов США). - 📌 Пример 3:
=ЧИСЛОТЕКСТ(500; 0)→ вернет "Пятьсот" (без указания валюты).
Обратите внимание, что функция ЧИСЛОТЕКСТ доступна только в русскоязычных версиях Excel. Если у вас англоязычная версия, этот метод не сработает — переходите к следующему способу.
⚠️ Внимание: Функция ЧИСЛОТЕКСТ может неправильно склонять некоторые числительные (например, "два рубля" вместо "два рубля" для сумм от 2 до 4). Всегда проверяйте результат для критически важных документов!
☑️ Подготовка к использованию ЧИСЛОТЕКСТ
Способ 2: Пользовательская функция на VBA для любых версий Excel
Если функция ЧИСЛОТЕКСТ недоступна (например, в англоязычной версии Excel), можно создать собственную функцию с помощью VBA (Visual Basic for Applications). Этот метод работает во всех версиях Excel и позволяет гибко настраивать формат вывода.
Вот пошаговая инструкция:
- Нажмите
Alt + F11, чтобы открыть редактор VBA. - В меню выберите
Insert → Module(Вставка → Модуль). - Скопируйте и вставьте в модуль следующий код:
Function RublesProp(ByVal MyNumber As Currency) As String
Dim RUB As Variant, Kop As Variant, Temp As String
RUB = Application.WorksheetFunction.Floor(MyNumber, 1)
Kop = (MyNumber - RUB) * 100
Temp = Propis(RUB) & " рубль"
' Склонение слова "рубль"
If RUB Mod 100 >= 11 And RUB Mod 100 <= 19 Then
Temp = Temp & "ей"
Else
Select Case RUB Mod 10
Case 1: Temp = Temp & "ь"
Case 2, 3, 4: Temp = Temp & "я"
Case Else: Temp = Temp & "ей"
End Select
End If
' Добавление копеек
If Kop > 0 Then
Temp = Temp & " " & Propis(Kop) & " копеек"
' Склонение слова "копейка"
If Kop Mod 100 >= 11 And Kop Mod 100 <= 19 Then
Temp = Temp & "ек"
Else
Select Case Kop Mod 10
Case 1: Temp = Temp & "а"
Case 2, 3, 4: Temp = Temp & "и"
Case Else: Temp = Temp & "ек"
End Select
End If
End If
RublesProp = Application.WorksheetFunction.Proper(Temp)
End Function
Function Propis(ByVal MyNumber As Variant) As String
Dim StrNum As String, Num As Integer, Txt As String, i As Integer
Dim Ones(1 To 9) As String, Teens(1 To 9) As String, Tens(1 To 9) As String
Dim Hundreds(1 To 9) As String, Scales(1 To 4) As String
' Массивы для числительных
Ones(1) = "один": Ones(2) = "два": Ones(3) = "три": Ones(4) = "четыре"
Ones(5) = "пять": Ones(6) = "шесть": Ones(7) = "семь"
Ones(8) = "восемь": Ones(9) = "девять"
Teens(1) = "десять": Teens(2) = "одиннадцать": Teens(3) = "двенадцать"
Teens(4) = "тринадцать": Teens(5) = "четырнадцать": Teens(6) = "пятнадцать"
Teens(7) = "шестнадцать": Teens(8) = "семнадцать": Teens(9) = "восемнадцать"
Tens(1) = "десять": Tens(2) = "двадцать": Tens(3) = "тридцать"
Tens(4) = "сорок": Tens(5) = "пятьдесят": Tens(6) = "шестьдесят"
Tens(7) = "семьдесят": Tens(8) = "восемьдесят": Tens(9) = "девяносто"
Hundreds(1) = "сто": Hundreds(2) = "двести": Hundreds(3) = "триста"
Hundreds(4) = "четыреста": Hundreds(5) = "пятьсот"
Hundreds(6) = "шестьсот": Hundreds(7) = "семьсот"
Hundreds(8) = "восемьсот": Hundreds(9) = "девятьсот"
Scales(1) = "тысяч": Scales(2) = "миллион": Scales(3) = "миллиард"
Scales(4) = "триллион"
StrNum = CStr(Int(MyNumber))
If MyNumber = 0 Then Propis = "ноль": Exit Function
' Обработка чисел по разрядам
For i = 1 To Len(StrNum) Step 3
Num = Val(Mid(StrNum, i, 3))
If Num > 0 Then
Txt = ConvertLessThanOneThousand(Num, Ones, Teens, Tens, Hundreds) & " "
If (Len(StrNum) - i) \ 3 + 1 >= 2 Then
Txt = Txt & Choose((Len(StrNum) - i) \ 3 + 1, Scales(1), Scales(2), Scales(3), Scales(4)) & " "
End If
Propis = Txt & Propis
End If
Next i
Propis = Trim(Propis)
End Function
Function ConvertLessThanOneThousand(ByVal Num As Integer, Ones() As String, Teens() As String, Tens() As String, Hundreds() As String) As String
Dim Txt As String
If Num >= 100 Then
Txt = Hundreds(Num \ 100) & " "
Num = Num Mod 100
End If
If Num >= 20 Then
Txt = Txt & Tens(Num \ 10)
If Num Mod 10 > 0 Then Txt = Txt & " " & Ones(Num Mod 10)
ElseIf Num >= 10 Then
Txt = Txt & Teens(Num - 9)
ElseIf Num > 0 Then
Txt = Txt & Ones(Num)
End If
ConvertLessThanOneThousand = Txt
End Function
После вставки кода:
- Закройте редактор VBA.
- Теперь в любой ячейке можно использовать функцию
=RublesProp(А1), гдеА1— ячейка с числом.
Пример: если в ячейке A1 указано 1234,56, то формула =RublesProp(A1) вернет "Одна тысяча двести тридцать четыре рубля пятьдесят шесть копеек".
⚠️ Внимание: При первом использовании макросов Excel может заблокировать их выполнение по соображениям безопасности. Чтобы разрешить макросы, перейдите в Файл → Параметры → Центр управления безопасностью → Параметры центра управления безопасностью → Параметры макросов и выберите "Включить все макросы" (не рекомендуется для файлов из ненадежных источников).
Способ 3: Использование надстройки "Прописью" (для тех, кто не хочет кодировать)
Если работа с VBA кажется сложной, можно воспользоваться готовыми надстройками. Одна из самых популярных — "Прописью" от Plug-in Team. Она бесплатна для личного использования и поддерживает несколько языков, включая русский и украинский.
Как установить и использовать:
- 📥 Скачайте надстройку с официального сайта (например, plug-in-team.ru).
- 🔧 Установите файлы
.xlamили.xlsm(следуйте инструкции установщика). - 🔄 Активируйте надстройку в Excel: перейдите в
Файл → Параметры → Надстройки → Управление надстройками Excel → Перейтии поставьте галочку рядом с "Прописью". - ✏️ Используйте функцию
=PROPIS(A1; "RUR"), гдеA1— ячейка с числом, а"RUR"— код валюты (доступны также"USD","EUR","UAH").
Преимущества этого метода:
- ✅ Не требует знания VBA.
- ✅ Поддерживает несколько валют и языков.
- ✅ Автоматически склоняет числительные (например, "один рубль", "два рубля", "пять рублей").
- ✅ Регулярно обновляется (исправляются ошибки склонения).
| Валюта | Код в функции | Пример вывода |
|---|---|---|
| Рубли | "RUR" |
"Одна тысяча рублей" |
| Доллары | "USD" |
"One thousand dollars" |
| Евро | "EUR" |
"Eintausend Euro" |
| Гривны | "UAH" |
"Одна тисяча гривень" |
Если надстройка не подходит (например, из-за корпоративных ограничений), рассмотрите альтернативы: "NumToText" или "SpellNumber" — они работают по схожему принципу.
Как удалить надстройку, если она не нужна?
Чтобы удалить надстройку, перейдите в Файл → Параметры → Надстройки, выберите ненужную надстройку и нажмите "Перейти". В открывшемся окне снимите галочку рядом с названием надстройки и подтвердите удаление. После этого можно удалить файлы надстройки с жесткого диска.
Способ 4: Формулы без VBA (для англоязычного Excel)
Если у вас англоязычная версия Excel и вы не хотите использовать VBA, можно обойтись комбинацией стандартных функций. Этот метод более громоздкий, но работает без дополнительных инструментов.
Пример формулы для преобразования числа в текст (до 999 999):
=CHOSE(MID(TEXT(A1,"000000"),1,1)+1,"","сто","двести","триста","четыреста","пятьсот","шестьсот","семьсот","восемьсот","девятьсот") &
" " &
CHOSE(MID(TEXT(A1,"000000"),2,1)+1,"","десять","двадцать","тридцать","сорок","пятьдесят","шестьдесят","семьдесят","восемьдесят","девяносто") &
" " &
CHOSE(MID(TEXT(A1,"000000"),3,1)+1,"","один","два","три","четыре","пять","шесть","семь","восемь","девять") &
" тысяча " &
CHOSE(MID(TEXT(A1,"000000"),4,1)+1,"","","сто","двести","триста","четыреста","пятьсот","шестьсот","семьсот","восемьсот","девятьсот") &
" " &
CHOSE(MID(TEXT(A1,"000000"),5,1)+1,"","десять","двадцать","тридцать","сорок","пятьдесят","шестьдесят","семьдесят","восемьдесят","девяносто") &
" " &
CHOSE(MID(TEXT(A1,"000000"),6,1)+1,"","один","два","три","четыре","пять","шесть","семь","восемь","девять")
Эта формула работает только для целых чисел от 1 до 999 999 и не учитывает копейки или доллары. Для более сложных случаев потребуется расширять ее или комбинировать с другими функциями (например, =LEFT() и =RIGHT() для отделения рублей и копеек).
⚠️ Внимание: Такие формулы сложно поддерживать — при изменении логики (например, добавлении новой валюты) придется переписывать всю конструкцию. Используйте их только для разовых задач!
Способ 5: Онлайн-конвертеры и внешние сервисы
Если вам нужно преобразовать суммы прописью однократно (например, для одного документа), можно воспользоваться онлайн-сервисами. Они не требуют установки и работают прямо в браузере.
Популярные сервисы:
- 🌐 Num2Word — поддерживает рубли, доллары, евро и гривны, а также склонение по падежам.
- 🌐 Calc.ru — простой интерфейс с возможностью копирования результата.
- 🌐 TextFromNumber — англоязычный сервис, но поддерживает русский язык.
Как использовать:
- Откройте сервис в браузере.
- Введите сумму в числовом формате (например,
1234.56). - Выберите валюту (рубли, доллары и т. д.).
- Скопируйте полученный текст прописью и вставьте в Excel.
Преимущества онлайн-сервисов:
- ✅ Не требуют установки.
- ✅ Часто поддерживают дополнительные опции (например, выбор падежа: "один рубль", "одного рубля", "одному рублю").
- ✅ Подходят для разовых задач.
Недостатки:
- ❌ Не подходят для автоматизации (придется вводить каждое число вручную).
- ❌ Риск утечки конфиденциальных данных (если вы работаете с суммами из коммерческих документов).
- ❌ Зависимость от интернета.
Типичные ошибки и как их избежать
При преобразовании чисел в текст прописью пользователи часто сталкиваются с типичными проблемами. Вот самые распространенные из них и способы их решения:
| Ошибка | Причина | Решение |
|---|---|---|
| Неправильное склонение ("два рубля" вместо "два рубля") | Ошибка в алгоритме или надстройке | Используйте проверенные надстройки (например, "Прописью") или исправляйте код VBA вручную |
Функция ЧИСЛОТЕКСТ возвращает #ИМЯ? |
Англоязычная версия Excel | Используйте VBA или надстройки |
| Сумма прописью отображается с ошибками (например, "одиннадцать" вместо "одиннадцать") | Опечатка в коде VBA или формуле | Проверьте массивы числительных в коде (см. Способ 2) |
| Макрос не работает после сохранения файла | Файл сохранен в формате .xlsx (без поддержки макросов) |
Сохраните файл в формате .xlsm (с поддержкой макросов) |
Еще одна частая проблема — отсутствие поддержки копеек в некоторых решениях. Например, функция ЧИСЛОТЕКСТ по умолчанию может игнорировать дробную часть. Чтобы этого избежать, используйте формат с указанием валюты:
=ЧИСЛОТЕКСТ(A1; "Р")
Если вы работаете с отрицательными суммами, добавьте проверку знака в формулу или макрос. Например, в VBA можно модифицировать функцию RublesProp так:
If MyNumber < 0 Then
RublesProp = "минус " & RublesProp(Abs(MyNumber))
Exit Function
End If
FAQ: Ответы на частые вопросы
Можно ли преобразовать сумму прописью в Google Таблицах?
Да, в Google Таблицах есть аналогичная функция: =NUMBERSTRING(число; "RUR"). Она поддерживает рубли, доллары и евро. Например, =NUMBERSTRING(1234.56; "RUR") вернет "одна тысяча двести тридцать четыре рубля пятьдесят шесть копеек".
Обратите внимание, что в Google Таблицах числительные пишутся с маленькой буквы и склоняются по-разному (например, "два рубля" вместо "два рубля").
Как сделать, чтобы сумма прописью автоматически обновлялась при изменении числа?
Если вы используете формулу (например, =ЧИСЛОТЕКСТ(A1) или пользовательскую функцию VBA), то текст будет обновляться автоматически при изменении исходного числа. Если же вы ввели текст прописью вручную или скопировали из онлайн-сервиса, придется обновлять его самостоятельно.
Чтобы проверить, является ли ячейка формулой, выделите ее и посмотрите в строку формул (она находится над таблицей). Если там отображается =..., то текст обновляется автоматически.
Почему в некоторых случаях выводится "один рубль", а в других — "один рублей"?
Это ошибка склонения, которая возникает из-за несовершенства алгоритмов в стандартных функциях или надстройках. Чтобы исправить это, можно:
- Использовать проверенные надстройки (например, "Прописью"), где склонение реализовано корректно.
- Исправить код VBA вручную (см. блок склонения в Способе 2).
- Добавить дополнительную проверку для чисел 1, 2, 3, 4 и т. д.
Например, в коде VBA можно добавить такое правило:
If RUB Mod 100 >= 11 And RUB Mod 100 <= 19 Then
Temp = Temp & "ей"
Else
Select Case RUB Mod 10
Case 1: Temp = Temp & "ь"
Case 2, 3, 4: Temp = Temp & "я"
Case Else: Temp = Temp & "ей"
End Select
End If
Можно ли преобразовать сумму прописью на украинском или другом языке?
Да, для этого нужно:
- В VBA: заменить массивы числительных (например,
Ones(),Tens()) на украинские эквиваленты и скорректировать правила склонения. - В надстройках: выбрать соответствующий язык (например, в "Прописью" поддерживается украинский — код валюты
"UAH"). - В онлайн-сервисах: выбрать нужный язык в настройках.
Пример массива для украинского языка:
Ones(1) = "один": Ones(2) = "два": Ones(3) = "три": Ones(4) = "чотири"
Ones(5) = "п'ять": Ones(6) = "шість": Ones(7) = "сім"
Ones(8) = "вісім": Ones(9) = "дев'ять"
Как добавить сумму прописью в Word из Excel?
Есть два способа:
- Копирование результата: Преобразуйте сумму прописью в Excel (например, с помощью функции
=ЧИСЛОТЕКСТ(A1)), скопируйте полученный текст и вставьте его в Word. - Связывание документов:
- В Excel выделите ячейку с текстом прописью и скопируйте ее (
Ctrl+C). - В Word выберите
Главная → Вставить → Специальная вставка → Связать → Текст. - Теперь при изменении суммы в Excel текст в Word будет обновляться автоматически (при открытии файла).
- В Excel выделите ячейку с текстом прописью и скопируйте ее (
Для автоматизации этого процесса можно также использовать макросы в Word, которые будут pulling данные из Excel.