Convertir números en palabras en rupias indias y otras monedas en Excel (Edición 2025)
Aquí te mostramos cómo convertir números en palabras en rupias indias u otras monedas en Excel.
Al trabajar con documentos financieros como facturas, cotizaciones, formularios de impuestos, cheques o vales de pago, es común que sea necesario representar los valores monetarios tanto en formato numérico como en palabras escritas. Esto añade un nivel de profesionalismo y ayuda a prevenir fraudes o malentendidos.
Ejemplo
Aunque Microsoft Excel no tiene una función incorporada para convertir números en palabras, hay varias formas efectivas de lograrlo: mediante VBA, funciones LAMBDA o el complemento Kutools para Excel.
Convertir números en palabras en rupias indias con VBA (Todas las versiones de Microsoft)
- Convertir números en palabras en otras monedas (USD, EUR, etc.)
- Guardar tu libro como archivo habilitado para macros
Convertir números en palabras en rupias indias con la función LAMBDA (Solo Microsoft 365)
Convertir números en USD, EUR y más de 30 monedas adicionales (Todas las versiones de Microsoft)
Convertir números en palabras en rupias indias con VBA (Todas las versiones de Microsoft)
Para usuarios de cualquier versión de Excel, VBA (Visual Basic para Aplicaciones) proporciona un método personalizable para convertir cantidades numéricas en palabras utilizando el sistema de numeración indio (por ejemplo, miles, lakhs, crores).
Paso 1. Presiona Alt + F11 para abrir el editor de VBA (ventana de Microsoft Visual Basic para Aplicaciones).

Paso 2. Ve a Insertar > Módulo.

Paso 3. Pega el código VBA en el Módulo.
Convertir números en palabras en rupias indias
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

Paso 4. Guarda y regresa a Excel.
Paso 5. Selecciona una celda y usa la fórmula de esta manera:
Presiona la tecla Enter

💡 Consejo: Este método soporta decimales (Paise) y funciona sin conexión.
Limitaciones del uso de VBA
- Requiere guardar el libro como un archivo habilitado para macros (.xlsm).
- Las macros pueden ser bloqueadas por configuraciones de seguridad en algunos entornos.
Convertir números en palabras en otras monedas (USD, EUR, etc.)
Para personalizar la salida para otras monedas, como "Dólares" o "Euros", puedes ajustar los valores de cadena en la función VBA. A continuación, se presenta una versión simplificada y más flexible de la función.
Plantilla de código VBA flexible (Moneda personalizada)
'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
Fórmula VBA de ejemplo:

Fórmulas VBA de ejemplo para otra moneda:
=NumberToWordsCustom(A2, "Euros", "Cents")
=NumberToWordsCustom(A2, "Pounds", "Pence")
El código es flexible — simplemente pasa la moneda y subunidad deseadas.
Guarda tu libro como un archivo habilitado para macros
Si estás usando VBA, es fundamental guardar tu libro con macros habilitadas. De lo contrario, tu código se perderá cuando se cierre el archivo.
Paso 1. Ve a Archivo > Guardar como

Paso 2. Selecciona una ubicación y elige el tipo de archivo: Libro de Excel habilitado para macros (*.xlsm).

Paso 3. Haz clic en Guardar.
✅ Tus funciones personalizadas como =ConvertToRupees(A2) ahora persistirán y podrán reutilizarse en cualquier momento.
Convertir números en palabras en rupias indias con la función LAMBDA (Solo Microsoft 365)
Para usuarios de Excel 365, puedes usar LAMBDA, una nueva característica de Excel que permite definir fórmulas personalizadas sin necesidad de VBA.
🪄 ¿Qué es LAMBDA?
LAMBDA es una función en Excel que te permite crear tus propias funciones personalizadas usando fórmulas — al igual que las funciones integradas como SUMA o SI, pero sin necesidad de código o macros. Es ideal para simplificar lógica repetitiva y hacer que tus hojas de cálculo sean más limpias y fáciles de mantener.
Paso 1: Ve al Administrador de nombres y haz clic en Fórmulas > Administrador de nombres.

