Como convertir números a letras en Excel [La mejor forma]

En este artículo voy a mostrarte la mejor forma para convertir números a letras en Excel, de hecho, puedo asegurarte de que no encontraras en otro lugar una forma más sencilla y exacta para hacerlo.

Voy a enseñarte como convertir números como este 45.60 a textos como este:

  • Cuarenta y cinco Soles con 60 centavos
  • Cuarenta y cinco 60/100 Pesos

También te mostraré como personalizar la conversión a algún otro formato que necesites y todo sin que tengas que escribir o modificar una sola línea de código.

Como convertir un número a letras en Excel

Para convertir números a letras en Excel debes descargar el complemento numletras haciendo clic aquí. Luego debes de instarlo como se instala un complemento de Excel.

Ahora puedes cerrar Excel y volverlo a abrir, en esta primera ocasión el complemento te pedirá que registres un formato predeterminado, esto te permitirá convertir números a letras en una forma más sencilla utilizando el formato que mejor se adapte a tus necesidades.

No te preocupes si no sabes qué formato poner, puedes dejarlo en blanco y modificarlo más adelante.

En ocasiones los complementos se pierden cuando cierras Excel y lo vuelves a abrir, en este caso te recomiendo que leas esta guía para resolver este problema.

Ahora abre Excel y cuando tengas el complemento instalado verás que hay una nueva función en Excel llamada numletras.

Ejemplo de como convertir números a letras en Excel

Como puedes ver en la imagen anterior, solo necesitas llamar a la función numletras y pasar como parámetro la celda en donde está el valor en número y la función lo convierte en letras automáticamente.

Esta es solo la parte más básica, también puedes convertir números a letras y aplicar el formato que necesites, veamos ahora como puedes hacerlo.

Como convertir un número a texto usando formatos

La mayoría de las personas necesitan esta función para mostrar en texto, los valores que se encuentran representados en una moneda, por ejemplo, $99.99, sin embargo, otras personas solo necesitan convertir una calificación en letras, pero no importa cuál sea tu caso, puedes convertir el número al formato de texto que necesites.

Como puedes ver, la función numletras también tiene otros parámetros.

La función numletras también tiene estos argumentos.

Valor: Es el valor numérico que deseas convertir a texto

MonedaSingular: Es el nombre de la moneda en singular, por ejemplo “dólar”

MonedaPlural: Es el nombre de la moneda en plural, por ejemplo “dólares”

Formato: Es el formato en que necesitas el texto y es lo que hace que esta función sea más completa.

Género: Este es un nuevo parámetro que agregue con por un comentario que hicieron. Si por ejemplo hablas de camisas, podrías necesitar que se menciona UNA camisa, en lugar de UN camisa, en este caso solo colocas aquí una letra “f” minúscula y los números estarán en versión femenina.

Imagina que necesitas mostrar el total en letras en una factura, en ese caso podrías agregar la fórmula de esta manera:

=NumLetras(B4,”dólar”,”dólares”,”$Ee $m con $dd centavos”)

Y obtener una salida como esta:

Trescientos cuarenta y seis dólares con noventa y nueve centavos

Función numletras para convertir números a letras con formato.

Hasta ahora todo debe ser claro y sencillo, excepto por la parte del formato (“$Ee $m con $dd centavos”), ese parámetro puede ser muy confuso y es para usuarios avanzados, pero voy a explicarte como dominarlo y convertirte en un usuario avanzado.

Lista de formatos disponibles

Para entender cómo crear tus formatos personalizados, primero piensa en como necesitas el texto final, por ejemplo, puedes pensar en algo como esto:

Cuarenta y cinco Soles con 60 centavos

Ahora solo debemos desarmar o clasificar ese texto:

Cuarenta y cinco: Es la parte entera del número, convertida en texto

Soles: Es el nombre de la moneda, la cual podría ser también Sol, si fuera solo una unidad.

con: Es solo una palabra que ira siempre en el texto final

60: Es la cantidad de decimales en su valor numérico (no texto)

centavos: Esta es otra palabra que siempre estará en el texto final.

Como puedes ver, el texto final se compone de textos fijos, el nombre de la moneda y los valores enteros y/o decimales del número a convertir a texto. Entonces, para crear tu propio formato solo escribe la forma en que necesitas mostrar el número y luego solo reemplaza ciertas partes por los comodines que están disponibles en la función.

Como estás a punto de ver, crear un formato personalizado es una opción bastante valiosa, pero un poco complicada, sin embargo, hay una forma en que puedes crear un formato predeterminado, eso lo veremos en la siguiente sección.

