Como convertir números a letras en Excel

Escrito por Luis Cruz | última actualización: 07 de septiembre del 2020


Si tienes que generar recibos, cheques, facturas, etc. en Excel, escribir las cantidades en letras puede ser una tarea difícil. Por eso en este articulo te muestro como hacerlo de forma automática.

La forma más sencilla de convertir números a letras

Voy a mostrarte como generar el contenido en la columna B a partir de la columna A, de forma totalmente automática.

Muestra un ejemplo de como pasar o convertir números a letras mediante una funcion propia en Excel

He creado un complemento de Excel, que automatiza este proceso, si nunca has usado o instalado un complemento puedes leer este artículo que explica cómo puedes instalar un complemento en Excel.

Puedes descargar en este enlace el complemento gratis para convertir números a letras.

Una vez instales el complemento tendrás una función adicional en Excel, la función se llama numletras, esta recibe 3 parámetros, el primero es la cantidad en números, el segundo es el nombre de la moneda en singular, y el tercero es el nombre de la moneda en plural. Aquí hay un ejemplo:

=NumLetras(D12;"Dolar";"Dolares")
Ejemplo de cómo convertir números  a letras en Excel

Convertir números a letras sin usar el complemento

Si deseas crear la macro tú mismo, en lugar de usar un complemento puedes hacer siguiendo estas instrucciones:

Primero ingresa a VBA presionando las teclas Alt+F11, e inserta un Módulo (Si ya tienes un módulo no necesitas insertar uno nuevo)

Insertar un modulo de codigo en VBA, para convertir numeros a letras en Excel
Crear un módulo VBA

Ahora selecciona tú módulo (Module1)

Ventana de codigo para agregar la funcion
Ejemplo de macros – vba

Y en la ventana derecha ingresa este texto:

Function NumLetras(Valor As Currency, Optional MonedaSingular As String = "", Optional MonedaPlural As String = "") As String
Dim Cantidad As Currency, Centavos As Currency, Digito As Byte, PrimerDigito As Byte, SegundoDigito As Byte, TercerDigito As Byte, Bloque As String, NumeroBloques As Byte, BloqueCero
Dim Unidades As Variant, Decenas As Variant, Centenas As Variant, I As Variant 'Si esta como Option Explicit
Dim ValorEntero As Long
Dim ValorOriginal As Double
    Valor = Round(Valor, 2)
    Cantidad = Int(Valor)
    ValorEntero = Cantidad
    Centavos = (Valor - Cantidad) * 100
    Unidades = Array("UN", "DOS", "TRES", "CUATRO", "CINCO", "SEIS", "SIETE", "OCHO", "NUEVE", "DIEZ", "ONCE", "DOCE", "TRECE", "CATORCE", "QUINCE", "DIECISEIS", "DIECISIETE", "DIECIOCHO", "DIECINUEVE", "VEINTE", "VEINTIUN", "VEINTIDOS", "VEINTITRES", "VEINTICUATRO", "VEINTICINCO", "VEINTISEIS", "VEINTISIETE", "VEINTIOCHO", "VEINTINUEVE")
    Decenas = Array("DIEZ", "VEINTE", "TREINTA", "CUARENTA", "CINCUENTA", "SESENTA", "SETENTA", "OCHENTA", "NOVENTA")
    Centenas = Array("CIENTO", "DOSCIENTOS", "TRESCIENTOS", "CUATROCIENTOS", "QUINIENTOS", "SEISCIENTOS", "SETECIENTOS", "OCHOCIENTOS", "NOVECIENTOS")
    NumeroBloques = 1
    
    Do
        PrimerDigito = 0
        SegundoDigito = 0
        TercerDigito = 0
        Bloque = ""
        BloqueCero = 0
        For I = 1 To 3
            Digito = Cantidad Mod 10
            If Digito <> 0 Then
                Select Case I
                Case 1
                    Bloque = " " & Unidades(Digito - 1)
                    PrimerDigito = Digito
                Case 2
                    If Digito <= 2 Then
                        Bloque = " " & Unidades((Digito * 10) + PrimerDigito - 1)
                    Else
                        Bloque = " " & Decenas(Digito - 1) & IIf(PrimerDigito <> 0, " Y", Null) & Bloque
                    End If
                    SegundoDigito = Digito
                Case 3
                    Bloque = " " & IIf(Digito = 1 And PrimerDigito = 0 And SegundoDigito = 0, "CIEN", Centenas(Digito - 1)) & Bloque
                    TercerDigito = Digito
                End Select
            Else
                BloqueCero = BloqueCero + 1
            End If
            Cantidad = Int(Cantidad / 10)
            If Cantidad = 0 Then
                Exit For
            End If
        Next I
        Select Case NumeroBloques
            Case 1
                NumLetras = Bloque
            Case 2
                NumLetras = Bloque & IIf(BloqueCero = 3, Null, " MIL") & NumLetras
            Case 3
                NumLetras = Bloque & IIf(PrimerDigito = 1 And SegundoDigito = 0 And TercerDigito = 0, " MILLON", " MILLONES") & NumLetras
        End Select
        NumeroBloques = NumeroBloques + 1
    Loop Until Cantidad = 0
    
    'Millardos
    If Valor >= 1000000000 Then
        Dim millardos As Currency
        Dim millarodsInt As Integer
        Dim letras_Millardos As String
        millarodsInt = Int(Valor / 1000000000)
        millardos = millarodsInt
        
        letras_Millardos = Replace(Trim(NumLetras(millardos)), "00/100", IIf(millarodsInt = 1, "MILLARDO", "MILLARDOS"))
        NumLetras = letras_Millardos & NumLetras
    End If
    
    NumLetras = Trim(NumLetras) & " " & Format(Str(Centavos), "00") & "/100 " & IIf(ValorEntero = 1, MonedaSingular, MonedaPlural)
End Function

Y guarda los cambios presionando Ctrl+S o con el botón de Guardar en la barra de herramientas.

Nota: Si tienes algún problema hasta ahora puedes consultar este artículo, que explica con mayor detalle cómo crear una función propia.

Como usar la función para convertir los números a letras.

Puedes usar esta función como cualquier otra ingresando =NumLetras(A7,»Dolar»,»Dolares») en tu hoja de cálculo donde:

  • A7 es una cantidad en números o celda que contiene un número
  • «Dolar» es opcional y se usa para poner el nombre de la moneda en el texto convertido, puedes usar otras monedas como Peso, Lempira, etc.
  • «Dólares», es también opcional y se usa para mostrar la moneda en plural, puedes dejarlo en blanco o ingresar otra moneda como Pesos, Lempiras, etc.

Si tuviste algún problema o quieres ver una demostración puedes bajar esta Hoja de cálculo con la función ya creada. Si lo que deseas es que esta función esté siempre disponible puedes descargar e instalar este complemento de excel. Si tienes problemas para instalarlo consulta el artículo para instalar complementos en Excel 2007 o 2010.

Esta es una muestra de todo lo que puedes hacer usando macros, el cielo es el límite, pero si aún no conoces mucho sobre macros o VBA, entonces este libro es perfecto para ti. Al final del año (2020) voy a publicar la segunda edición, que contendrá más de 100 macros de ejemplos. Todos los que compren esta primera edición, tendrán acceso a la segunda edición, porque simplemente voy a enviarlo como una actualización de libro, disponible para todas las compras previas.