En el desarrollo de aplicaciones y herramientas en Excel se hace necesario convertir en letras los valores en números que arroja Excel, lo que se puede hacer con cierta facilidad.
Convertir números a letras en Excel.
El señor Brehiner Moreno Zúñiga ha desarrollado una plantilla en Excel que convierte números enteros a letras, herramienta útil para el trabajo o como elemento de estudio de las diferentes sintaxis de Excel.
Por su parte, el señor Jairo Alfonso Mosquera Pereira nos envía una nueva plantilla en Excel que convierte números a letras.
- Guía de arrendamiento sin riesgo
- Calculadora de retención en la fuente por salarios
- Liquidador de renta personas naturales
Convertir números en letras mediante función personalizada.
Los códigos anteriores no requiere macros y funcionan en cualquier archivo de Excel, pero son soluciones complejas y personalizadas. Si requiere una solución más automatizada puede hacer uso de la siguiente función:
Function NumeroALetras(ByVal Numero As Double, Optional Moneda As String = "pesos", Optional Centimos As String = "centavos") As String
' Función para Excel que convierte números a letras
' Uso: =NumeroALetras(A1) o =NumeroALetras(B2, "dólares", "centimos")
Dim Entero As Long, Decimales As Integer
Dim ParteEntera As String, ParteDecimal As String
' Separar parte entera y decimal
Entero = Int(Abs(Numero))
Decimales = Round((Abs(Numero) - Entero) * 100, 0)
' Convertir parte entera
If Entero = 0 Then
ParteEntera = "cero " & Moneda
Else
ParteEntera = ConvertirEntero(Entero) & " " & IIf(Entero = 1, Moneda, Moneda & "s")
End If
' Manejar negativo
If Numero < 0 Then ParteEntera = "menos " & ParteEntera End If ' Convertir decimales si existen If Decimales > 0 Then
ParteDecimal = " con " & ConvertirEntero(Decimales) & " " & IIf(Decimales = 1, Centimos, Centimos & "s")
End If
NumeroALetras = UCase(Left(ParteEntera, 1)) & Mid(ParteEntera, 2) & ParteDecimal
End Function
'--- Función auxiliar corregida ---
Private Function ConvertirEntero(ByVal Num As Long) As String
Dim Unidades() As String, Decenas() As String, Centenas() As String
Dim Miles As String, Millones As String
' Inicializar arrays
Unidades = Split("|un|dos|tres|cuatro|cinco|seis|siete|ocho|nueve", "|")
Decenas = Split("|diez|once|doce|trece|catorce|quince|dieciséis|diecisiete|dieciocho|diecinueve|veinte|treinta|cuarenta|cincuenta|sesenta|setenta|ochenta|noventa", "|")
Centenas = Split("|cien|ciento|doscientos|trescientos|cuatrocientos|quinientos|seiscientos|setecientos|ochocientos|novecientos", "|")
Select Case Num
Case 0 To 9: ConvertirEntero = Unidades(Num)
Case 10 To 19: ConvertirEntero = Decenas(Num - 9)
Case 20: ConvertirEntero = "veinte"
Case 21 To 29: ConvertirEntero = "veinti" & Unidades(Num - 20)
Case 30 To 99:
If Num Mod 10 = 0 Then
ConvertirEntero = Decenas(10 + (Num \ 10) - 2)
Else
ConvertirEntero = Decenas(10 + (Num \ 10) - 2) & " y " & Unidades(Num Mod 10)
End If
Case 100: ConvertirEntero = "cien"
Case 101 To 999:
ConvertirEntero = Centenas(Num \ 100)
If Num Mod 100 > 0 Then
ConvertirEntero = ConvertirEntero & " " & ConvertirEntero(Num Mod 100)
End If
Case 1000 To 999999:
Miles = ConvertirEntero(Num \ 1000)
If Num \ 1000 = 1 Then
Miles = "mil"
Else
Miles = Miles & " mil"
End If
If Num Mod 1000 > 0 Then
ConvertirEntero = Miles & " " & ConvertirEntero(Num Mod 1000)
Else
ConvertirEntero = Miles
End If
Case 1000000 To 999999999:
Millones = ConvertirEntero(Num \ 1000000)
If Num \ 1000000 = 1 Then
Millones = "un millón"
Else
Millones = Millones & " millones"
End If
If Num Mod 1000000 > 0 Then
ConvertirEntero = Millones & " " & ConvertirEntero(Num Mod 1000000)
Else
ConvertirEntero = Millones
End If
Case Else: ConvertirEntero = "Número demasiado grande"
End Select
' Eliminar espacios dobles
ConvertirEntero = Application.WorksheetFunction.Trim(ConvertirEntero)
End Function
Para ello ir a la opción de programador, insertar módulo y pegar dicho código, luego debe guardar el archivo como Libro en Excel habilitado para macros (xlsm).
Para utilizar la función sólo ingresa la siguiente fórmula:
=NumeroALetras(A1)
Cambie A1 por la celda donde tiene el número que desea convertir en letras.
¿Me podrían indicar la manera correcta de instalarlo y utilizar la fórmula? Porque yo lo instalo, pero al momento de buscar la fórmula no aparece y ya la busqué de todas las maneras posibles.
No se requiere instalar nada. Simplemente es un conjunto de fórmulas concatenadas que puede visualizar en la barra de fórmulas de cada celda.
Nota: Hemos agregado una función para automatizar el proceso.