Преобразование чисел в слова в индийских рупиях и других валютах в Excel (2025 Edition)
Вот как преобразовать числа в слова в индийских рупиях — или любой другой валюте — в Excel.
При работе с финансовыми документами, такими как счета-фактуры, котировки, налоговые формы, чеки или платежные ведомости, часто необходимо представлять денежные значения как в числовом, так и в письменном формате. Это добавляет уровень профессионализма и помогает предотвратить мошенничество или неправильное толкование.
Пример
Хотя Microsoft Excel не имеет встроенной функции для преобразования чисел в слова, существует несколько эффективных способов достичь этого — через VBA, функции LAMBDA или универсальный плагин Kutools для Excel.
Преобразование чисел в слова в индийских рупиях с помощью VBA (все версии Microsoft)
- Преобразование чисел в слова в других валютах (USD, EUR и т. д.)
- Сохраните вашу книгу как файл с поддержкой макросов
Преобразование чисел в слова в индийских рупиях с помощью функции LAMBDA (только Microsoft 365)
Преобразование чисел в USD, EUR и более чем 30 других валют (все версии Microsoft)
Когда использовать каждый метод
Преобразование чисел в слова в индийских рупиях с помощью VBA (все версии Microsoft)
Для пользователей любой версии Excel VBA (Visual Basic for Applications) предоставляет настраиваемый метод для преобразования числовых сумм в слова, используя индийскую систему нумерации (например, тысячи, лакхи, кроры).
Шаг 1. Нажмите Alt + F11, чтобы открыть редактор VBA (окно Microsoft Visual Basic for Applications).

Шаг 2. Перейдите в меню Вставить > Модуль.

Шаг 3. Вставьте код VBA в Модуль.
Преобразование чисел в слова в индийских рупиях
Function ConvertToRupees(ByVal MyNumber)
'UpdatebyExtendoffice
Dim Units As String, SubUnits As String, TempStr As String
Dim DecimalPlace As Integer, Count As Integer
Dim Place(9) As String
Place(2) = " Thousand "
Place(3) = " Lakh "
Place(4) = " Crore "
MyNumber = Trim(Str(MyNumber))
DecimalPlace = InStr(MyNumber, ".")
If DecimalPlace > 0 Then
SubUnits = GetTens(Left(Mid(MyNumber, DecimalPlace + 1) & "00", 2))
MyNumber = Trim(Left(MyNumber, DecimalPlace - 1))
End If
Count = 1
Do While MyNumber <> ""
TempStr = GetHundreds(Right(MyNumber, 3))
If TempStr <> "" Then Units = TempStr & Place(Count) & Units
If Len(MyNumber) > 3 Then
MyNumber = Left(MyNumber, Len(MyNumber) - 3)
Else
MyNumber = ""
End If
Count = Count + 1
Loop
ConvertToRupees = "Rupees " & Application.WorksheetFunction.Trim(Units)
If SubUnits <> "" Then
ConvertToRupees = ConvertToRupees & " and " & SubUnits & " Paise"
End If
ConvertToRupees = ConvertToRupees & " Only"
End Function
Private Function GetHundreds(ByVal MyNumber)
Dim Result As String
If Val(MyNumber) = 0 Then Exit Function
MyNumber = Right("000" & MyNumber, 3)
If Mid(MyNumber, 1, 1) <> "0" Then
Result = GetDigit(Mid(MyNumber, 1, 1)) & " Hundred "
End If
If Mid(MyNumber, 2, 1) <> "0" Then
Result = Result & GetTens(Mid(MyNumber, 2))
Else
Result = Result & GetDigit(Mid(MyNumber, 3))
End If
GetHundreds = Result
End Function
Private Function GetTens(TensText)
Dim Result As String
If Val(Left(TensText, 1)) = 1 Then
Select Case Val(TensText)
Case 10: Result = "Ten"
Case 11: Result = "Eleven"
Case 12: Result = "Twelve"
Case 13: Result = "Thirteen"
Case 14: Result = "Fourteen"
Case 15: Result = "Fifteen"
Case 16: Result = "Sixteen"
Case 17: Result = "Seventeen"
Case 18: Result = "Eighteen"
Case 19: Result = "Nineteen"
End Select
Else
Select Case Val(Left(TensText, 1))
Case 2: Result = "Twenty "
Case 3: Result = "Thirty "
Case 4: Result = "Forty "
Case 5: Result = "Fifty "
Case 6: Result = "Sixty "
Case 7: Result = "Seventy "
Case 8: Result = "Eighty "
Case 9: Result = "Ninety "
End Select
Result = Result & GetDigit(Right(TensText, 1))
End If
GetTens = Result
End Function
Private Function GetDigit(Digit)
Select Case Val(Digit)
Case 1: GetDigit = "One"
Case 2: GetDigit = "Two"
Case 3: GetDigit = "Three"
Case 4: GetDigit = "Four"
Case 5: GetDigit = "Five"
Case 6: GetDigit = "Six"
Case 7: GetDigit = "Seven"
Case 8: GetDigit = "Eight"
Case 9: GetDigit = "Nine"
Case Else: GetDigit = ""
End Select
End Function

