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.

134 Respuestas

  1. 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

  2. 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.

  3. Nicolas:

    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.

  4. 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”

  5. 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.

  6. 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.

    • 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

  7. 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?

  8. 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

  9. Argelio Victoria:

    pero la función esta excelente gracias

  10. Hernan:

    genial, gracias por compartir

  11. 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.

  12. 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.

  13. sergio:

    Gracias agradezco tu ayuda.

  14. 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.

  15. Rodrigo:

    Que lástima, mil gracias de todos modos.

  16. Javier Nieto:

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

    • lcruz:

      Gracias Javier, me alegro que le haya sido útil

  17. Jh®:

    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/

  18. 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.”

  19. Jonathan:

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

  20. 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

  21. 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!

  22. Juan:

    Gracias, me ha sido de mucha ayuda

  23. 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.

  24. 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

  25. 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.

  26. KARLA:

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

    gracias

  27. 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

  28. Angel Gonzalez:

    Muchas gracias por su aporte es de gran ayuda…

  29. 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.

  30. Jesus:

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

  31. 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

  32. Jorge Cuellar:

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

  33. 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.

  34. 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.

  35. ALDO VARGAS:

    SI QUIERO

  36. Jhony:

    Gracias…!!

  37. 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. ),

  38. 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. ),

  39. 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???

  40. Luis Fernando:

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

  41. 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?

  42. 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?

  43. 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

  44. 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.

  45. cristhian:

    Excelente aporte. Gracias.

  46. leonardo:

    Realmente muy útil. muchas gracias

    • Luis Cruz:

      Gracias

  47. 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

  48. Juan David Diaz:

    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.

  49. 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.

  50. angel:

    exelente información saludos

  51. 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 “

  52. 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.

  53. Miguel Aragon:

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

  54. LIZ:

    SUPER HARE MI TRABAJO MAS RAPIDO …GRACIAS

  55. LIZ:

    SUPER MAS RAPIDO MI TRABAJO…GRACIAS

  56. 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

  57. 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

  58. nelson:

    genial

  59. carlos:

    Le felicito, me ha sido de gran ayuda

  60. Aldo:

    Excelente macro, muy buen trabajo.-

  61. 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!

  62. 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!

  63. Fer:

    Gracias por el aporte, siempre es bueno compartir el conocimiento

  64. ssf:

    Excelente aporte, funciona perfecto, muchas gracias!

  65. 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.

  66. Angelo Muchiba:

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

  67. 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.

  68. Vidal Jose:

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

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

  69. 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

  70. 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

  71. Violeta:

    Excelente explicación, muy completo.

  72. 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

  73. angixz:

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

  74. 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.

  75. 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

  76. DIEGO ROMERO:

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

  77. 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

  78. 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??

  79. Sergio:

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

  80. JEAN PAUL:

    Que excelnte muy agradecido

  81. luis:

    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”)))

  82. ANTONIO:

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

    Saludos.

  83. ANDERSON BERNAL:

    EXCELENTE APORTE…MUCHAS GRACIAS POR SU AYUDA

  84. Margot:

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

  85. SERGIO vega:

    COMO PUEDO DEJAR VALOR ENTEROS EJEMPLO:

    27 EN LETRAS QUE SOLO ME DIGA 27

    GRACIAS

  86. Sergio Vega:

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

    27 y que lo me escriba veintisiete

  87. Francisco:

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

  88. CINTHIA:

    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!!!

  89. CINTHIA:

    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.

Agregar comentario