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.

142 respuestas a “NumLetras: Función para pasar (convertir) números a letras”

  1. Paulina dice:

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

  2. HBanchieri dice:

    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

  3. Nicolas dice:

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

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

  4. JOrge dice:

    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 dice:

      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 dice:

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

    • lcruz dice:

      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 dice:

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

  7. agustin dice:

    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 dice:

    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. pero la función esta excelente gracias

  10. Hernan dice:

    genial, gracias por compartir

  11. Mario Navarro dice:

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

  12. javier dice:

    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 dice:

    Gracias agradezco tu ayuda.

  14. Rodrigo dice:

    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 dice:

      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 dice:

    Que lástima, mil gracias de todos modos.

  16. Javier Nieto dice:

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

  17. Jh® dice:

    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 😉

  18. luis dice:

    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 dice:

      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 dice:

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

  20. JOSE dice:

    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 dice:

    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 dice:

      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)

  22. Juan dice:

    Gracias, me ha sido de mucha ayuda

  23. Juan Manuel dice:

    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

  24. claudia Bernal dice:

    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 dice:

    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

  26. KARLA dice:

    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 dice:

    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.

  28. Angel Gonzalez dice:

    Muchas gracias por su aporte es de gran ayuda…

  29. Mchavez dice:

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

  30. Jesus dice:

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

  31. solutions dice:

    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 dice:

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

  33. claudio dice:

    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 dice:

      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 dice:

    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…

  35. ALDO VARGAS dice:

    SI QUIERO

  36. Jhony dice:

    Gracias…!!

  37. Fernando dice:

    ¿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 dice:

    ¿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 dice:

    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 dice:

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

  41. mauricio dice:

    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

  42. mferminco dice:

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

  43. Santos dice:

    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 dice:

      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 dice:

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

  45. cristhian dice:

    Excelente aporte. Gracias.

  46. leonardo dice:

    Realmente muy útil. muchas gracias

  47. Osvaldo Luis Quetglas dice:

    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 dice:

      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. me sale que
    se ha detectado un nombre ambiguo

    • Luis Cruz dice:

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

    • Osvaldo Luis Quetglas dice:

      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 dice:

        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 dice:

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

  50. angel dice:

    exelente información saludos

  51. MARIA EUGENIA ARIAS dice:

    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.

  52. Milton Zeballos dice:

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

  53. Miguel Aragon dice:

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

  54. LIZ dice:

    SUPER HARE MI TRABAJO MAS RAPIDO …GRACIAS

  55. LIZ dice:

    SUPER MAS RAPIDO MI TRABAJO…GRACIAS

  56. humberto mor dice:

    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 dice:

    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. carlos dice:

    Le felicito, me ha sido de gran ayuda

  59. Aldo dice:

    Excelente macro, muy buen trabajo.-

  60. Julius dice:

    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!

  61. Ana dice:

    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!

  62. Fer dice:

    Gracias por el aporte, siempre es bueno compartir el conocimiento

  63. ssf dice:

    Excelente aporte, funciona perfecto, muchas gracias!

  64. Osvaldo Luis Quetglas dice:

    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.

  65. Angelo Muchiba dice:

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

  66. Daniel dice:

    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.

  67. Vidal Jose dice:

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

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

  68. agustin dice:

    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

  69. agustin dice:

    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. Violeta dice:

    Excelente explicación, muy completo.

  71. Xavi dice:

    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

  72. angixz dice:

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

  73. Jose dice:

    Como hago que funcione en MAC…….

    • lcruz dice:

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

  74. Angus dice:

    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

  75. DIEGO ROMERO dice:

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

  76. EDGAR ARANDA dice:

    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

  77. Juan Manuel dice:

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

  78. Sergio dice:

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

  79. JEAN PAUL dice:

    Que excelnte muy agradecido

  80. luis dice:

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

  81. ANTONIO dice:

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

    Saludos.

  82. EXCELENTE APORTE…MUCHAS GRACIAS POR SU AYUDA

  83. Margot dice:

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

  84. SERGIO vega dice:

    COMO PUEDO DEJAR VALOR ENTEROS EJEMPLO:

    27 EN LETRAS QUE SOLO ME DIGA 27

    GRACIAS

  85. Sergio Vega dice:

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

    27 y que lo me escriba veintisiete

  86. Francisco dice:

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

  87. CINTHIA dice:

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

  88. CINTHIA dice:

    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.

  89. OSCAR dice:

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

  90. Ramon Cobeña dice:

    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

  91. mauricio moncada dice:

    mil gracias, fue de gran ayuda!!!!

  92. Norberto C dice:

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

  93. JESUS dice:

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

  94. Jose Tovar dice:

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

Deja un comentario