Paso 2: Crea un nuevo Nombre.
Haz clic en el botón Nuevo.
Introduce un Nombre.
Ejemplo: RupeeToWords
Paso 3: Pega esta fórmula LAMBDA en el campo Se refiere a:
=LAMBDA(n, LET( unidades, {"","Uno","Dos","Tres","Cuatro","Cinco","Seis","Siete","Ocho","Nueve"}, teens, {"Diez","Once","Doce","Trece","Catorce","Quince","Dieciséis","Diecisiete","Dieciocho","Diecinueve"}, tens, {"","","Veinte","Treinta","Cuarenta","Cincuenta","Sesenta","Setenta","Ochenta","Noventa"}, num, ENTERO(n), paise, REDONDEAR((n - ENTERO(n)) * 100, 0), ConvertTwo, LAMBDA(x, SI(x<10, INDICE(unidades, x+1), SI(x<20, INDICE(teens, x-9), INDICE(tens, ENTERO(x/10)+1) & SI(RESIDUO(x,10)>0, " " & INDICE(unidades, RESIDUO(x,10)+1), "") ) ) ), ConvertThree, LAMBDA(x, SI(x=0, "", SI(x<100, ConvertTwo(x), INDICE(unidades, ENTERO(x/100)+1) & " Cien" & SI(RESIDUO(x,100)>0, " " & ConvertTwo(RESIDUO(x,100)), "") ) ) ), palabras, SI(num=0, "Cero", UNIRTEXTO(" ", VERDADERO, SI(ENTERO(num/10000000)>0, ConvertTwo(ENTERO(num/10000000)) & " Crore", ""), SI(RESIDUO(ENTERO(num/100000),100)>0, ConvertTwo(ENTERO(RESIDUO(num,10000000)/100000)) & " Lakh", ""), SI(RESIDUO(ENTERO(num/1000),100)>0, ConvertTwo(ENTERO(RESIDUO(num,100000)/1000)) & " Mil", ""), SI(RESIDUO(ENTERO(num/100),10)>0, INDICE(unidades, ENTERO(RESIDUO(num,1000)/100)+1) & " Cien", ""), SI(RESIDUO(num,100)>0, ConvertTwo(RESIDUO(num,100)), "") ) ), resultado, "Rupias " & palabras & SI(paise>0, " y " & ConvertTwo(paise) & " Paise", "") & " Solamente", resultado ))Haz clic en OK para guardar el nuevo Nombre.

Paso 3. Cierra el Administrador de nombres y regresa a Excel.
Paso 4. Usa la fórmula en cualquier celda de esta manera:
Presiona la tecla Enter.

👀 El código completo de la función LAMBDA maneja Crores, Lakhs, Miles y decimales.
Convertir números en USD, EUR y más de 30 monedas adicionales (Todas las versiones de Microsoft)
Para la solución más eficiente y profesional, utiliza Kutools para Excel's Números a Palabras. Esta poderosa herramienta soporta:
🌍 Más de 30 monedas, incluyendo:
- Dólares estadounidenses (USD)
- Euros (EUR)
- Yuanes chinos (CNY)
- Libras esterlinas (GBP)
- etc.
Paso 1. Selecciona las celdas que deseas convertir.

Paso 2. Ve a Kutools > Texto > Números a Palabras

Paso 3. Elige tu moneda objetivo y haz clic en OK.

Los números se convierten a la moneda especificada.

😁 Consejo: Si quieres convertir directamente números en palabras, marca la opción No convertir a moneda, y el resultado se mostrará así:

Cuándo usar cada método
Usa VBA si necesitas una solución flexible y programable y estás familiarizado con macros.
- Usa LAMBDA si usas Excel 365 y solo ocasionalmente necesitas convertir valores en rupias indias. Es una solución ligera y compartible que no requiere macros ni herramientas externas, perfecta para tareas simples o personales.
- Usa Kutools para Excel si quieres la solución más fácil, rápida y versátil, sin necesidad de codificación. Kutools es especialmente útil cuando:
- Trabajas con múltiples monedas.
- Necesitas convertir valores en masa o grandes conjuntos de datos.
- Quieres una herramienta lista para uso profesional sin macros, con más de 30 opciones de moneda y rendimiento potenciado por IA.
Las mejores herramientas de productividad para Office
Impulsa al máximo tu dominio de Excel con Kutools para Excel y experimenta una eficiencia sin precedentes. Kutools para Excel ofrece más de300 funciones avanzadas para potenciar la productividad y ahorrar tiempo.Haz clic aquí para obtener la función que más necesitas...
Office Tab aporta una interfaz de pestañas a Office y hace tu trabajo mucho más sencillo
- Habilita la edición y lectura con pestañas en Word, Excel, PowerPoint, Publisher, Access, Visio y Project.
- Abre y crea varios documentos en nuevas pestañas de la misma ventana, en vez de en nuevas ventanas.
- ¡Aumenta tu productividad hasta un50% y reduce cientos de clics de ratón cada día!