NumLetras: Función para pasar (convertir) números a letras

Te mostramos como crear tu propia función para convertir números a letras, esto puede serte de mucha utilidad si usas Excel para imprimir facturas o reportes en los que debas ingresar un numero en letras.

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

NOTA: Puedes saltarte todos estos pasos e ir directo a descargar la hoja de Excel con una macro para convertir los números a letras, si lo deseas. Si quieres que esta función este siempre disponible en tu Excel, puedes descargar e instalar este complemento gratis

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

Insertar un modulo de codigo en VBA

Ahora selecciona tu modulo (Module1)

Ventana de codigo para agregar la funcion

Y en la ventana derecha ingresa este texto:

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

Nota: Si tienes algún problema hasta ahora puedes consultar este articulo, que explica con mayor detalle como 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 calculo donde:

  1. A7 es una cantidad en números o celda que contiene un numero
  2. “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.
  3. “Dolares”, 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 calculo con la función ya creada. Si lo que deseas es que esta funcion este siempre disponible pudes descargar e instalar este complemento de excel. Si tienes problemas para instalarlo consulta el articulo para instalar complementos en Excel 2007 o 2010.

Recibe gratis!, un curso sobre funciones de Excel en 5 dias, directo a tu bandeja de correo.

  • Paulina

    Pero si pongo un numero mayor no funciona…. ejemplo 230.000 pesos

    • lcruz

      Gracias por tu comentario, ya corregí el archivo y lo subí de nuevo

    • Hola como stas? mi duda es como corregir un macro en el que al poner 1,000.00, en letras sale UN MIL UNO 00/100. GRACIAS POR TU RESPUESTA.

  • HBanchieri

    Te felicito, muy bueno el código.
    Se podría acrecentar la función NOMPROPIO ()?
    Esto para que el texto salga con el siguiente formato:
    Cuatro Mil Quinientos Cuarenta Y Cinco 98/100 Dolares
    y no como sale:
    CUATRO MIL QUINIENTOS CUARENTA Y CINCO 98/100 Dolares
    Claro que se podría anidar a la formula, pero pienso que seria mas practico si ya estuviera unida a la macro.

    Saludos

    • lcruz

      Gracias por tu comentario, vamos a tomarlo en cuenta y lo agregaremos para que las demás personas los descarguen con tu sugerencia.

      • Graciela

        buenos dias disculpa mi ignorancia tu me podrias mandar paso a paso como puedo grabarlo en una macro es que no puedo utilizar las macros

        te lo agradeceria demasiado

  • hola…. agradesco el aporte, en realidad a mi me sirve mucho, como es que no lo encontré antes??????????

    gracias!!!!!!!!!!!!

    • lcruz

      Me alegra que te haya sido útil.

  • JOrge

    hola como les va buen pos queria preguntarle como hacer que diga CUATRO MIL QUINIENTOS CUARENTA Y CINCO con 15 centimos por ejemplo y no CUATRO MIL QUINIENTOS CUARENTA Y CINCO 98/100 Dolares osea que no salga 98/100

    • lcruz

      Hola Jorge, puedes descargar el archivo, presionar ctrl+F11 para entrar en el editor y cambiar la linea del programa:

      NumLetras = NumLetras & ” ” & Format(Str(lyCentavos), “00”) & “/100 ” & IIf(ValorEntero = 1, MonedaSingular, MonedaPlural)

      Por esta otra:

      NumLetras = NumLetras & ” con ” & Format(Str(lyCentavos), “0”) & ” Céntimos”

  • Jorge

    Muy bueno, como puedo cargarlo como función de mi Excel.

    • lcruz

      Hola Jorge, he actualizado el articulo al final hay un enlace para descargar este ejemplo como un complemento de Excel. Los complementos estan siempre disponibles en cualquier hoja de calculo que tengas.

  • Verónica García

    EXCELENTE!! desde hace mucho quería esto!!
    Voy a interntar hacer un cambio (no se programar) y si no puedo te pregunto
    Mil Gracias!!

    • lcruz

      Me alegra que te haya sido util, y felicidades el primer paso es intentar.

      • Verónica García

        Si funciono!!!! solo puse el orden como se usa en México… pero si pude!!! Gracias

        • lcruz

          Felicidades, tengo por curiosidad, ¿como se usa en México?

          • Jose Ernesto

            Un ejemplo:
            Diez pesos 00/100 M.N.

            M.N.=Moneda Nacional

            Yo lo cambie y la línea terminaría de esta forma:

            NumLetras = NumLetras & ” ” & IIf(ValorEntero = 1, MonedaSingular, MonedaPlural) & ” ” & Format(Str(lyCentavos), “00”) & “/100 ” & “M. N.”

          • lcruz

            Gracias Jorge Enersto.

          • Nancy

            HOLA, ME URGE..NECESITO USAR LA FUNCIÓN, COMO SE USA EN MÉXICO, PERO NO ME DEJA USAR COMO LA PUSISTE, ME DICE QUE ESPERA FINAL DE INSTRUCCIÓN, ALGUIEN PUEDE AYUDARME CON ESO

    • Rolando

      ayudame pana necesito convertir numeros a letras pero son calificaciones
      ejemplo
      8,45=OCHO COMA CUARENTA Y CINCO
      7,00= SIETE COMA CERO
      8,01= OCHO COMA CERO UNO
      dame una ayudada con esto bro desde ya se te agradece

  • agustin

    exelente aporte! tengo una duda.
    una vez que lo habilito para usar, guardo y salgo del libro, cuando vuelvo a entrar no esta disponible la funcion.
    que podra ser?

    • lcruz

      Gracias. Para que este siempre disponible debes instalar el complemento, cuando lo instales debes copiarlo en un lugar y no moverlo, cambiar de nombre o eliminar el archivo del complemento (extension .xla)

  • Alvaro

    Muy bueno amigos, alguien me puede orientar para trasnformar lo siguiente: 205-8 a letras de la siguiente forma; dos cero ocho guion ocho.

    desde ya muchas gracias

  • pero la función esta excelente gracias

  • Hernan

    genial, gracias por compartir

  • Mario Navarro

    Excelente Función, espero ver más cosas útiles.
    Saludos

    • lcruz

      Gracias, haré todo lo posible por seguir escribiendo artículos útiles para todos.

  • javier

    hola, gracias por tu aporte, me podrias ayudar para pasar los datos numericos de los promedios de calificaciones, así: 8,90 = ocho con noventa decimas, 8,00 = ocho; 8.09=ocho con nueve decimas, telo agradezco.

  • sergio

    Gracias agradezco tu ayuda.

  • Rodrigo

    Mil gracias por compartir esta info, quisiera saber si es posible ampliar la macro de manera tal que se pueda trabajar con millardos, es decir cifras de 12 dígitos.

    Mil gracias!

    • lcruz

      Hola Rodrigo, lastimosamente la macro fue diseñada para numeros de hasta 999,999,999.99 que ya es un numero bastante alto. Puede ser ampliada pero requiere de cambios mayores.

  • Rodrigo

    Que lástima, mil gracias de todos modos.

  • Javier Nieto

    Buena y útil aplicación… Muchas gracias por compartirla.

    • lcruz

      Gracias Javier, me alegro que le haya sido útil

  • Amigo me ha encantado tu aporte.
    Descargué el complemento, lo he instalado pero noto que la numeración en decimales xx/100 no la quiero usar, solo la conversión directa del número a letras. ¿Cómo podría en mi caso al tener instalado el complemento y no poder modificar la línea de código correspondiente?
    Te agradezco 😉

    • lcruz

      Hola, solo debes editar la linea:

      NumLetras = NumLetras & ” ” & Format(Str(lyCentavos), “00”) & “/100 ” & IIf(ValorEntero = 1, MonedaSingular, MonedaPlural)

      Para quitar los decimales, puedes eliminar de la linea esta parte:
      Format(Str(lyCentavos), “00”) & “/100 ” &

      Para que lo sigas teniendo como un complemento puedes seguir estas instrucciones:

      http://excel.facilparami.com/2013/05/como-crear-complementos-para-excel-add-ins/

  • luis

    Requiero porfavor funcion en excel para cambiar a texto el total de una factura (cien pesos 00/100 m.n.) por favor me urge….gracias

    • lcruz

      Hola, puedes editar el ejemplo de este articulo, solo cambias la penultima linea por esta:

      NumLetras = NumLetras & ” ” & IIf(ValorEntero = 1, MonedaSingular, MonedaPlural) & ” ” & Format(Str(lyCentavos), “00″) & “/100 ” & “M. N.”

      • Felix

        Hola
        cuando ingreso en la penúltima linea el texto NumLetras = NumLetras & ” ” & IIf(ValorEntero = 1, MonedaSingular, MonedaPlural) & ” ” & Format(Str(lyCentavos), “00”) & “/100 ” & “M. N.” me dice Error de compilación. Que puedo hacer. Saludos.

  • Jonathan

    Muy funcional y si me sirvio, gracias, por el aporte..

  • JOSE

    Buenas es de muy util la aplicacion, pero me gustaria que me ayudaran cuando las cifras pasan de millones, ejemplo $3.545’100.300, tres mil quinientos cuarenta cinco millones cien mil trescientos, no esta contemplado dentro de esta funcion me gustaria que me colaboraran

  • Marisol

    Muchas gracias por el aporte.
    Tengo una consulta. ¿Cómo puedo agregar el “con” que iría entre los números enteros y los decimales?
    O sea, en lugar de que diga ” DOS MIL CUATROCIENTOS OCHENTA Y CUATRO 36/100″, necesito que diga: “DOS MIL CUATROCIENTOS OCHENTA Y CUATRO con 36/100”

    Muchas Gracias.

    • lcruz

      Hola Marisol, solo debes cambiar esta linea

      NumLetras = NumLetras & ” ” & Format(Str(lyCentavos), “00”) & “/100 ” & IIf(ValorEntero = 1, MonedaSingular, MonedaPlural)

      por esta otra

      NumLetras = NumLetras & ” con ” & Format(Str(lyCentavos), “00”) & “/100 ” & IIf(ValorEntero = 1, MonedaSingular, MonedaPlural)

      • Marisol

        MUCHISIMAS GRACIAS!

  • Juan

    Gracias, me ha sido de mucha ayuda

  • Juan Manuel

    Hola he estado buscando esta función durante mucho tiempo, y al fin la encontré, muchas gracias, pero quería ver si me puedes ayudar, de tal manera que el Excel me diga sobre esta cantidad ($123,45) “ciento veintitrés dólares con cuarenta y cinco centavos de dólar”, que es como se dice acá en mi país ecuador

    • lcruz

      Hola Juan Manuel, gracias por tu comentario, voy a hacer el cambio y lo publico esta semana.

  • claudia Bernal

    hola buen día necesito realizar una combinación de correspondencia, tengo la base de datos en excel, al realizar la combinación, los datos de fechas me los trae en formato dd/mm/yyy, y yo requiero que diga dd de mm de yy en la carta de word. alguien me puede colaborar

  • Paula

    Hola Felicitaciones excelente aplicación, siempre me había preguntado como hacerlo y ahora con esta super aplicación lo logre; tengo una duda ¿como puedo modificar la aplicación para que me aparezca el numero entero seguido de la connotación M/cte? que es como se usa en Colombia. Saludos y mil gracias

    • lcruz

      Hola Paula, gracias por tu comentario, si quieres me das un ejemplo de como debe de quedar para Colombia y hago la modificacion.

  • KARLA

    tengo un problema,… la cantidad en letras me sale sin espacios, por ejemplo:
    DIEZ MILPESOS00/100
    como lo puedo corregir???

    gracias

  • Jesús Muñoz

    Que tal, aprovechando lo excelente de tu código me permití realizar una modificación, esto con la finalidad de que funciones para mi país que es México.
    Esta modificación permite poner “DE” ANTES DE LA PALABRA “PESOS” cuando la cifra lo requiera, las personas de México sabrán a que me refiero.

    La siguiente línea de código es la que tenias en tu código original
    NumLetras = NumLetras & ” ” & Format(Str(lyCentavos), “00”) & “/100 ” & IIf(ValorEntero = 1, MonedaSingular, MonedaPlural)
    Y esto es lo que yo realice
    If (Right(NumLetras, 8) = “MILLONES” Or Right(NumLetras, 6) = “MILLON”) Then
    NumLetras = NumLetras & ” DE ”
    End If
    If Right(NumLetras, 2) = “UN” Then
    ValorEntero = 1
    End If
    NumLetras = NumLetras & ” ” & IIf(ValorEntero = 1, MonedaSingular, MonedaPlural) & ” ” & Format(Str(lyCentavos), “00”) & “/100 M.N.”

    Espero que este aporte sirva a alguien.

    • lcruz

      Gracias por tu aporte

  • Angel Gonzalez

    Muchas gracias por su aporte es de gran ayuda…

  • Mchavez

    Hola, tengo dias de querrer usar esta funcion, pero mi computadora tiene el Windows 7 prossional, que debo hacer, mucha gracias

    • lcruz

      Hola, no depende de la version de windows, si quieres puedo contactarte a tu email para que me des mas detalles del error que da.

  • Jesus

    Ta bueno estos codigos que te ayudan mucho a mejorar tu lógica en programacion

  • solutions

    ya lo probé funciona muy bien pero le falta que ponga pesos y después los centavos M.N.
    ejemplo : $ 15625.20
    Quince mil seiscientos veinticinco PESOS 20/100 M.N

  • Jorge Cuellar

    Excelente Funciona muy bien solo hay que tener cuidado en la transcripción

  • claudio

    estimado, no me funciona la Fx, ni tampoco el complemento…
    Tengo Excel 2011 (para mac), y me da el error “un valor utilizado en la formula es de un tipo de dato erroneo”

    alguna ayuda por favor, gracias.

    • lcruz

      Hola, lastimosamente este complemento esta hecho para windows, aunque las mac son de lo mejor, no son compatibles con muchos complementos para Excel, si tienes la posibilidad de crear macros en Excel, puedes intentar crearla directamente en tu mac. Como no tengo una mac, no podria darte los pasos a seguir.

  • Javier

    Enhorabuena!! Está genial. ¿Es posible que los centavos, en mi caso los céntimos de euro, se indiquen también en letra? Por ejemplo 328,12 € sería trescientos veintiocho euros con doce céntimos…

    • lcruz

      Puedo hacer el cambio, es esa la forma que se usa en Europa?

      • Javier

        Si. En Europa es como indiqué.
        Por ejemplo: 324.565,20 € se dice trescientos veinticuatro mil quinientos sesenta y cinco euros y veinte céntimo; 23,46€ se dice veintitrés euros y cuarenta y seis céntimos.

  • ALDO VARGAS

    SI QUIERO

  • Jhony

    Gracias…!!

  • Fernando

    ¿CON INSERTO EL IMPORTE CON NUMERO Y EN TEXTO SI LO TENGO EN UNA CELDA INDEPENDIENTE? Y FUNCIONA SI LO TENGO EXCEL PERO EN TABLA:
    EJEMPLO;
    R E C I B I : DE LA EMPRESA KARY S.A. , LA CANTIDAD DE $571, 268.69 (QUINIENTOS SETENTA Y UN MIL DOSCIENTOS SESENTA Y OCHO PESOS 69/100 M.N. ),

  • Fernando

    ¿CON INSERTO EL IMPORTE CON NUMERO Y EN TEXTO SI LO TENGO EN UNA CELDA INDEPENDIENTE? Y FUNCIONA SI LO TENGO EXCEL PERO EN TABLA:
    EJEMPLO;
    R E C I B I : DE LA EMPRESA KARY S.A. , LA CANTIDAD DE $571, 268.69 (QUINIENTOS SETENTA Y UN MIL DOSCIENTOS SESENTA Y OCHO PESOS 69/100 M.N. ),

  • Juan Carlos Hernandez

    Hola buen día, les comento que copie paso a paso todo, pero al momento de utilizarlo solo me sale 0/100 que me pudo hacer falta???

  • Luis Fernando

    Bien interesante y útil esta función para solución de trabajos tipo nómina. Bien diseñado el utilitario!

  • mauricio

    hola soy de chile y mi con saluta es puedes desirme como puedo cambiar la formula de letras para que salga de la siguiente manera:

    74.583 SETENTA Y CUATRO MIL QUINIENTOS OCHENTA Y TRES PESO

    sin esos cero al final del texto

    • lcruz

      Hola, en caso de que lleve centavos como queda el formato?

  • mferminco

    Como hacer si quiero evitar poner centavos o fracciones, por ejemplo “CINCO MIL TRESCIENTOS PESOS”? Lo uso en la Argentina. Muchísimas gracias!

    • lcruz

      Hola, en caso de que lleve centamos como queda el formato?

  • Santos

    muy buena, la utilizo para hacer facturar; pero cuando lo abren en la red la funcion indica la direccion de donde yo la uso, y la funcion sale ¿nombre?, se tiene que eliminar la parte de la direccion para que acceda la funcion. Se puede evitat esdo???

    • lcruz

      Hola, si lo haces a traves del complemento, deben instalarlo en las demas computadoras. Si no quieres que tengan que instalarlo puedes crear la macro dentro de todas las hojas en que lo utilices, o convertir el valor a texto y no formula. Cualquiera de los dos ultimos requiere mucho trabajo, lo mejor es que instalen el complemento en todas las computadoras que lo utilicen.

      Esto pasa por que al posicionarte en esa parte Excel trata de volver a calcular el valor y al no encontrar la funcion da un error

  • Santos

    explicando mejor mi problema sobre esta funcion:
    en mi pc la funcion es: =numletras(b9) con resultados satisfactorios. Pero cuando abre el archivo grabado la pc2 para modificar la función cambia a: =’C:\Documents and Settings\papelera01\Datos de programa\Microsoft\Complementos\numletras.xlam’!numletras(B9); y al aplicar la modificacion sale ¿nombre?. que hagooooo??

    • lcruz

      hola, en este caso se deberia de instalar el complemento en las demas computadoras de tu red.

  • cristhian

    Excelente aporte. Gracias.

  • leonardo

    Realmente muy útil. muchas gracias

    • Luis Cruz

      Gracias

  • Osvaldo Luis Quetglas

    muy bueno ya lo instalé y me funciona bien hice la corrección para que entre pesos y centavos ponga la palabra “con”, solo quiero que al principio me ponga la palabra “Son Pesos”, necedsito me indiques donde lo agrago, Muchas gracias por tu aporte

    • Luis Cruz

      Me alegro que te haya sido útil. El texto que devuelve la funcion esta en la variable NumLetras, asi que al final puedes editarla, por ejemplo antes de la linea 58 (End Function), agregas algo como :

      NumLetras = “Son Pesos ” & NumLetras

  • me sale que
    se ha detectado un nombre ambiguo

    • Luis Cruz

      Hola, es posible que tengas otra macro o complemento con el mismo nombre.

    • Osvaldo Luis Quetglas

      Tengo un libro de Excel que cuando lo abro no aparecen las pestañas de las hojas de cálculo, las que están debajo de cada hoja, necesito que me indiquen como hago para que aparezcan.
      Atte Osvaldo Luis Quetglas

      • Luis Cruz

        Hola, es posible que la hayan ocultado, si vez en la parte de abajo lo más a la izquierda de la barra de desplazamiento que esta abajo puedes hacer clic para arrastrar y mostrar las pestañas. Me avisas si con eso se resolvió tu problema.

  • Osvaldo Luis Quetglas

    Ya la tengo cargada desde hace un tiempo y funciona muy bién.Gracias por ayudarnos. yo me apoyo mucho en los tutoriales.

    • Luis Cruz

      Gracias por tu comentario, y me alegra que te haya sido útil.

  • angel

    exelente información saludos

  • MARIA EUGENIA ARIAS

    Hola, baje el archivo para convertir números a letras, tengo un problema, en mi país, Chile no usamos decimales en las cantidades,ejemplo:

    1.223.- Un mil doscientos veintitres pesos.
    Como elimino el 00/100 que viene en la macro.
    Desde ya gracias por tu ayuda.

    • Luis Cruz

      Hola, en la linea 57 debes borrar esta parte (esta casi al final de la macro)

      & Format(Str(lyCentavos), “00”) & “/100 “

  • Milton Zeballos

    Simplemente excelente, busque la opcion por todo lado y unicamente aqui se dio la respuesta clara. gracias

    • Luis Cruz

      Gracias!!, me alegra que te sea útil.

  • Miguel Aragon

    excelente ayuda que me permitirá hacer mi trabajo de una manera mas rápida. gracias

  • LIZ

    SUPER HARE MI TRABAJO MAS RAPIDO …GRACIAS

  • LIZ

    SUPER MAS RAPIDO MI TRABAJO…GRACIAS

  • humberto mor

    gracias por la herramienta, oye solo tengo un problemita, no me da la moneda de pesos solo dice…
    mil trescientos cuatro 00/100, como le hago para que salga pesos? gracias

  • Osvaldo

    Una opción que yo utilizo es colocar en una celda las palabras Son pesos: y en la celda siguiente la formula, entonces te queda Son pesos:Un mil quinientos etc.
    Atte Osvaldo

  • nelson

    genial

  • carlos

    Le felicito, me ha sido de gran ayuda

  • Aldo

    Excelente macro, muy buen trabajo.-

  • Julius

    Hola:

    Como hago para que antes de la fraccion de los decimales salga la palabra “CON”, es decir, Cincuenta y siete “con” 60/100 dolares.

    Gracias!

  • Ana

    Hola!

    Está excelente, traté de cambiarlo a como se usa en México copiando lo que puso José Ernesto en abril 29, 2013, pero no me sale.
    Yo no se nada de macros y copie el la última línea lo que él pone en el comentario pero entonces me sale #¿NOMBRE?
    ¿Me puedes ayudar?
    Gracias!

  • Fer

    Gracias por el aporte, siempre es bueno compartir el conocimiento

  • ssf

    Excelente aporte, funciona perfecto, muchas gracias!

  • Osvaldo Luis Quetglas

    Hola Juan David. no me acuerdo pero me parece que debe ser que has copiado la fórmula con los números que están a la izquierda y esos no van, son unos números de orden 1,2,3,4,etc. borralos y probá asi.Esta es la que yo uso-
    ‘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, lyCentavos As Currency, lnDigito As Byte, lnPrimerDigito As Byte, lnSegundoDigito As Byte, lnTercerDigito As Byte, lcBloque As String, lnNumeroBloques As Byte, lnBloqueCero
    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
    lyCentavos = (Valor – lyCantidad) * 100
    laUnidades = Array(“Uno”, “Dos”, “Tres”, “Cuatro”, “Cinco”, “Seis”, “Siete”, “Ocho”, “Nueve”, “Diez”, “Once”, “Doce”, “Trece”, “Catorce”, “Quince”, “Dieciseis”, “Dicisiete”, “Dieciocho”, “Diecinueve”, “Veinte”, “Veintiuno”, “Vintidos”, “Veintitres”, “Veinticuatro”, “Veinticinco”, “Veintiseis”, “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
    lcBloque = ” ” & laUnidades(lnDigito – 1)
    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
    NumLetras = NumLetras & ” con ” & Format(Str(lyCentavos), “00”) & “/100 ” & IIf(ValorEntero = 1, MonedaSingular, MonedaPlural)
    End Function

    Osvaldo.

  • Martin

    Buen día:
    Gracias por el artículo. Tengo las siguientes observaciones:
    1. Cuando el valor es mayor que 999.999.999, la función no convierte.
    2.Que puedo hacer para registrar valores iguales o mayores a mil millones (1.000.000.000)?

    Mil gracias por su colaboración

  • Angelo Muchiba

    Excelente trabajo, me ha servido de mucho el articulo. Por fin he logrado convertir números a letras.

  • Daniel

    Muchas gracias por esta función, quisiera consultar como hago para eliminar la extensión de centavos, es que la moneda de Paraguay no los usa.

  • Vidal Jose

    Requiero una plantilla para fijar las notas de mi grado por ejemplo:

    Nota: 8.75
    letras: ocho con setentay cinco centésimas

  • agustin

    yo qwuisiera saber si uno coloca por decir algo 125 lo podria traducir en letra de esta forma IB-PB-IA LO QUE QUIERO EN LECTURA SERIA INPAR BAJO-PAR BAJO – INPAR ALTO SE PODRIA ASER ESA CON ESA FORMULA

  • yo qwuisiera saber si uno coloca por decir algo 125 lo podria traducir en letra de esta forma IB-PB-IA LO QUE QUIERO EN LECTURA SERIA INPAR BAJO-PAR BAJO – INPAR ALTO SE PODRIA ASER ESA CON ESA FORMULA

  • Violeta

    Excelente explicación, muy completo.

  • Xavi

    Hola, quiero hacer lo siguiente, que al poner un número aparezca una palabra no cantidad, por ejemplo si pongo en número 2 en determinada celda me salga la palabra elote y en otra celda salga la palabra hervido.
    es decir que en la celda A1,pongo el número uno y en la celda a2 elote, celda a3 hervido salgan las palabras que digo, se puede hacer esto ? por favor ayudeme

  • angixz

    Muchas gracias. Es de mucha utilidad.
    Solo hay que tener cuidado en guardarlo directamente en la carpeta de complementos de office.

  • Jose

    Como hago que funcione en MAC…….

    • lcruz

      Las macros de office para Windows no son 100% compatibles para el office para Mac. Lastimosamente no tengo una mac para hacer las pruebas.

  • Angus

    Hola! Estaba buscando una función que haga esto pero para usarla con calificaciones.
    Se puede modificar esta función para agregar la palabra COMA entre los enteros y los decimales y que devuelva los decimales expresados en letras también?

    Ej: Para 8,43
    Mostrar OCHO COMA CUARENTA Y TRES

    Para 2,4
    Mostrar DOS COMA CUATRO

  • DIEGO ROMERO

    hola, como le hago si quiero poner la palabra pesos o dolares antes de 00/100???

  • EDGAR ARANDA

    YA REALICE LA CORRECCION:

    ‘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, lyCentavos As Currency, lnDigito As Byte, lnPrimerDigito As Byte, lnSegundoDigito As Byte, lnTercerDigito As Byte, lcBloque As String, lnNumeroBloques As Byte, lnBloqueCero
    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
    lyCentavos = (Valor – lyCantidad) * 100
    laUnidades = 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”)
    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
    lcBloque = ” ” & laUnidades(lnDigito – 1)
    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
    NumLetras = NumLetras & ” ” & Format(Str(lyCentavos), “00”) & “/100 ” & “M.N.” & IIf(ValorEntero = 1, MonedaSingular, MonedaPlural)
    End Function

  • Juan Manuel

    Un código casi igual copié de otro foro. Y el detalle que les encuentro a los dos, por lo menos para mi que soy de Argentina. Es que los números: 31, 41, 51, 61, 71, 81, 91 los traduce “cuarenta y un” y la forma correcta para mi caso sería que se escribiera “cuarenta y uno”.
    Corregir ese detalle se puede o es mucho lio??

    • Fijate en donde dice “UN”,”DOS”etc.ese “UN” modificalo que diga “UNO” y está listo

  • Muchas gracias, un programa como debe ser, corto y bien hecho

  • Que excelnte muy agradecido

  • Gracias, funciona muy bien, sin embargo en mi opinión no tiene sentido pasar a letras y luego poner 05/100 creo que se debiera poner “con cinco céntimos”.
    Yo lo he resuelto así para un valor en A1: =MINUSC(SI(RESIDUO(A1;1)=0;CONCATENAR(IZQUIERDA(NumLetras(ENTERO(A1));LARGO(NumLetras(ENTERO(A1)))-7);” EUROS”);CONCATENAR(IZQUIERDA(NumLetras(ENTERO(A1));LARGO(NumLetras(ENTERO(A1)))-7);” EUROS CON “;IZQUIERDA(NumLetras(RESIDUO(A1;1)*100);LARGO(NumLetras(RESIDUO(A1;1)*100))-7); “CENTIMOS”)))

  • Buen aporte, sin embargo necesito que diga “ochocientos pesos 00/100” en vez de que la moneda salga hasta el final.

    Saludos.

  • EXCELENTE APORTE…MUCHAS GRACIAS POR SU AYUDA

  • Me puede indicar que modificación debo de realizar en la función para que el importe en letra sea en mayusculas. Gracias

  • COMO PUEDO DEJAR VALOR ENTEROS EJEMPLO:

    27 EN LETRAS QUE SOLO ME DIGA 27

    GRACIAS

  • Como puedo hacer que solo me escriba en letras un valor entero ejemplo:

    27 y que lo me escriba veintisiete

  • Excelente aportación, es de mucha utilidad. Gracias por compartirla.

  • HOLA BUENAS TARDES, ESTA MUY BIEN LA FORMULA SE PODRÍA QUE SE MODIFICARA PARA QUE POR EJEMPLO LA CANTIDAD $3,314.97 SE PUDIERA CONVERTIR DE LA SIGUIENTE MANERA?:
    TRES MIL TRESCIENTOS CATORCE PESOS 97/100 M.N.
    TAMBIEN EN LETRA MAYUSCULA.
    TE LO AGRADECERÍA MUCHO.
    DE ANTEMANO MUCHAS GRACIAS!!!

  • HOLA BUENAS TARDES, ESTA MUY BIEN LA FORMULA SE PODRÍA QUE SE MODIFICARA PARA QUE POR EJEMPLO LA CANTIDAD $3,314.97 SE PUDIERA CONVERTIR DE LA SIGUIENTE MANERA?: TRES MIL TRESCIENTOS CATORCE PESOS 97/100 M.N. TAMBIEN EN LETRA MAYUSCULA. TE LO AGRADECERÍA MUCHO.

  • TENGO UN PROBBLEMA AL UN NUMERO EJEMPLO: 24 = VEITI CUATRO 0 QUISIERA QUE CONVIERTA SIN CERO AL FINAL

  • Ramon Cobeña

    buenas tardes , gracias por esta ayuda, pero no me sale el resultado la palabra dolares por ejemplo $ 450.00 cuatrocientos cincuenta 11/100 Dolares,,,,, por favor como hago para que salga esta palabra

  • mauricio moncada

    mil gracias, fue de gran ayuda!!!!

  • Norberto C

    Agradecido, lo uso para mis cotizaciones, y me facilita la tarea.
    excelente aporte.

  • JESUS

    mi duda:
    tengo la cantidad de $5,500.00 y con la formula me aparece “cinco mil quinientos 00/100 pesos” quisiera que el resultado fuera a si “cinco mil quinientos pesos 00/100 m.n.”

  • Jose Tovar

    Mis respetos con esta funcion, Felicidades!! y Muchas gracias

  • WILSON CEDEÑO

    Igual que a Rolando, requiero escribir las calificaciones tanto en número como en letras, que la expresión después del entero diga “coma” y si existiera cero en la décima y centésima diga “cero” “cero”. así:
    9,75= Nueve coma setenta y cinco.
    10,00= Diez coma cero cero.
    7,00= Siete coma cero cero.
    7,08= Siete coma cero ocho.
    1,50= Uno coma cincuenta.
    De antemano agradezco su ayuda, no sin antes de felicitarle por compartir vuestro conocimiento.

  • GERSON

    INGRESO LA CANTIDAD Y AL DARLE ENTER NO ME CAMBIA EN LETRAS SE QUEDA CON EL ULTIMO REGISTRO QUE SE HA UTILIZADO
    TENGO QUE ABRIR LA CELDA Y DARLE ENTER
    SE PUEDE HACER QUE CAMBIE EN AUTOMATICO???

  • Quisiera saber como quitar los centavos de la palabra por ejemplo ochentamil pesos con cero centavos
    Toca con otra formula o como

  • Pablo (Chile)

    Estimado
    Quisiera saber como dejarlo para pesos chilenos, por ejemplo:
    $123.456 Ciento veintitrés mil cuatrocientos cincuenta y seis pesos.-
    Lo otro cuando tengo un valor como:
    $123.456,6 excel lo aproxima y lo deja como: $123.457 peros las palabras aparecen como : Ciento veintitrés mil cuatrocientos cincuenta y seis pesos.-

    Agredecería me dijeran como puedo hacerlo.
    Gracias.

  • Afinador

    Tengo Office 2013 Professional Plus La opción de Visual Basic no está activa en mi cinta de opciones, activé la casilla de desarrollador pero Visual Basic aparece en color gris claro, es decir no puedo utilizarla, alguna idea de que puede estar sucediendo???

  • jair venezuela

    Hola, la funcion es muy buena. Sin embargo, tengo la misma duda de otros usuarios a los q no se ha respondido su inquietud. Si quiero expresar un numero entero (ej. 16) en letras(ej. Dieciseis) como podria midificar la la programacion? Por favor, ayudeme con esto. Y gracias de antemano

  • YUNUEL

    UNA PREGUNTA ¿COMO HAGO QUE MI VALOR YA CONVERTIDO EN LETRAS APARESCA ENTRE PARENTESIS?

    • lcruz

      Puedes agregar los paréntesis en tu formula, por ejemplo puedes cambiar de

      =numletras(“A1”)

      a

      = “(” & numletras(“A1”) & “)”

      • luna

        hola, me podrias ayudar en mi caso para que el numero 3.000.000 sea en letras “tres millones de pesos ” y no “tres millones pesos” como podría cambiarla gracias

  • brenda

    me arroja que hay un error en esta sintaxis
    If lnDigito <> 0 Then

  • Janeth

    Hola, tengo una duda, si es que ya tengo la función en español, pero la necesito en español y en inglés para el mismo libro de trabajo…?

  • Monica Batres

    Hola muchas gracias por la función, tengo el problema que cuando vuelvo a abrir el libro de Excel ya no me corre la función de números y me aparece esto:=’C:\Users\USUARIO\Downloads\numletras (1).xla’!NumLetras(AU28,”QUETZAL”,”QUETZALES”) y cada vez que quiero usarla tengo que volver a bajarla. Será que estoy obviando algún paso? Muchas gracias por la explicación

    • lcruz

      Hola, lo mejor es que uses la version de complemento (add-in) y la instales

  • Adrian

    Excelente trabajo!! Muchas gracias, me fue de mucha ayuda!!

  • Maria

    Hola muy buena información… Como puedo hacer para q salga cien pesos 00/100 m.n en lugar de cien 00/100

  • Saul Lopez

    Hola luis cruz, descargue la versión completa, pero quisiera que en ver de que dijera Cuatro mil quince 21/100 Quetzales. que me lo muestre como . Cuatro mil quince Quetzales con 21/100.
    Disculpa los inconvenientes pero es que e estado intentando de varias formas observando las conversaciones con los usuario y las soluciones que les das pero no he podido, NECESITO AYUDA.
    de antemano muchas Gracias.

  • Eva

    Hola buenos dias, Como puedo hacer para convertir numeros continuos a letras: Ejemplo 06142907580001, gracias por tu ayuda.

  • Alejandro

    muy útil.
    puedas ayudarme para que diga la cantidad como sigue:
    ejemplo. 25.25
    veinticinco dolares con veinticinco centavos de dolar
    gracias

  • Juan Herrera

    me nevia un mensaje de error y bloque en amarillob esta parte de la función necesito ayuda al rspecto.
    Function NumLetras(Valor As Currency, Optional MonedaSingular As String = “”, Optional MonedaPlural As String = “”) As String

    De antemano gracias

    • lcruz

      Hola, parece que el navegador cambio las comillas rectas por ese otro tipo de comillas, puedes cambiarlas por estas comillas: “”

  • Juan Herrera

    Muy Buenas tardes: Necesito ayuda urgente y que no me funciona la macro me envia el siguinete mensaje:
    Error en complilación . la instrucción no es valida duera del bloque Type, y resalta en amarillo la primera fila de la macro.

  • Sebastian Ascencio

    EXCELENTE HERRAMIENTA, AMIGO FELICITACIONES Y MUCHAS GRACIAS, ME SERA UTIL YA QUE CASI A DIARIO TENIA QUE TECLEAR CANTIDADES CON LETRAS, SALUDOS DESDE COATZACOALCOS, VERACRUZ, MEXICO

  • KAREN

    Hola soy de Colombia, ya descargue el complemento ya me aparecen los valores pero no se como hacer para que no me salgan los números que hay después de las letras quiero que me salga $500.000 QUINIENTOS MIL PESOS M/CTE no se si es posible? Espero me puedan colaborar

  • Sergio

    Excelente, mil gracias por este muy buen aporte, efectivo y claro en tus explicaciones, espero que sigas brindando mas funciones en este mundo informatico para los que no somos programadores.

  • ines

    hola me he descargado el complemento siguiendo las insucitrones para Excel 2010 , pero no se que tengo que hacer ahora para convertir una cantidad por ejemplo 25130,20€ a letras por ejemplo para que me ponga en letras mayúsculas VEINTI CINCO MIL TREINTA EUROS Y VEINTE CENTIMOS, te agradecería que me lo explicaras porque he cambiada de trabajo y tengo que hacer muchos escritos, gracias

  • Juan

    excelente! mil gracias, muy util!

  • Ricardo

    Muchas gracias de antemano. ¿Como puedo hacer que el macro se inicie siempre que abra excel?

  • Oscar Sánchez

    Hola,

    Tengo un problema: Yo uso Excel 2010. Resulta que descargo el archivo de Excel con la macro que contiene la función para convertir números en letras y cuando lo doy click a alguna celda, de inmediato se desconfigura la función.

    Qué hago, cómo soluciono este problema????

  • luisa

    hola necesito de tu ayuda lo que sucede es que e seguidos los pasos tal como dice copie todas las formas de letra que salen en la pagina y me sale 00/100 y no quiero que me salga esto a si el valor son 15.000.000 millones pero necesito que me salga QUINCE MILLONES DE PESOS MONEDA CORRIENTE POR FA ME PUEDEN AYUDAR o sera que lo estoy haciendo mal Mil GRACIAS

  • Andrés

    fantástico código! le hice una pequeña modificación en la parte final para que no saliera el texto 00/100 dólares
    quedo genial en la planilla que usamos para las ordenes de compra.

    muchas gracias por compartirlo

  • Wilber

    Hola mi estimado si el numero fuera asi 01938563-9 como seria la formula, ya que aparece error por el guion, y yo necesito que diga el numero guion numero, si me puedes ayudar te lo agradeceria, Gracias

  • Esther

    Hola:
    Soy de España y yo necesitaría que los números apareciesen del siguiente modo:

    2.345,26 DOS MIL TRESCIENTOS CUARENTA Y CINCO EUROS CON VEINTISÉIS CÉNTIMOS.

    También necesitaría que cuando el número está comprendido entre mil y dos mil no ponga “Un mil” que tan sólo ponga Mil

    ¿Es posible? ¿Supondría mucho trabajo?. Yo no se programar, soy usuaria de la informática.

    Muchísimas gracias anticipadas. Un saludo

  • Ricardo

    Excelente Macro, felicitaciones por tan buen dato

  • Ricardo

    Soy de Guayaquil – Ecuador, y otra vez los felicito, totalmente abiertos ustedes para compartir y enseñar

  • Eduardo

    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.

  • ORNELAS

    Excelente amigo, muchas gracias

  • Ariel

    Muchas gracias. Funciona bien y me sirve. Saludos,

  • Eve Juan

    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

    • ui

      Ya por encima se ve que hay errores de sintáxis, por ejemplo “If lyCentimos 0 Then” y “If lnDigito 0 Then”, y que habrá que sustituir esas comillas dobles.

  • Adrián

    Hola. Muchísimas gracias por la función.

    Quería saber cómo puedo hacer para que en vez de mostrar los céntimos como xx/100 lo haga también en letras precedida de un “con” o añada “exactos” si es un número entero. Por ejemplo:

    2156,25 – “Dos mil ciento cincuenta y seis con veinticinco céntimos”.

    2156,00 – “Dos mil ciento cincuenta y seis exactos”.

    He modíficado el código para que coloque la unidad monetaria de primero, pero no logro hacer que escriba los céntimos en letra.

    Gracias de antemano.

  • juan

    hola

    esta super la formula, pero necesito que no me salga 00/100
    que hago?

    gracias

  • Juan

    Hola estimados.
    Primeramente gracias por esta función me ha sido de mucha ayuda.
    pero me encontré con un inconveniente que en ves de salir 00/100 me sale 100/100 y no creo que tenga nada que ver con la operación porque estoy utilizando solo dos decimales. Pueden hacer la prueba.

    552.18-52.18=500.00
    CUATROCIENTOS NOVENTA Y NUEVE 100/100 DOLARES

    552.19-52.19=500.00
    QUINIENTOS 00/100 DOLARES

    Estaba chequeando otras cantidades y hay muchísimas más que tienen este problema.
    Espero me puedan ayudar.

  • Lilian Martínez

    Hola muchas gracias por el aporte, los quería molestar cual es la función para que me aparezca (Q.2,630.55) de la siguiente manera: Dos mil seiscientos treinta quetzales con cincuenta y cinco cts

  • The-Miguel

    Genial, lo acabo de copíar he realizado algunas pequeñas modificaciones con respecto al nombre de la moneda de mi país (Perú), y funciona muy bien. Gracias por este aporte……..esta genial.Saludos………

  • ARMANDO

    QUE TAL, UNA DUDA CUANDO CAMBIO POR ESTA LINEA NumLetras = NumLetras & ” ” & IIf(ValorEntero = 1, MonedaSingular, MonedaPlural) & ” ” & Format(Str(lyCentavos), “00”) & “/100 ” & “M. N.”

    ME DICE “SE ESPERABA FIN DE LA INSTRUCCIÓN” QUE PUEDO HACER??? GRACIAS

    • lcruz

      Hola, por error borraste también esta linea? “End Function”

  • Ingrid Delgado

    Gracias …….

  • Lilian Martínez

    Hola buenas tardes,
    me podrían apoyar con esta función porfavor, convertir (Q.2,630.55) de la siguiente manera: Dos mil seiscientos treinta quetzales con cincuenta y cinco cts

    Gracias

  • Miguel Peres

    Buenas es de muy util la aplicacion 100 punto gracias por tu aporte, pero me gustaria que me ayudaran con estas sifras,
    ej. 7952380,431
    Siete millones novecientos cincuenta y dos mil trescientos ochenta punto cuatrocientos treinta y uno

    solo quiero que lo lea los nuemoros sin ningun balor de moneda y con tres digitos despues de la coma.
    no esta contemplado dentro de esta funcion me gustaria que me colaboraran
    los agradeceria tu ayuda .

  • Kantuta Diaz

    Muchas pero muchisimas gracias. No sabe usted de cuanta ayuda a sido esta valiosa herramienta.

    • lcruz

      Me alegra mucho saber que le sea util. 🙂

  • Carlos Gonzalez

    Hola Buenas Tardes; Mi Pais es Guatemala y aca normalmente cuando colocamos valores en letras colocamos por ejemplo asi el Total Q.2,023.10 y lo colocamos en letras asi: Son Dos Mil Veintitres Quetzales con 10/100. como puedo aplicar esto a la formula..? =NumLetras.
    Agradecere sus comentarios al Respecto. Saludos.

    • Didier Venegas

      Cambia la última instrucción de la función, antes de End Function por:
      NumLetras = “Son ” & NumLetras & ” ” & IIf(ValorEntero = 1, MonedaSingular, MonedaPlural) & ” CON ” & Format(Str(lyCentavos), “00”) & “/100 ”
      Si quieres cambiar solo mayúsculas por mayúscula inicial en cada palabra, debes hacer los cambios respectivos en las líneas 9, 10 y 11. Recuerda que la moneta “Quetzal” o “Quetzales” las pones como parámetro de la invocación dela función. Así: NumLetras(CELDA;”Quetzal”;”Quetzales”)

  • Darwin Calvopiña

    Me podrías apoyar con que lea los siguiente:
    cero coma cero uno hasta diez coma cero

  • ELBA

    Hola. Por favor cómo puedo hacer para que cuando el número sea 1000 no escriba UN MIL. Gracias

  • ELBA

    Hola. Por favor quisiera saber como hago para que me escriba la cantidad en letras de la siguiente forma: Ejemplo: DOS MIL CUATROCIENTOS CON TREINTA Y CINCO.
    Sin colocar 35/100. Gracias!!!

  • Juan Carlos Gomez

    Excelente función me saco de apuros, muchas gracias

  • Paulo Gaibor

    Que bueno muchas gracias por tomarse su tiempo para ayudar un buen samaritano. Quisiera ver si me puedes ayudar siguiendo los pasos he logrado realizar y he podido cambiar a minúsculas pero como puedo poner solo la primera letra en mayúsculas ejemplo: ($ 11,603.20 )
    once mil seiscientos tres con 20/100 dólares americanos. En donde once diga Once. Gracias por su colaboración.

  • Herrera Claudia

    Gracias!!!! ♥