Cómo convertir números a letras en Excel paso a paso

En muchas ocasiones necesitamos que un número se exprese en letras, ya sea para crear facturas, recibos, cheques u otros documentos formales. Aunque Excel no cuenta con una función nativa para convertir números a letras en español, existen formas sencillas de lograrlo mediante macros. En esta entrada te explico cómo hacerlo paso a paso.
📌 ¿Qué es una macro en Excel?
Una macro es una serie de instrucciones programadas con VBA (Visual Basic for Applications) que automatizan tareas. En este caso, la macro se encargará de convertir automáticamente un número en su equivalente escrito con letras.
🛠️ Pasos para convertir números a letras en Excel
1. Abre el editor de Visual Basic
- Presiona
ALT + F11para abrir el Editor de Visual Basic. - En el menú, selecciona Insertar > Módulo.
2. Copia y pega el siguiente código
Este código convierte números a letras en español:
Function NumLetras(ByVal MyNumber)
Dim Pesos, Centavos, Temp
Dim DecimalPlace, Count
Dim Place(9) As String
Place(2) = " mil "
Place(3) = " millones "
Place(4) = " mil millones "
Place(5) = " billones "
' Convierte el número en texto
MyNumber = Trim(Str(MyNumber))
' Encuentra el punto decimal
DecimalPlace = InStr(MyNumber, ".")
If DecimalPlace > 0 Then
Centavos = GetTens(Left(Mid(MyNumber, DecimalPlace + 1) & "00", 2))
MyNumber = Trim(Left(MyNumber, DecimalPlace - 1))
End If
Count = 1
Do While MyNumber <> ""
Temp = GetHundreds(Right(MyNumber, 3))
If Temp <> "" Then Pesos = Temp & Place(Count) & Pesos
If Len(MyNumber) > 3 Then
MyNumber = Left(MyNumber, Len(MyNumber) - 3)
Else
MyNumber = ""
End If
Count = Count + 1
Loop
NumLetras = Application.Trim(Pesos)
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
Select Case Mid(MyNumber, 1, 1)
Case "1": Result = "ciento "
Case "2": Result = "doscientos "
Case "3": Result = "trescientos "
Case "4": Result = "cuatrocientos "
Case "5": Result = "quinientos "
Case "6": Result = "seiscientos "
Case "7": Result = "setecientos "
Case "8": Result = "ochocientos "
Case "9": Result = "novecientos "
End Select
End If
Result = Result & GetTens(Mid(MyNumber, 2))
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 = "diez"
Case 11: Result = "once"
Case 12: Result = "doce"
Case 13: Result = "trece"
Case 14: Result = "catorce"
Case 15: Result = "quince"
Case 16: Result = "dieciséis"
Case 17: Result = "diecisiete"
Case 18: Result = "dieciocho"
Case 19: Result = "diecinueve"
Case Else
End Select
Else
Select Case Val(Left(TensText, 1))
Case 2: Result = "veinte"
Case 3: Result = "treinta"
Case 4: Result = "cuarenta"
Case 5: Result = "cincuenta"
Case 6: Result = "sesenta"
Case 7: Result = "setenta"
Case 8: Result = "ochenta"
Case 9: Result = "noventa"
Case Else
End Select
If Right(TensText, 1) <> "0" Then
If Val(Left(TensText, 1)) = 2 Then
Result = "veinti" & GetDigit(Right(TensText, 1))
Else
Result = Result & " y " & GetDigit(Right(TensText, 1))
End If
End If
End If
GetTens = Result
End Function
Private Function GetDigit(Digit)
Select Case Val(Digit)
Case 1: GetDigit = "uno"
Case 2: GetDigit = "dos"
Case 3: GetDigit = "tres"
Case 4: GetDigit = "cuatro"
Case 5: GetDigit = "cinco"
Case 6: GetDigit = "seis"
Case 7: GetDigit = "siete"
Case 8: GetDigit = "ocho"
Case 9: GetDigit = "nueve"
Case Else: GetDigit = ""
End Select
End Function
3. Guarda y cierra el editor
- Guarda los cambios y cierra el Editor de Visual Basic.
4. Usa la fórmula en una celda
- Escribe en una celda:
=NumLetras(A1)ReemplazaA1por la celda que contiene el número que quieres convertir.
🎯 Recomendaciones
- Guarda tu archivo como Libro habilitado para macros (.xlsm).
- Asegúrate de que las macros estén habilitadas en Excel para que la función funcione correctamente.
- Puedes personalizar el código si deseas agregar palabras como “pesos”, “centavos”, o cambiar el idioma.
📢 Si este artículo te fue útil, apóyame dando clic en los anuncios. Con tu ayuda puedo seguir creando y compartiendo contenido de valor. ¡Gracias!