Para obtener la parte entera del número en letras puedes usar estos comodines:

$ee: Parte entera con todas las letras en minúsculas

$EE: Parte entera con todas las letras en mayúsculas

$Ee: Parte entra con todas las letras en minúsculas, excepto la primera, esa estará en mayúsculas.

Para obtener la parte decimal del número en letras puedes usar estos comodines:

$dd: Parte decimal con todas las letras en minúsculas

$DD: Parte decimal con todas las letras en mayúsculas

$Dd: Parte decimal con todas las letras en minúsculas, excepto la primera, esa estará en mayúsculas.

#d: Parte decimal en números (sin convertir a letras)

Para obtener el nombre de la moneda en su forma apropiada (plural o singular) puedes usar este comodín:

$m: Nombre de la moneda, si el valor número es 1, entonces regresa el nombre en singular, si no regresa el nombre en plural.

Si tienes alguna duda sobre como generar algún formato que necesitas, puedes dejar un comentario al final del artículo y voy a incluir un ejemplo en este artículo y además te contestaré tu comentario.

Como crear y usar un formato predeterminado

Ahora ya sabes cómo generar el formato que mejor se adapta a tus necesidades y posiblemente sea el formato que más usas o el único que necesitas, el siguiente paso es hacer todo más sencillo definiendo tu formato predeterminado.

Sobre cualquier celda haz clic derecho con el mouse y verás dos menús que nunca habías visto. Por el momento nos interesa el que dice “Formato numLetras”, haz clic en él.

Numletras: Este es el menú para configurar un formato personalizado

Ahora puedes ingresar aquí los parámetros predeterminados para las monedas en singular y plural y el formato que necesitas. Luego guardas los datos y listo

Como definir un formato predeterminado para convertir números a letras

Ahora veamos cómo utilizar el formato predeterminado, selecciona la celda que contiene el número y haces clic derecho para mostrar el menú contextual, ahora haces clic sobre el menú “Convertir números a letras” y finalmente haces clic sobre la celda en donde necesitas el número en letras y verás que el complemento inserta automáticamente la formula con los parámetros predeterminados.

Trabajando con decimales.

Si tu número proviene de una fórmula, podrías tener varios decimales, por ejemplo 2.234 (Si vives en España imagina que escribí 2,234), bueno esto hará que el número pudiera mostrarse como: DOS con 234/100 dólares (dependiendo del formato que elijas).

Para corregir esto puedes usar la función de Excel REDONDEAR y aplicarla al valor numérico que le enviamos a la fórmula numletras, aquí hay un ejemplo:

=NumLetras(REDONDEAR(C6,2), "dolar","dolares")

¿Por qué el complemento es gratis?

Crear este complemento me tomo varias horas de trabajo, sin embargo, decidí ofrecerlo de forma gratuita para que tengas una idea de lo que puede lograrse cuando tienes un nivel avanzado de Excel. Espero que lo disfrutes y déjame un comentario para hacerme saber tu opinión sobre este artículo.