Шаг 4. Сохраните изменения и вернитесь в Excel.
Шаг 5. Выберите ячейку и используйте формулу следующим образом:
Нажмите клавишу Enter

💡 Совет: Этот метод поддерживает десятичные дроби (пайсы) и работает офлайн.
Ограничения использования VBA
- Требуется сохранение книги в формате файла с поддержкой макросов (.xlsm).
- Макросы могут быть заблокированы настройками безопасности в некоторых средах.
Преобразование чисел в слова в других валютах (USD, EUR и т. д.)
Чтобы настроить вывод для других валют, таких как «доллары» или «евро», вы можете изменить строковые значения в функции VBA. Ниже представлена упрощенная и более гибкая версия функции.
Гибкий шаблон кода VBA (настраиваемая валюта)
'UpdatebyExtendoffice
Public Function NumberToWordsCustom(ByVal num As Double, Optional ByVal currency2 As String, Optional ByVal subCurrency As String) As String
Dim result As String
Dim dollars As Long
Dim cents As Long
dollars = Int(num)
cents = Round((num - dollars) * 100)
If Len(currency2) = 0 Then currency2 = "Dollars"
If Len(subCurrency) = 0 Then subCurrency = "Cents"
result = currency2 & " " & SpellNumber_English(dollars)
If cents > 0 Then
result = result & " and " & SpellNumber_English(cents) & " " & subCurrency
End If
NumberToWordsCustom = result & " Only"
End Function
Private Function SpellNumber_English(ByVal MyNumber As Long) As String
Dim Units As Variant, Tens As Variant, Teens As Variant
Dim Place() As String
Dim TempStr As String
Dim Count As Integer
Dim t As String
Dim StrNumber As String
Dim n As Integer
Place = Split(" Thousand Million Billion", " ")
Units = Array("", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine")
Tens = Array("", "", "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety")
Teens = Array("Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen")
StrNumber = Trim(Str(MyNumber))
Count = 0
Do While StrNumber <> ""
n = Val(Right(StrNumber, 3))
If n <> 0 Then
t = ConvertHundreds(n, Units, Tens, Teens)
If Count > 0 Then t = t & " " & Place(Count - 1)
TempStr = t & " " & TempStr
End If
If Len(StrNumber) > 3 Then
StrNumber = Left(StrNumber, Len(StrNumber) - 3)
Else
StrNumber = ""
End If
Count = Count + 1
Loop
SpellNumber_English = Trim(TempStr)
End Function
Private Function ConvertHundreds(ByVal n As Integer, Units As Variant, Tens As Variant, Teens As Variant) As String
Dim result As String
If n >= 100 Then
result = Units(Int(n / 100)) & " Hundred "
n = n Mod 100
End If
If n >= 20 Then
result = result & Tens(Int(n / 10)) & " "
n = n Mod 10
ElseIf n >= 10 Then
result = result & Teens(n - 10) & " "
n = 0
End If
If n > 0 Then
result = result & Units(n)
End If
ConvertHundreds = Trim(result)
End Function
Пример формулы VBA:

Пример формулы VBA для другой валюты:
=NumberToWordsCustom(A2, "Euros", "Cents")
=NumberToWordsCustom(A2, "Pounds", "Pence")
Код является гибким — просто передайте желаемую валюту и подраздел.
Сохраните вашу книгу как файл с поддержкой макросов
Если вы используете VBA, важно сохранить вашу книгу с поддержкой макросов. В противном случае ваш код будет потерян при закрытии файла.
Шаг 1. Перейдите в Файл > Сохранить как

Шаг 2. Выберите расположение и тип файла: Книга Excel с поддержкой макросов (*.xlsm).

Шаг 3. Нажмите Сохранить.
✅ Ваши пользовательские функции, такие как =ConvertToRupees(A2), теперь будут сохранены и их можно будет использовать в любое время.
Преобразование чисел в слова в индийских рупиях с помощью функции LAMBDA (только Microsoft 365)
Для пользователей Excel 365 вы можете использовать LAMBDA, новую функцию Excel, которая позволяет определять пользовательские формулы без необходимости использования VBA.
🪄 Что такое LAMBDA?
LAMBDA — это функция в Excel, которая позволяет создавать собственные пользовательские функции с использованием формул — точно так же, как встроенные функции, такие как СУММ или ЕСЛИ, но без необходимости использования кода или макросов. Она отлично подходит для упрощения повторяющейся логики и делает ваши таблицы более чистыми и легкими для поддержки.
Шаг 1: Перейдите в Диспетчер имен и нажмите Формулы > Диспетчер имен.

Шаг 2: Создайте новое имя.
Нажмите кнопку Новое.
Введите имя.
Пример: RupeeToWords
Шаг 3: Вставьте эту формулу LAMBDA в поле Ссылается на:
=LAMBDA(n, LET( units, {"","Один","Два","Три","Четыре","Пять","Шесть","Семь","Восемь","Девять"}, teens, {"Десять","Одиннадцать","Двенадцать","Тринадцать","Четырнадцать","Пятнадцать","Шестнадцать","Семнадцать","Восемнадцать","Девятнадцать"}, tens, {"","","Двадцать","Тридцать","Сорок","Пятьдесят","Шестьдесят","Семьдесят","Восемьдесят","Девяносто"}, num, INT(n), paise, ROUND((n - INT(n)) * 100, 0), ConvertTwo, LAMBDA(x, IF(x<10, INDEX(units, x+1), IF(x<20, INDEX(teens, x-9), INDEX(tens, INT(x/10)+1) & IF(MOD(x,10)>0, " " & INDEX(units, MOD(x,10)+1), "") ) ) ), ConvertThree, LAMBDA(x, IF(x=0, "", IF(x<100, ConvertTwo(x), INDEX(units, INT(x/100)+1) & " Сто" & IF(MOD(x,100)>0, " " & ConvertTwo(MOD(x,100)), "") ) ) ), words, IF(num=0, "Ноль", TEXTJOIN(" ", TRUE, IF(INT(num/10000000)>0, ConvertTwo(INT(num/10000000)) & " Крор", ""), IF(MOD(INT(num/100000),100)>0, ConvertTwo(INT(MOD(num,10000000)/100000)) & " Лакх", ""), IF(MOD(INT(num/1000),100)>0, ConvertTwo(INT(MOD(num,100000)/1000)) & " Тысяча", ""), IF(MOD(INT(num/100),10)>0, INDEX(units, INT(MOD(num,1000)/100)+1) & " Сто", ""), IF(MOD(num,100)>0, ConvertTwo(MOD(num,100)), "") ) ), result, "Рупий " & words & IF(paise>0, " и " & ConvertTwo(paise) & " Пайса", "") & " Только", result ))Нажмите OK, чтобы сохранить новое имя.

Шаг 3. Закройте Диспетчер имен и вернитесь в Excel.
Шаг 4. Используйте формулу в любой ячейке следующим образом:
Нажмите клавишу Enter.

👀 Полный код функции LAMBDA обрабатывает кроры, лакхи, тысячи и десятичные дроби.
Преобразование чисел в USD, EUR и более чем 30 других валют (все версии Microsoft)
Для наиболее эффективного и профессионального решения используйте инструмент Kutools для Excel Numbers to Words. Этот мощный инструмент поддерживает:
🌍 Более 30 валют, включая:
- Доллары США (USD)
- Евро (EUR)
- Китайский юань (CNY)
- Британский фунт (GBP)
- и т. д.
Шаг 1. Выберите ячейки, которые вы хотите преобразовать.

Шаг 2. Перейдите в Kutools > Текст > Numbers to Words

Шаг 3. Выберите целевую валюту и нажмите OK.

Числа преобразованы в указанную валюту.

😁 Совет: Если вы хотите напрямую преобразовать числа в слова, отметьте опцию Не преобразовывать в валюту, и результат будет показан следующим образом:

Когда использовать каждый метод
Используйте VBA, если вам нужен гибкий, программируемый решение, и вы знакомы с макросами.
- Используйте LAMBDA, если вы используете Excel 365 и вам нужно только изредка преобразовывать значения в индийских рупиях. Это легковесное, совместимое решение, которое не требует макросов или внешних инструментов — идеально подходит для простых или личных задач.
- Используйте Kutools для Excel, если вы хотите получить самое простое, быстрое и универсальное решение — без необходимости программирования. Kutools особенно полезен, когда:
- Вы работаете с несколькими валютами.
- Необходимо конвертировать значения массово или в больших наборах данных.
- Хотите профессиональный инструмент, готовый к использованию без макросов, с более чем 30 вариантами валют и производительностью, усиленной искусственным интеллектом.
Лучшие инструменты для повышения продуктивности в Office
Повысьте свои навыки работы в Excel с помощью Kutools для Excel и ощутите эффективность на новом уровне. Kutools для Excel предлагает более300 расширенных функций для повышения производительности и экономии времени. Нажмите здесь, чтобы выбрать функцию, которая вам нужнее всего...
Office Tab добавляет вкладки в Office и делает вашу работу намного проще
- Включите режим вкладок для редактирования и чтения в Word, Excel, PowerPoint, Publisher, Access, Visio и Project.
- Открывайте и создавайте несколько документов во вкладках одного окна вместо новых отдельных окон.
- Увеличьте свою продуктивность на50% и уменьшите количество щелчков мышью на сотни ежедневно!
Все надстройки Kutools. Один установщик
Пакет Kutools for Office включает надстройки для Excel, Word, Outlook и PowerPoint, а также Office Tab Pro — идеально для команд, работающих в разных приложениях Office.





- Комплексный набор — надстройки для Excel, Word, Outlook и PowerPoint плюс Office Tab Pro
- Один установщик, одна лицензия — настройка занимает считанные минуты (MSI-совместимо)
- Совместная работа — максимальная эффективность между приложениями Office
- 30-дневная полнофункциональная пробная версия — без регистрации и кредитной карты
- Лучшее соотношение цены и качества — экономия по сравнению с покупкой отдельных надстроек