Преобразование чисел в текстовый формат — задача, с которой сталкиваются бухгалтеры, финансовые аналитики и даже обычные пользователи при оформлении договоров или квитанций. В Microsoft Excel нет встроенной функции для автоматического перевода цифр в слова, но это не значит, что задача невыполнима. Существует как минимум 5 рабочих способов получить результат — от ручного ввода до полностью автоматизированных решений с помощью VBA-макросов и сторонних надстроек.
Многие ошибочно считают, что для этой операции обязательно нужен опыт программирования. На самом деле даже пользователь с базовыми навыками работы в Excel сможет настроить автоматическое отображение чисел прописью, используя готовые формулы или бесплатные дополнения. Главное — понимать, какой именно формат вам нужен: простая расшифровка числа (например, "сто двадцать три") или финансовый формат с валютами ("сто двадцать три рубля 50 копеек").
В этой статье мы разберём все актуальные методы, включая их плюсы и минусы, а также дадим готовые шаблоны для самых распространённых сценариев. Вы узнаете, как:
Прежде чем переходить к практике, важно уточнить один нюанс: Excel оперирует числами и текстом по-разному. Число 123 и текст "сто двадцать три" для программы — абсолютно разные типы данных. Это означает, что после преобразования вы не сможете использовать результат в математических формулах (например, сложить два текстовых значения). Зато такой текст идеально подходит для печати в документах или отчётах.
Способ 1: Использование встроенных функций Excel (без VBA)
Если вам нужно одноразово преобразовать небольшое количество чисел, можно обойтись без программирования. Для этого подойдёт комбинация стандартных функций ТЕКСТ, ПОИСКПОЗ и ВЫБОР. Метод не самый гибкий, но работает во всех версиях Excel, включая онлайн-редактор.
Пример формулы для чисел от 0 до 999:
=ВЫБОР(ЦЕЛОЕ(A1/100);"";"сто";"двести";"триста";"четыреста";"пятьсот";"шестьсот";"семьсот";"восемьсот";"девятьсот") & " " &
ВЫБОР(ЦЕЛОЕ(ОСТАТ(A1;100)/10);"";"десять";"двадцать";"тридцать";"сорок";"пятьдесят";"шестьдесят";"семьдесят";"восемьдесят";"девяносто") & " " &
ВЫБОР(ОСТАТ(A1;10);"";"один";"два";"три";"четыре";"пять";"шесть";"семь";"восемь";"девять")
Эта формула разбивает число на сотни, десятки и единицы, а затем "склеивает" их в текст. Обратите внимание: она не учитывает падежи (например, "один рубль" vs "одного рубля") и работает только с целыми числами. Для дробных значений (копейки) потребуется отдельная логика.
⚠️ Внимание: При копировании формулы в ячейки с числами >999 Excel выдаст ошибку #ЗНАЧ!. Чтобы обработать большие числа, нужно расширять логику для тысяч, миллионов и т.д., что делает метод громоздким.
- ✅ Плюсы: Не требует установки дополнений, работает в Excel Online.
- ❌ Минусы: Ограниченный диапазон чисел, нет поддержки валют и падежей.
- 🔧 Когда использовать: Для разовых задач с числами до 1000 без требований к формату.
Способ 2: Готовые надстройки для Excel (самый простой вариант)
Если вам нужно регулярно преобразовывать числа в слова с учётом рублей, долларов или евро, лучшее решение — установить специализированную надстройку. Такие инструменты автоматически обрабатывают падежи, копейки и даже поддерживают разные языки.
Топ-3 бесплатных надстройки для русскоязычных пользователей:
| Название | Особенности | Ссылка на скачивание |
|---|---|---|
| NumWord | Поддерживает рубли/доллары, копейки/центы, правильные падежи. Работает в Excel 2010-2023. | Скачать |
| ЧислоПрописью | Простой интерфейс, возможность настройки формата вывода (с валютами или без). | Скачать |
| RubToStr | Специализируется на финансовых документах (договора, акты, счета). | Скачать |
Установка надстройки занимает не больше минуты:
- Скачайте файл с расширением
.xlam. - Откройте Excel, перейдите в
Файл → Параметры → Надстройки. - Внизу окна выберите
Перейти...→Обзори укажите путь к скачанному файлу. - Готово! Новая функция (например,
=ЧИСЛОПРОПИСЬЮ(A1)) появится в списке.
Пример использования надстройки NumWord:
=NumWord_RUB(A1;1)
Где A1 — ячейка с числом, а 1 — параметр для отображения копеек.
Способ 3: VBA-макрос для продвинутых пользователей
Если вы готовы немного погрузиться в программирование, VBA-макрос даст максимальную гибкость. Этот метод позволяет обрабатывать числа любой длины, настраивать валюты и даже добавлять собственные правила для падежей.
Ниже приведён код макроса, который преобразует число в рубли с копейками (например, 1234,56 → "одна тысяча двести тридцать четыре рубля 56 копеек"). Скопируйте его в редактор VBA (Alt + F11):
Function RUB(Amount As Currency, Optional ShowKopecks As Boolean = True) As String
Dim Rubles As Variant, Kopecks As Variant
Dim Temp As String
Rubles = Application.WorksheetFunction.Floor(Amount, 1)
Kopecks = Application.WorksheetFunction.Round((Amount - Rubles) * 100, 0)
If Rubles = 0 Then
Temp = "ноль рублей"
Else
Temp = ConvertLessThanOneThousand(Rubles)
Temp = GetRubles(Rubles, Temp)
End If
If ShowKopecks Then
Temp = Temp & " " & ConvertLessThanOneThousand(Kopecks) & GetKopecks(Kopecks)
End If
RUB = Application.WorksheetFunction.Proper(Temp)
End Function
Function ConvertLessThanOneThousand(ByVal Amount)
Dim Result As String
If Amount = 0 Then Exit Function
Select Case Amount
Case 1 To 19: Result = Array("", "один", "два", "три", "четыре", "пять", "шесть", "семь", "восемь", "девять", _
"десять", "одиннадцать", "двенадцать", "тринадцать", "четырнадцать", _
"пятнадцать", "шестнадцать", "семнадцать", "восемнадцать", "девятнадцать")(Amount)
Case 20 To 99:
Result = Array("", "", "двадцать", "тридцать", "сорок", "пятьдесят", _
"шестьдесят", "семьдесят", "восемьдесят", "девяносто")(Amount \ 10)
If Amount Mod 10 <> 0 Then Result = Result & " " & ConvertLessThanOneThousand(Amount Mod 10)
Case 100 To 999:
Result = Array("", "сто", "двести", "триста", "четыреста", "пятьсот", _
"шестьсот", "семьсот", "восемьсот", "девятьсот")(Amount \ 100)
If Amount Mod 100 <> 0 Then Result = Result & " " & ConvertLessThanOneThousand(Amount Mod 10)
End Select
ConvertLessThanOneThousand = Result
End Function
Function GetRubles(ByVal Amount, ByVal Temp)
Dim Mod100 As Integer
Mod100 = Amount Mod 100
Select Case Mod100
Case 11 To 19: Temp = Temp & " рублей"
Case Else
Select Case Amount Mod 10
Case 1: Temp = Temp & " рубль"
Case 2, 3, 4: Temp = Temp & " рубля"
Case Else: Temp = Temp & " рублей"
End Select
End Select
GetRubles = Temp
End Function
Function GetKopecks(ByVal Amount)
Dim Temp As String
Select Case Amount
Case 11 To 19: Temp = "копеек"
Case Else
Select Case Amount Mod 10
Case 1: Temp = "копейка"
Case 2, 3, 4: Temp = "копейки"
Case Else: Temp = "копеек"
End Select
End Select
GetKopecks = Temp
End Function
После добавления кода в редакторе VBA сохраните файл как .xlsm (с поддержкой макросов). Теперь в любой ячейке можно использовать функцию:
=RUB(A1)
Макросы разрешены в настройках Excel (Файл → Параметры → Центр управления безопасностью)
Файл сохранён с расширением .xlsm (не .xlsx!)
Включён режим разработчика (Файл → Параметры → Настройка ленты → "Разработчик")
Тестирование проводится на копии оригинального файла (на случай ошибок)
-->
⚠️ Внимание: Макросы могут блокироваться антивирусами или корпоративными политиками безопасности. Если после вставки кода функция не появляется, проверьте настройки доверия к макросам в Файл → Параметры → Центр управления безопасностью.
Способ 4: Power Query для массовой обработки данных
Если вам нужно преобразовать большой массив чисел (например, столбец из 1000 строк), ручной ввод или даже VBA могут оказаться неэффективными. В этом случае поможет инструмент Power Query, встроенный в Excel начиная с версии 2016.
Алгоритм действий:
- Выделите исходный столбец с числами.
- Перейдите на вкладку
Данные→Из таблицы/диапазона(Excel автоматически преобразует данные в таблицу). - В открывшемся редакторе Power Query выберите столбец →
Добавить столбец→Пользовательский столбец. - Введите формулу на языке M (пример для рублей без копеек):
if [Column1] = 0 then "ноль рублей"else
let
units = {"", "один", "два", "три", "четыре", "пять", "шесть", "семь", "восемь", "девять"},
teens = {"десять", "одиннадцать", "двенадцать", "тринадцать", "четырнадцать", "пятнадцать", "шестнадцать", "семнадцать", "восемнадцать", "девятнадцать"},
tens = {"", "десять", "двадцать", "тридцать", "сорок", "пятьдесят", "шестьдесят", "семьдесят", "восемьдесят", "девяносто"},
hundreds = {"", "сто", "двести", "триста", "четыреста", "пятьсот", "шестьсот", "семьсот", "восемьсот", "девятьсот"},
number = Number.Abs([Column1]),
rub = if number = 0 then "рублей" else
let
n = Number.Mod(number, 100),
m = if n >= 11 and n <= 19 then "рублей" else
let
lastDigit = Number.Mod(n, 10)
in
if lastDigit = 1 then "рубль" else
if lastDigit >= 2 and lastDigit <= 4 then "рубля" else "рублей"
in m,
text = // Логика преобразования числа в текст (упрощённо)
if number < 20 then teens{number - 10} & " " & rub
else if number < 100 then tens{Number.IntegerDivide(number, 10)} & " " & units{Number.Mod(number, 10)} & " " & rub
else // ... (продолжение логики для сотен, тысяч и т.д.)
in
text
- Нажмите
ОК, затемЗакрыть и загрузить.
Этот метод требует знания языка M (формулы Power Query), но зато позволяет обрабатывать десятки тысяч строк без замедления работы Excel. Для упрощения задачи можно скачать готовые шаблоны Power Query с сайтов вроде Power BI Community.
Почему Power Query лучше VBA для больших данных?
Power Query оптимизирован для работы с большими массивами (миллионы строк) и не перегружает оперативную память, в отличие от VBA. Кроме того, запросы можно обновлять одним кликом при изменении исходных данных, тогда как макросы требуют повторного запуска.
Способ 5: Онлайн-конвертеры (для разовых задач)
Если вам нужно преобразовать числа в слова один раз и нет желания настраивать Excel, можно воспользоваться онлайн-сервисами. Они подойдут для небольших объёмов данных (до 100-200 чисел).
Популярные сервисы:
- 🌐 Calculator888 — поддерживает рубли, доллары, евро, гривны.
- 🌐 AllCalc — позволяет скачать результат в формате Excel.
- 🌐 Сравнение методов: какой выбрать?
Чтобы определиться с оптимальным способом, оцените свои задачи по трём критериям:
Критерий Встроенные функции Надстройки VBA-макрос Power Query Онлайн-сервисы Сложность настройки Низкая Низкая Средняя Высокая Отсутствует Поддержка валют Нет Да Да Да (настраивается) Да Производительность Медленно для больших данных Быстро Средне Очень быстро Зависит от сервиса Автоматизация Нет Да Да Да Нет Для 90% пользователей оптимальным решением станут готовые надстройки (способ 2) — они сочетают простоту установки, поддержку валют и высокую скорость работы. VBA-макросы подойдут тем, кто нуждается в уникальной логике (например, нестандартные валюты или языки), а Power Query — для обработки больших баз данных.
Частые ошибки и как их избежать
Даже при использовании готовых решений пользователи часто сталкиваются с проблемами. Вот самые распространённые из них и способы их устранения:
- 🔢 Ошибка #ЗНАЧ! при использовании формул:
Причина: Формула не учитывает числа больше 999 или дробные значения. Решение: расширьте логику (для тысяч/миллионов) или используйте функцию
ЦЕЛОЕ()для отделения целой части. - 💰 Неправильные падежи ("1 рубль" вместо "1 рубля"):
Причина: Ошибка в логике определения падежа. В руском языке падеж зависит от последней цифры числа (например, 112 → "рубля", 111 → "рублей"). Решение: используйте готовые надстройки или проверенный VBA-код из этой статьи.
- 🔄 Макрос не работает после сохранения файла:
Причина: Файл сохранён в формате
.xlsxвместо.xlsm. Решение: пересохраните файл с поддержкой макросов (Файл → Сохранить как → Тип файла: Книга Excel с поддержкой макросов (*.xlsm)). - 🌍 Надстройка не устанавливается:
Причина: Блокировка установки сторонних дополнений политикой безопасности. Решение: обратитесь к администратору сети или используйте альтернативные методы (VBA, Power Query).
Если ни один из способов не сработал, проверьте:
- Версию Excel (некоторые функции не поддерживаются в Excel 2007 и старше).
- Региональные настройки Windows (для корректного отображения рублей/копеек должен быть выбран русский язык).
- Наличие обновлений для Office (обновления часто исправляют ошибки в работе формул).
FAQ: Ответы на популярные вопросы
Можно ли преобразовать числа в слова на телефоне (Excel для Android/iOS)?
В мобильной версии Excel нет поддержки VBA-макросов и надстроек, но вы можете:
- Использовать встроенные функции (способ 1), если числа до 999.
- Воспользоваться онлайн-сервисами (способ 5) и вставить результат обратно в таблицу.
- Установить полную версию Excel на планшет (например, через Microsoft 365) — там доступны надстройки.
Для регулярной работы с числами прописью на мобильных устройствах лучше использовать специализированные приложения, например NumWords (Android) или Number to Words (iOS).
Как преобразовать число в слова на английском (dollars, euros)?
Для английского языка логика проще, чем для русского (нет падежей). Вы можете:
- Использовать надстройку NumWord с параметром языка:
=NumWord_ENG(A1;1) - Скачать VBA-макрос для английского:
Function USD(Amount As Currency) As String' Логика для долларов (аналогично рублям, но без падежей)
USD = "..." ' Код упрощён для примера
End Function
- Воспользоваться онлайн-сервисами с поддержкой английского (например, Dollarsimes).
Почему после преобразования в слова нельзя использовать СУММ или другие функции?
Потому что результат преобразования — это текст, а не число. Excel не может выполнять математические операции с текстом. Если вам нужно и отображение прописью, и возможность дальнейших вычислений, используйте дополнительный столбец:
- В столбце
Aхраните исходные числа (для формул). - В столбце
Bиспользуйте функцию преобразования в текст (для печати).
При печати документа скрывайте столбец
A, если он не нужен в финальной версии.Как преобразовать отрицательные числа (например, -123)?
Для обработки отрицательных чисел нужно добавить проверку знака в начало формулы или макроса. Пример для VBA:
Function RUB(Amount As Currency) As StringIf Amount < 0 Then
RUB = "минус " & RUB(Abs(Amount))
Else
' Основная логика (как в примере выше)
End If
End Function
Для встроенных функций используйте
ЕСЛИ:=ЕСЛИ(A1<0; "минус " & Ваша_формула(ABS(A1)); Ваша_формула(A1))Можно ли автоматически обновлять числа прописью при изменении исходных данных?
Да, но способ зависит от метода:
- Надстройки и VBA: Обновляются автоматически при пересчёте листа (
F9). - Power Query: Требует ручного обновления (
Данные → Обновить все), но можно настроить автоматическое обновление при открытии файла. - Встроенные функции: Обновляются автоматически, но только если не содержат ошибок.
Для полной автоматизации в крупных проектах рекомендуется использовать Power Automate (инструмент от Microsoft для создания рабочих процессов).
- 🔢 Ошибка #ЗНАЧ! при использовании формул: