Преобразование чисел в слова в индийских рупиях и других валютах в 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, {"","One","Two","Three","Four","Five","Six","Seven","Eight","Nine"}, teens, {"Ten","Eleven","Twelve","Thirteen","Fourteen","Fifteen","Sixteen","Seventeen","Eighteen","Nineteen"}, tens, {"","","Twenty","Thirty","Forty","Fifty","Sixty","Seventy","Eighty","Ninety"}, 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) & " Hundred" & IF(MOD(x,100)>0, " " & ConvertTwo(MOD(x,100)), "") ) ) ), words, IF(num=0, "Zero", TEXTJOIN(" ", TRUE, IF(INT(num/10000000)>0, ConvertTwo(INT(num/10000000)) & " Crore", ""), IF(MOD(INT(num/100000),100)>0, ConvertTwo(INT(MOD(num,10000000)/100000)) & " Lakh", ""), IF(MOD(INT(num/1000),100)>0, ConvertTwo(INT(MOD(num,100000)/1000)) & " Thousand", ""), IF(MOD(INT(num/100),10)>0, INDEX(units, INT(MOD(num,1000)/100)+1) & " Hundred", ""), IF(MOD(num,100)>0, ConvertTwo(MOD(num,100)), "") ) ), result, "Rupees " & words & IF(paise>0, " and " & ConvertTwo(paise) & " Paise", "") & " Only", result ))Нажмите ОК, чтобы сохранить новое имя.

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

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

Шаг 2. Перейдите в Kutools > Текст > Числа в слова

Шаг 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% и сократите сотни кликов мышью ежедневно!