305 comentarios en «Como convertir números a letras en Excel [La mejor forma]»

  1. Para el caso colombiano, que son pesos le hice una pequeña corrección porque si es $45.000.000 debe aparecer cuarenta y cinco millones de pesos con 00/100 Ctvs.
    Las correcciones fueron:
    1. Function NumLetras(Valor As Currency, Optional MonedaSingular As String = ” PESO CON “, Optional MonedaPlural As String = ” PESOS CON “) As String
    2. VERMILLON = IIf(lyCantidad – (Int(lyCantidad / 1000000) * 1000000) = 0, ” DE”, “”)
    3. NumLetras = NumLetras & VERMILLON & IIf(ValorEntero = 1, MonedaSingular, MonedaPlural) & Format(Str(lyCentavos), “00”) & “/100 Ctvs”
    Agradezco por tu programa y espero que estas adiciones mejoren aun mas lo que hiciste.

    Responder
  2. Hola,

    Muchas gracias por el código, está genial.

    Yo lo necesitaba para recibos en Access y lo he modificado para que se muestre bien en España con los céntimos y he corregido también lo de “UN MIL”.
    Bueno, aquí lo dejo por si le sirve a alguien:

    ‘Funcion para pasar numeros a letras
    Function NumLetras(Valor As Currency, Optional MonedaSingular As String = “”, Optional MonedaPlural As String = “”) As String
    Dim lyCantidad As Currency, lyCentimos As Currency, lnDigito As Byte, lnPrimerDigito As Byte, lnSegundoDigito As Byte, lnTercerDigito As Byte, lcBloque As String, lnNumeroBloques As Byte, lnBloqueCero, lcCentimosTxt As String
    Dim laUnidades As Variant, laDecenas As Variant, laCentenas As Variant, I As Variant ‘Si esta como Option Explicit
    Dim ValorEntero As Long
    Valor = Round(Valor, 2)
    lyCantidad = Int(Valor)
    ValorEntero = lyCantidad
    lyCentimos = (Valor – lyCantidad) * 100
    laUnidades = Array(“UN”, “DOS”, “TRES”, “CUATRO”, “CINCO”, “SEIS”, “SIETE”, “OCHO”, “NUEVE”, “DIEZ”, “ONCE”, “DOCE”, “TRECE”, “CATORCE”, “QUINCE”, “DIECISÉIS”, “DIECISIETE”, “DIECIOCHO”, “DIECINUEVE”, “VEINTE”, “VEINTIUN”, “VEINTIDÓS”, “VEINTITRÉS”, “VEINTICUATRO”, “VEINTICINCO”, “VEINTISÉIS”, “VEINTISIETE”, “VEINTIOCHO”, “VEINTINUEVE”)
    laDecenas = Array(“DIEZ”, “VEINTE”, “TREINTA”, “CUARENTA”, “CINCUENTA”, “SESENTA”, “SETENTA”, “OCHENTA”, “NOVENTA”)
    laCentenas = Array(“CIENTO”, “DOSCIENTOS”, “TRESCIENTOS”, “CUATROCIENTOS”, “QUINIENTOS”, “SEISCIENTOS”, “SETECIENTOS”, “OCHOCIENTOS”, “NOVECIENTOS”)
    lnNumeroBloques = 1

    Do
    lnPrimerDigito = 0
    lnSegundoDigito = 0
    lnTercerDigito = 0
    lcBloque = “”
    lnBloqueCero = 0
    For I = 1 To 3
    lnDigito = lyCantidad Mod 10
    If lnDigito 0 Then
    Select Case I
    Case 1
    ‘Si es el último número y si es del 2º bloque y además es un uno, entonces no pongo el UN (evita el UN MIL)
    If Len(Trim(lyCantidad)) = 1 And lnNumeroBloques = 2 And Trim(lyCantidad) = 1 Then
    lcBloque = “”
    Else
    lcBloque = ” ” & laUnidades(lnDigito – 1)
    End If
    lnPrimerDigito = lnDigito
    Case 2
    If lnDigito <= 2 Then
    lcBloque = " " & laUnidades((lnDigito * 10) + lnPrimerDigito – 1)
    Else
    lcBloque = " " & laDecenas(lnDigito – 1) & IIf(lnPrimerDigito 0, ” Y”, Null) & lcBloque
    End If
    lnSegundoDigito = lnDigito
    Case 3
    lcBloque = ” ” & IIf(lnDigito = 1 And lnPrimerDigito = 0 And lnSegundoDigito = 0, “CIEN”, laCentenas(lnDigito – 1)) & lcBloque
    lnTercerDigito = lnDigito
    End Select
    Else
    lnBloqueCero = lnBloqueCero + 1
    End If
    lyCantidad = Int(lyCantidad / 10)
    If lyCantidad = 0 Then
    Exit For
    End If
    Next I
    Select Case lnNumeroBloques
    Case 1
    NumLetras = lcBloque
    Case 2
    NumLetras = lcBloque & IIf(lnBloqueCero = 3, Null, ” MIL”) & NumLetras
    Case 3
    NumLetras = lcBloque & IIf(lnPrimerDigito = 1 And lnSegundoDigito = 0 And lnTercerDigito = 0, ” MILLON”, ” MILLONES”) & NumLetras
    End Select
    lnNumeroBloques = lnNumeroBloques + 1
    Loop Until lyCantidad = 0

    ‘Pongo la moneda
    NumLetras = NumLetras & ” ” & IIf(ValorEntero = 1, MonedaSingular, MonedaPlural)

    ‘Los céntimos
    If lyCentimos > 0 Then
    If lyCentimos 0 Then
    lcCentimosTxt = lcCentimosTxt & ” Y ” & laUnidades(Mid(lyCentimos, 2, 1) – 1)
    End If
    End If
    NumLetras = NumLetras & ” CON ” & lcCentimosTxt & IIf(lyCentimos = 1, ” CÉNTIMO”, ” CÉNTIMOS”)
    End If
    End Function

    Responder

Deja un comentario