miércoles, 1 de agosto de 2007

Convertir numeros a letras en Excel

Hace mucho tiempo atrás, busque entre todas las funciones de Excel, una que me permitiera convertir los números de una celda a letras, automáticamente. Así por ejemplo, podría escribir 52.69 en la celda A1 y la formula me podría en cualquier celda que yo quisiera: CINCUENTA Y DOS 69/100.

Había una utilidad que complementaba a Excel en ese sentido, pero que presentaba ciertos problemas de incompatibilidad y era dificil de conseguir para lo cual decidí buscar en la red algo que solventara dicha situación, encontrando afortunadamente una función llamada "Pesos" hecha por alguien más, la cual me permitía pasar de números a letras cualquier cantidad.

Esta función es muy útil ya que nos permite usarla en muchas situaciones cotidianas, y además no requiere mayor conocimiento de su uso, si usted anteriormente ya ha usado otras funciones incorporadas en Excel.


Todo lo que tienes que hacer es pegar el siguiente código en un Módulo nuevo ya sea en el libro de macros Personal, o en el libro en el cual estés trabajando. Si no sabes como hacerlo, puedes leer este artículo que escribí anteriormente el cual explica como crearlo.

 

------------ INICIO DE LA FUNCION PESOS-----------------------------------

'Function Pesos(Number As Single) As String
'Comentado el 27/10/2008: La siguiente línea corrige el error de los decimales
'en cantidades grandes, gracias a Any por la corrección.

Function Pesos(Number As Double) As String

Const MinNum = 1#
Const MaxNum = 4294967295.99

Dim Numbers, Tenths, Result As String
Numbers = Array("CERO", "UN", "DOS", "TRES", "CUATRO", "CINCO", "SEIS", "SIETE", "OCHO", "NUEVE", "DIEZ", "ONCE", "DOCE", "TRECE", "CATORCE", "QUINCE", "DIECISEIS", "DIECISIETE", "DIECIOCHO", "DIECINUEVE")
Tenths = Array("CERO", "DIEZ", "VEINTE", "TREINTA", "CUARENTA", "CINCUENTA", "SESENTA", "SETENTA", "OCHENTA", "NOVENTA")

If (Number >= MinNum) And (Number <= MaxNum) Then
Result = RecurseNumber((Fix(Number)))

If Round((Number - Fix(Number)) * 100) < 10 Then
Result = Result + " 0" + Mid(Str(Round((Number - Fix(Number)) * 100)), 2, 1) + "/100 DOLARES"
Else
Result = Result + " " + Str(Round((Number - Fix(Number)) * 100)) + "/100 DOLARES"
End If
Else
Result = "Error, verifique la cantidad."

End If
Pesos = Result
End Function

Function RecurseNumber(N As Long) As String

Dim Numbers, Tenths
Numbers = Array("CERO", "UN", "DOS", "TRES", "CUATRO", "CINCO", "SEIS", "SIETE", "OCHO", "NUEVE", "DIEZ", "ONCE", "DOCE", "TRECE", "CATORCE", "QUINCE", "DIECISEIS", "DIECISIETE", "DIECIOCHO", "DIECINUEVE")
Tenths = Array("CERO", "DIEZ", "VEINTE", "TREINTA", "CUARENTA", "CINCUENTA", "SESENTA", "SETENTA", "OCHENTA", "NOVENTA")
Hundrens = Array("CERO", "CIENTO", "DOSCIENTOS", "TRESCIENTOS", "CUATROCIENTOS", "QUINIENTOS", "SEISCIENTOS", "SETECIENTOS", "OCHOCIENTOS", "NOVECIENTOS")

Dim Result As String
Select Case N
Case 0
Result = ""
Case 1 To 19
Result = Numbers(N)
Case 20 To 99
If N Mod 10 <> 0 Then
Result = Tenths(N \ 10) + " Y " + RecurseNumber(N Mod 10)
Else
Result = Tenths(N \ 10) + " " + RecurseNumber(N Mod 10)
End If
Case 100 To 999
If N \ 100 = 1 Then
If N = 100 Then
Result = "CIEN" + " " + RecurseNumber(N Mod 100)
Else
Result = Hundrens(N \ 100) + " " + RecurseNumber(N Mod 100)
End If
Else
Result = Hundrens(N \ 100) + " " + RecurseNumber(N Mod 100)
End If
Case 1000 To 999999
Result = RecurseNumber(N \ 1000) + " MIL " + RecurseNumber(N Mod 1000)

Case 1000000 To 1999999
Result = RecurseNumber(N \ 1000000) + " MILLON " + RecurseNumber(N Mod 1000000)
Case 2000000 To 999999999
Result = RecurseNumber(N \ 1000000) + " MILLONES " + RecurseNumber(N Mod 1000000)
Case 1000000000 To 4294967295#
Result = RecurseNumber(N \ 1000000000) + " BILLONES " + RecurseNumber(N Mod 1000000000)

End Select
RecurseNumber = Result
End Function

'========== FIN DE LA FUNCION PESOS ============

Para usarlo es = que una funcion de excel, ejemplo:

=pesos(suma(a1:a15))

=pesos(total)


Para poder usarla solo tienes que poner, por ejemplo, lo que anteriormente se menciona, aunque en mi caso, yo siempre guardo las macros, métodos y funciones en el Libro de Macros Personal de Excel, para poder llevarme mis funciones a cualquier máquina en la cual me toque trabajar, y no se me genere ningún error de esos comunes que dicen que si desea actualizar los vínculos, o que la celda contiene referencias a información que no existe, etc.

Así uso yo la función (suponiendo que esta formula la escribo en la celda B1:

=personal.xls!pesos(A1)


En la celda A1 se colocan los números y en la celda B1 aparecerá ese número escrito en letras. Gráficamente se vería como la imagen mostrada arriba.

Cabe destacar algo importante sobre el nivel de seguridad de Excel con respecto a las macros. Si usted guarda este código en el libro en el cual esté trabajando, la próxima vez que usted abra dicho libro Excel le advertirá que se han deshabilitado las macros de este libro debido al nivel de seguridad predeterminado, lo cual lo obligará a usted a cambiar el nivel de seguridad de las macros de Excel a un nivel bajo, para efectos de poder ejecutar dicha macro y volver a abrir el libro de nuevo para que la función sea funcional.

Para evitar esta situación es recomendable que usted guarde sus Módulos, funciones, Métodos, Macros y etc, en el libro de macros PERSONAL y llamar a la función de conversión de números a letras como se muestra anteriormente, =personal.xls!pesos.....

Si les interesa también pueden ver Convertir número a letras en Excel II (LWP)

357 comentarios

  1. genial la solución!!!
    ahora, una duda, como hago para mantener exactamente iguales el número y el texto, pues necesito llenar cheques y debe aparecer el mismo valor en letras y en números....
    gracias desde ahora!

    ResponderEliminar
  2. tengo un base de datos en excel y cuando me llevo una fecha a word para insertarla en una carta me pone primero el mes y despues el dia para terminar el año y no me respeta que yo tengo dia, mes, año. como le hago para que me lo respete tengo office 2007

    ResponderEliminar
  3. Los felicito que buena ayuda..... que buenas paginas.
    Gracias!!!

    ResponderEliminar
  4. me sigio generando errores tengo el oficce 2007, la verdad no se cual sea el error, pero lei la parte 2 de este articulo y aunque es mas largo ese si me funciono.......gracias

    ResponderEliminar
  5. YA APRENDI COMO CONVIERTO UN NUMERO EN LETRAS, QUISIERA SABER SE USTED ME PUEDE COLABAR QUE ADEMAS DE CONVERTIRMELO ENLETRAS ME LE ADICIONES PESOS M/CTE

    EJEMPLO

    5.000.000 CONVERTIRLO EN LETRAS Y QUE QUEDE ASI CINCO MILLONES DE PESOS M/CTE

    GRACIAS POR SU COLABORACION

    ResponderEliminar
  6. me funciono a la perfeccion, todavia no se como guardar en la plantilla personal, pero aun asi, es una maravilla redujo en gran cantidad mi trabajo, asi que gracias por el dato

    ResponderEliminar
  7. Me sirvio mucho, supe como cambiar de dolares a pesos, quisiera saber como adicionar la palabra "PESOS" antes de la fracción de centavos que la macro expresa mediante un fraccionario

    ResponderEliminar
  8. QUE PASA,,, CUANDO PONGO 1,000,000 ME APARECE UN MILLONES, Y DEBERIA DECIR UN MILLON,, COMO LO CAMBIO ?

    ResponderEliminar
  9. amigo quisiera que me resolvieras un problema que tengo es que al poner los centavos pongo por ejemplo 113.90 me sale CIENTO TRECE 88/100

    ResponderEliminar
  10. Buenas noches:

    No sabía nada de lenguaje Basic hasta hoy, incluso hice unas modificaciones al código porque algunos resultados no me satisfacían, por ejemplo: Cuando el importe es cero o menor a 1, aparecía "error, verifique la cantidad", pero encontré la forma de hacer que me aparezca la traducción en estos casos, ejempo: $ 0.50 ya dice CERO PESOS 50/100 M.N. Además ya no dice dolares como se darán cuenta, y cuando son millones ya dice "MILLONES DE PESOS" O "MILLON DE PESOS". Igual para los billones. Asimismo las cantidades entre veinte y treinta ya me aparecen como VEINTIUNO, VEINTIDOS, ETC., en lugar de VEINTE Y UNO, VEINTE Y DOS, etc. Ya solo hay un detalle que no pude corregir y es que cuando el ultimo entero es CERO aparece la palabra "CERO", ej: $ 100.00 aparece CIEN CERO PESOS 00/100 M.N., o si es 150.00 aparece como CIENTO CINCUENTA CERO PESOS 00/100 M.N. Sé la razón pero no sé como corregirlo. La palabra CERO solo debe aparecer cuando el importe total sea menor a 1.

    ResponderEliminar
  11. Hola de nuevo, quisiera responder algunas preguntas que han hecho y veo que no estan respondidas y que pude comprender:

    En cantidades menores a 1 marca error por que al inicio del codigo se señala como valor minimo 1, (Const MinNum = 1#), debe quedar asi: Const MinNum = 0#. Ello conlleva a modificar otras lineas, ejemplo las siguientes:
    Suprimir estas dos:
    Case 0
    Result=""
    Modificar:
    Case 1 To 19
    Dejarla como:
    Case 0 To 29
    el 19 lo modifique por 29 atendiento a otra pregunta que es la de los veinte y uno, veinte y dos, para ello en las lineas donde estan las palabras que se refieren a las numeros vean que empieza conCERO y termina con DIECINUEVE, ahí agregué todas las palabras desde VEINTE hasta VEINTINUEVE, respetando las comas y las comillas que debe llevar el formato. Si quieren que las palabras tengan otro formato solo escribanlas como las quieren, ejemplo Veintinueve (Con la primera mayuscula como alguien lo queria).
    En cuanto a agregar la palabra DE cuando son MILLONES o BILLONES, esto solo aplica para cuando son cifras cerradas, ejemplo 1,000,000.00 deberia decir UN MILLON DE PESOS 00/100 M.N. (Para México), pero si ya es 1,000,001.00 se suprime el DE y debe decir solamente UN MILLON UN PESO 00/100 M.N., aqui si no se como hacerle pero yo creo que se necesita establecer un criterio para que cuando los ultimos seis digitos de la cifra sean ceros agregue la palabra DE, y ponga MILLON o MILLONES segun se necesite.

    Por ultimo quisiera saber como guardar la macro en el libro PERSONAL.XLS por que yo solo le doy guardar y no me pregunta donde, lo que hice fue guardar el archivo.

    Gracias, esto está muy interesante y muy util. Mi correo es hugovalderrama@hotmail.com por si alguien quisiera comentarme algo.

    Saludos.

    ResponderEliminar
  12. HUGO:
    Te diré que revisaré cuidadosamente el código que has hecho y en cuanto tenga tiempo te avisaré, pero te agradezco tu interes al respecto y creo que podremos mejorer este código con todos los comentarios de los demás amigos que han comentado.

    Saludos

    ResponderEliminar
  13. :arrow: :oops: :razz: :idea: :grin: :?: :!: :sad: :mad: :lol: :mrgreen: :neutral: :twisted: :arrow: :shock: :smile: :???: :cool: :evil: :cry: :eek: :oops: nose comon hacerlo!!!!!!

    ResponderEliminar
  14. Aun no puedo grabar la macro en el famoso libro Personal, me podrían explicar paso a paso por favor?

    ResponderEliminar
  15. quiero saber cual es la formula para convertir un numero en letras por ejemplo 100 cien gracias

    ResponderEliminar
  16. Que pregunta mas tonta :lol: Acaso no has leido o no sabes leer y te lo qieres aprender de memoria?? ajajajajjaja :mrgreen:

    ResponderEliminar
  17. Bueno ya utilicé el código y la verdad si fue de utilidad Gracias, solo hice algunas modificaciones en lugar de dolares le puse MN moneda nacional debido a que usamos pesos mexicanos y agregue la palabra pesos despues de la cantidad en letra.

    Por otra parte intente hacer lo del libro personal, abri un archivo nuevo lo guarde como personal.xls, pegue el código en un modulo dentro del archivo personal.

    El problema es que al ligar la formula al libro personal no funciona hasta que abro el archivo, es decir tengo que tener abierto el archivo personal para que funcionen las macros de otras hojas, me interesa saber como se corrige esto.

    saludos

    ResponderEliminar
  18. Buena tarde. Disculpa, tengo esta macro en donde según yo debe imprimir la información de la fila en donde se encuentra el cursor, solo que no lo hace así, siempre imprime la información de la primera fila con información, no la de donde se encuentra el cursor. ¿Podrían ayudarme y decirme dónde está la falla?. Muchas gracias de antemano.

    Sheets("Etiquetas").Select
    Range("B13").Select
    ActiveCell.FormulaR1C1 = "=InfoGral!R9C2"
    Range("B14").Select
    ActiveCell.FormulaR1C1 = "=InfoGral!R9C3"
    Range("B15").Select
    ActiveCell.FormulaR1C1 = "=InfoGral!R9C7"
    Range("B16").Select
    ActiveCell.FormulaR1C1 = "=InfoGral!R9C9"
    Range("A1").Select

    ResponderEliminar
  19. Hola Mario
    espero me respondas ahora ya que hace tiempo te escribi y no paso nada
    me gustaria que al escribir por ejemplo

    589 apareciera
    QUINIENTOS OCHENTA Y NUEVE PESOS.

    ¿Que tendria que cambiar para esto?
    de ante mano gracias

    ResponderEliminar
  20. Muchas gracias, muy útil y muy claro.

    ResponderEliminar
  21. Hola,
    Necesito aprender urgente VISUAL BASIC. Alguien conoce desde donde puedo bajar videotutoriales. Gracias. Saludos a Todos. Rossana (Desde Argentina) :eek:

    ResponderEliminar
  22. Hola quiesiera saber que estoy haciendo mal, ya hice todo como lo que dices aqui paso por paso (incluso he buscado informacion en otros webs),
    lo hice con el codigo de aqui y no me funciona. El unico que me dio resultado es el codigo de otro web:
    http://groups.google.com/group/microsoft.public.es.excel/browse_thread/thread/2d2685e5c75b4212/eae34d09811039b1?hl=es&lnk=st&q=#eae34d09811039b1
    pero no como esperaba, copio el codigo voy al editor de vb creo un modulo lo pego, lo guardo en el libro de macros personal, utilizo la funcion hasta ahi todo funciona convierte los numeros en letras. Luego cierro el archivo, despues lo habro modifico la cantidad y no funciona me sale un error "#¿NOMBRE?" :eek: estoy desesperado...¿Que estoy haciendo mal?.....espero me puedas responder gracias

    ResponderEliminar
  23. ya me funciono tu codigo pero pasa lo mismo que el otro...a la hora de volver a abrir el archivo con el que voy a trabajar modifico la cantidad que quiero conevertir en letras y me aparece #¿NOMBRE?...espero respuesta, gracias

    ResponderEliminar
  24. Lo que pasa es que el nivel de seguridad de las macros de Excel por defecto esta configurado para que no se ejecuten las macros guardadas en los archivos, por lo que debes entrar a las opciones de seguridad de macros y ponerlo en el nivel minimo y listo!!! eso es todo. Te agradeceré que comentes si te funciona esto que te he dicho, saludos. :idea:

    ResponderEliminar
  25. Chequen esta
    http://galeon.com/excelmacros/NumeroALetras.xla

    ResponderEliminar
  26. Disculpa por no contestarte Mario, hasta hoy entre al foro, antes ya habia bajado el nivel de seguridad al mas bajo y no pasaba nada me mostraba el mismo error "#¿NOMBRE?, la verdad ya me habia dado por vencido, deje pasar algunos dias sin volver a intentarlo hasta hace poco y de pronto ya funciona, no he hecho nada diferente a lo que ya habia realizado, esta un poco raro pero ya me funciona. Tengo otra duda es recomendable o no me afecta nada si dejo el nivel de seguridad bajo ? ...muchas gracias por tu ayuda... hasta luego :mrgreen:

    ResponderEliminar
  27. OMAR: Me imagino que no abres archivos ajenos o de origen desconocido, y que solo usas Excel para tus trabajos, y siendo asi no tienes porque preocuparte.

    Saludos.

    ResponderEliminar
  28. quiero saber que disen estos numeros y me lo traduscas a letras en español porfa
    1-13-16-19-21-1-13-16-26-12-5-4-16-9-7-19-1-3-9-9-20-1-4-9-16-20-17-16-1--2-5-19-21-5-3-16-14-16-3-9-4-16-1-13-5-19-9-3-1.

    ResponderEliminar
  29. :smile:

    Hola, Mario

    Realmente me sera de gran ayuda la macro de pesos, le hicimos unas modificaciones. Solo hay algo que observe en los centavos., al estar utilizando millones y centavos ya no lo traduce bien. es decir:
    1111115.06 es igual a ( UN MILLON CIENTO ONCE MIL CIENTO QUINCE PESOS 00/100 M.N. ) Aqui no te esta aplicando los .06 centavos y miles para abajo si lo esta haciendo correcto.

    Como podria hacer que funcione correctamente los centavos en los millones.

    tks = )

    ResponderEliminar
  30. Mario,
    Ya supieron donde para que aparezca correcto los centavos en los millones. Hay que sustituir: Function Pesos(Number As Single) As String
    por: Function Pesos(Number As Double) As String

    ResponderEliminar
  31. me sirvio mucho la funcion y la pude corregir para pesos solo tengo un problema si ademas al final yo quiero escribir 38 pesos y diez centavos que debo hacer

    ResponderEliminar
  32. Hola no entiendo este codigo podra explicarlo mejor a y otra cosa em en la hoja de calculo se pone alguna instruccion y donde.

    ResponderEliminar
  33. Se pone el código en un "Módulo" de el libro u hoja de calculo donde la necesites, pero en el editor de Visual Basic de Excel. :!:

    ResponderEliminar
  34. Buen Dia a todos los amigos cibernautas y que ocupan la red para cosas productivas y ven que el internet es mucho mas que porno y chats...jiji....bueno, tengo un problemita que espero me puedan ayudar. Hace semanas encontre su codigo fuente y fue de gran ayuda para mis funciones, nunca hubo ningun problema ni siquiera de modificacion ya que afortunadamente todos los cambios que le efectue los ejecutó y respetó....pero (el pero de siempre) en el caso de la empresa donde laboro expide facturas al extranjero, y ahora mi jefe me pregunto como hacerle para que el texto salga en ingles....ya intente de todo, modifique o bien, traduje los montos como one two y eso, cambiar todo lo que diga pesos a "dolars" pero nunca ha funcionado, cambie decenas millones y todo, pero arroja errores....la vez mas cercana que estuve del exito me dijo excel que la funcion no tenia un argumento....Gracias y espero la valiosa ayuda de todos ustedes...Buen dia

    ResponderEliminar
  35. Grax amigos, ya lo logre, ya puedo ocupar la funcion para español e ingles, gracias por su ayuda, era una tonteria lo que omiti, gracias

    ResponderEliminar
  36. MARIO, MIS SINCERAS FELICITACIONES POR ESTE PROGRAMA, SI QUE ES DE MUCHA UTILIDAD.
    QUISIERA QUE POR FAVOR ME AYUDARAS CON LO SIGUIENTE:
    EN MI CASO, EN EL RESULTADO DE PASAR DE NUMEROS A LETRAS, BEDE SALIR LA PALABRA PESOS M/CTE…PERO TENGO UN PROBLEMA CUANDO ESCRIBO UN NUMERO CERRADO COMO POR EJEMPLO: $25.000.000 = AL TRADUCIR EN LETRAS, ME SALE= VEINTICINCO MILLONES PESOS M/CTE….ME HACE FALTA LA PALABRA “DE”, ANTES DE LA PALABRA PESOS…..DE ANTEMANO LE AGRADEZCO SU VALIOSA COLABORACION.

    ResponderEliminar
  37. Hola buen dia, espero que aun continues con este espacio, ya utilice el codigo que muy amablemente compartes con todos nosotros y me trabaja d maravilla pero me gustaria saber si pudiera usar dolares y pesos en el mismo formato, aqui en mi oficina trabajamos con las 2 monedas y no se si ubiera una opcion o que se pudiera poner para elegir la modea Dolares o Pesos y asi ponga la cantidad en español por ejemplo ciento veinte pesos y/o 125 dolares. espero haberme explicado. y nuevamente muchas gracias por compartir tus conocimientos con nosotros

    ResponderEliminar
  38. Hola. muchas gracias por la formula me sirvio de a monton..

    ResponderEliminar
  39. Como hago para que en cualquier libro de excel que abra pueda mandar llamar la funcion??? porque cuando hago lo que dice que se haga, solo puedo usar la funcion en el libro en el q la agregue.
    Arriba dice que se pueden agregar las macros, métodos y funciones en el Libro de Macros Personal de Excel, como se hace para hacer eso? :?:
    Agradeceria la respuesta.......XD!!!! :mrgreen:

    ResponderEliminar
  40. no se puede ejecutar la macro me manda un error:
    error de copilacion el procedimiento externo no es valido
    X = Ruler_Width
    que puedo hacer para que funcione

    de antemano gracias

    ResponderEliminar
  41. Muy buen blog :idea: y muy interesante, solo se tiene que dar tiempo a leer las preguntas y respuestas para encontrar un resultado a nuestras dudas y confuciones.
    Encontre este blog
    http://lite2.com/blog/index.php/archives/convertir-numeros-a-letras-en-excel/
    que servira de mucho para aquellos que no le entienden mucho a los tecnicismos de este blog que es para otro nivel un poco mas avanzado, mi opinion es que le des un vistazo a esta pagina para instalas la formula es muy buena porque tiene graficos y te explica maano amano como instalarlo, regrerses aqui para tantas dudas que solo aqui tienen una respuesta si eres de otro pais o le quieres dar una convinacion para que se adapte a tu necesidad. Muy buen foro Tocallo, En hora buena cuidense Mario Ce Ollin Mexico

    ResponderEliminar
  42. Mario "Tocallo" tengo un a duda con excel. Sera posible alguna formula para que se utilice en un formato de factura de este modo... que al momento de empezar a introducir un texto este te desplegue una ventana (si es que asi se le llama) que se desplega hacia abajo con la opcion de varios nombres o numeros mas cercanos (Algo asi como cuando pones una direciion en el buscador de las paginas Web, que te muestran varias opciones de nombres o algo cercano al texto que se esta introduciendo) que esten almacenados (capturados) en otra hoja .. tengo esta duda, me puedes dar un comentario de esto... te agradeceria mucho ... gracias..Ce ollin

    ResponderEliminar
  43. Hola:

    ps bueno les quiero decir que esta macro es genial y me a sacado de apuros y ps la vdd yo estaba asi o mas confundida con las explicaciones hasta que di con su link y me aclararon algunas dudas k tenia sobre todo en donde poner lo de pesos ya que lo habia puesto mal pero bueno mil gracias

    y a los que no sabes no se desanimen que para todo hay respuestas y solucion

    :lol:

    ResponderEliminar
  44. MARIO LO FELICITO POR EL PROGRAMA PERO MAS LO HAGO POR EL VALOR DE COLABORACION QUE HAY EN SU PERSONA DESPOJADO DE TODO EGOISMO
    QUISIERA QUE POR FAVOR NOS AYUDE CON EL COMENTARIO DE Mario Ce Ollin
    "al momento de empezar a introducir un texto este te desplegue una ventana (si es que asi se le llama) que se desplega hacia abajo con la opcion de varios nombres o numeros mas cercanos (Algo asi como cuando pones una direciion en el buscador de las paginas Web, que te muestran varias opciones de nombres o algo cercano al texto que se esta introduciendo)"


    PROBE LA MACRO CON TODAS LAS CORRECCIONES Y ME FUNCIONA SUPER BIEN
    SI ALGUIEN LA DESEA SOLO PIDALA
    MARIO SI SIRVE PARA TU PAGINA CONSEGUI COMO PASAR MAYUSCULAS A MINUSCULAS O VICEVERSA EN EXCEL

    SALUDOS CON MUCHO RESPETO HACIA TI
    ING RAUL RAUDALES
    HONDURAS
    seladuar1@yahoo.com

    ResponderEliminar
  45. todo esta perfecto amigo como le hago para que aparesca el parentesis ejemplo
    asi
    (SIETE MIL QUINIENTOS SETENTA Y CINCO PESOS 00/100 M.N.)

    ResponderEliminar
  46. CE OLLIN
    SI TODAVIA OCUPA LO QUE SOLICITO TENGO IDEAS PARA AYUDARLO
    SALUDOS

    MARIO ES IMPORTANTE SEGUIR CON ESTA BONITA PAGINA PROPONGO QUE LA HAGAMOS CRECER CON DIFERENTES EJEMPLOS DE LOS QUE ESTAMOS PARTICIPANDO
    TAMBIEN HE NOTADO QUE ALGUNOS AMIGOS ENCUENTRAN SOLUCIONES A LOS PROBLEMAS QUE ELLOS NECESITABAN ,PERO ESTAMOS COMETIENDO EL ERROR DE NO INFORMAR CLARAMENTE COMO RESOLVIERON EL ASUNTO.

    EN MI CASO QUISIERA SABER COMO SE PASA EL RESULTADO EN OTRO IDIOMA
    GRACIAS POR SU TIEMPO

    ResponderEliminar
  47. Hola
    No se que estoy haciendo mal pero no me corre el programa, ya lo intente con el de la regla y si funciono pero con el de los pesos no pasa nada.

    Ayudenme porfavor T.T

    ResponderEliminar
  48. Hola
    Estaba viendo los comentarios y vi que omar decia que le habia funcionado con un codigo de otra pagina, lo intente y con ese codigo si funciono.

    Grax

    ResponderEliminar
  49. un millon de gracias al q compartio ese articulo ayer mellebe 4 horas buscando un metodo asi
    graciasssssssssss

    te adorooooooooooooooo

    by

    ResponderEliminar
  50. muy complicado yo lo hago sin tanta macros y esas cosas jamp2568@hotmail.com

    ResponderEliminar
  51. JESSE JAMES

    Oye tuve un problema con tu código, me da un error, podrías ponerlod e alguna otra forma por favor. Al poner un número con decimales manda un mensaje de que es de mas de 9 crifras y el resultao pone solo el valor seguido de "numero de mas de 9 cifras".

    Saludos y Gracias.

    ResponderEliminar
  52. ..me fue de gran ayuda....solo q me gustaria q no me apareciera la division q aparece y q no dijera dolares porq pueden ser pesos

    me sirvioo mucho
    graciass

    ResponderEliminar
  53. Muy claro en tus explicaciones para poder ejecutar la funcion... lo tengo un pequeño problema...Soy mexicana y manejo estimaciones pero realmente lo que manejo es pesos mexicanos y me aparece en dorales... podrias ayudarme...

    Gracias por tu ayuda...

    ResponderEliminar
  54. wo00laz
    pues yo quiero saber como
    se escribe 16 en letra pero no sale
    y quiero saber como se disen en letras por ke la
    verdad no se y no tengo idea
    jajajaaaa
    sale pues aqui dejo mi comentario jajaja
    bye
    T.Q.M.

    ResponderEliminar
  55. Esto es muy complicado
    hace mucho tiempo necesite esta funcion sin tener que gravar macros: no existe esta funcion pero puedes crear una pequeña tabla que lo haga.. no ocupamucho y se puede copiar para usarla en varias oportunidadaes. es muy facil. Yo la cree en ingles y en español para hacer pequeñas tablas de libros de cheques y facturacion

    ResponderEliminar
  56. Aquí les dejo algo para el caso Colombiano... es algo mas sencilla y funciona hasta el billón,...mi solución
    saludos

    ResponderEliminar
  57. Hola realice unas mejoras, en cuanto al manejo de decimales y en cuanto al resultado cuando manejas cifras de millones enteros por ejemplo si tienes un valor de $1000000 la funcion te devuelve el valor "un millon pesos" y asi con valores de 2, 3, 20... millones
    obtenias estos resultados, pero lo corecto es decir "un millon de pesos", "veinte millones de pesos", aqui les dejo las funciones completas con algunas correcciones espero les sirva.

    Public Function Num2Text(ByVal value As Double) As String

    Select Case Int(value)

    Case 0: Num2Text = "CERO"

    Case 1: Num2Text = "UN"

    Case 2: Num2Text = "DOS"

    Case 3: Num2Text = "TRES"

    Case 4: Num2Text = "CUATRO"

    Case 5: Num2Text = "CINCO"

    Case 6: Num2Text = "SEIS"

    Case 7: Num2Text = "SIETE"

    Case 8: Num2Text = "OCHO"

    Case 9: Num2Text = "NUEVE"

    Case 10: Num2Text = "DIEZ"

    Case 11: Num2Text = "ONCE"

    Case 12: Num2Text = "DOCE"

    Case 13: Num2Text = "TRECE"

    Case 14: Num2Text = "CATORCE"

    Case 15: Num2Text = "QUINCE"

    Case Is < 20: Num2Text = "DIECI" & Num2Text(value - 10)

    Case 20: Num2Text = "VEINTE"

    Case Is < 30: Num2Text = "VEINTI" & Num2Text(value - 20)

    Case 30: Num2Text = "TREINTA"

    Case 40: Num2Text = "CUARENTA"

    Case 50: Num2Text = "CINCUENTA"

    Case 60: Num2Text = "SESENTA"

    Case 70: Num2Text = "SETENTA"

    Case 80: Num2Text = "OCHENTA"

    Case 90: Num2Text = "NOVENTA"

    Case Is < 100: Num2Text = Num2Text(Int(value \ 10) * 10) & " Y " & Num2Text(value Mod 10)

    Case 100: Num2Text = "CIEN"

    Case Is < 200: Num2Text = "CIENTO " & Num2Text(value - 100)

    Case 200, 300, 400, 600, 800: Num2Text = Num2Text(Int(value \ 100)) & "CIENTOS"

    Case 500: Num2Text = "QUINIENTOS"

    Case 700: Num2Text = "SETECIENTOS"

    Case 900: Num2Text = "NOVECIENTOS"

    Case Is < 1000: Num2Text = Num2Text(Int(value \ 100) * 100) & " " & Num2Text(value Mod 100)

    Case 1000: Num2Text = "MIL"

    Case Is < 2000: Num2Text = "MIL " & Num2Text(value Mod 1000)

    Case Is < 1000000: Num2Text = Num2Text(Int(value \ 1000)) & " MIL"

    If value Mod 1000 Then Num2Text = Num2Text & " " & Num2Text(value Mod 1000)

    Case 1000000: Num2Text = "UN MILLON "

    Case Is < 2000000: Num2Text = "UN MILLON " & Num2Text(value Mod 1000000)

    Case Is < 1000000000000#: Num2Text = Num2Text(Int(value / 1000000)) & " MILLONES "

    If (value - Int(value / 1000000) * 1000000) Then Num2Text = Num2Text & " " & Num2Text(value - Int(value / 1000000) * 1000000)

    Case 1000000000000#: Num2Text = "UN BILLON"

    Case Is 1 Then
    If RESIDUO = 0 Then
    NumeroATexto = Num2Text(Int(d)) & " DE PESOS"
    Else
    NumeroATexto = Num2Text(Int(d)) & " PESOS"
    End If
    Else
    NumeroATexto = Num2Text(Int(d)) & " PESO"
    End If
    End If

    End Function

    ResponderEliminar
  58. Public Function Num2Text(ByVal value As Double) As String

    Select Case Int(value)

    Case 0: Num2Text = "CERO"

    Case 1: Num2Text = "UN"

    Case 2: Num2Text = "DOS"

    Case 3: Num2Text = "TRES"

    Case 4: Num2Text = "CUATRO"

    Case 5: Num2Text = "CINCO"

    Case 6: Num2Text = "SEIS"

    Case 7: Num2Text = "SIETE"

    Case 8: Num2Text = "OCHO"

    Case 9: Num2Text = "NUEVE"

    Case 10: Num2Text = "DIEZ"

    Case 11: Num2Text = "ONCE"

    Case 12: Num2Text = "DOCE"

    Case 13: Num2Text = "TRECE"

    Case 14: Num2Text = "CATORCE"

    Case 15: Num2Text = "QUINCE"

    Case Is < 20: Num2Text = "DIECI" & Num2Text(value - 10)

    Case 20: Num2Text = "VEINTE"

    Case Is < 30: Num2Text = "VEINTI" & Num2Text(value - 20)

    Case 30: Num2Text = "TREINTA"

    Case 40: Num2Text = "CUARENTA"

    Case 50: Num2Text = "CINCUENTA"

    Case 60: Num2Text = "SESENTA"

    Case 70: Num2Text = "SETENTA"

    Case 80: Num2Text = "OCHENTA"

    Case 90: Num2Text = "NOVENTA"

    Case Is < 100: Num2Text = Num2Text(Int(value \ 10) * 10) & " Y " & Num2Text(value Mod 10)

    Case 100: Num2Text = "CIEN"

    Case Is < 200: Num2Text = "CIENTO " & Num2Text(value - 100)

    Case 200, 300, 400, 600, 800: Num2Text = Num2Text(Int(value \ 100)) & "CIENTOS"

    Case 500: Num2Text = "QUINIENTOS"

    Case 700: Num2Text = "SETECIENTOS"

    Case 900: Num2Text = "NOVECIENTOS"

    Case Is < 1000: Num2Text = Num2Text(Int(value \ 100) * 100) & " " & Num2Text(value Mod 100)

    Case 1000: Num2Text = "MIL"

    Case Is < 2000: Num2Text = "MIL " & Num2Text(value Mod 1000)

    Case Is < 1000000: Num2Text = Num2Text(Int(value \ 1000)) & " MIL"

    If value Mod 1000 Then Num2Text = Num2Text & " " & Num2Text(value Mod 1000)

    Case 1000000: Num2Text = "UN MILLON "

    Case Is < 2000000: Num2Text = "UN MILLON " & Num2Text(value Mod 1000000)

    Case Is < 1000000000000#: Num2Text = Num2Text(Int(value / 1000000)) & " MILLONES "

    If (value - Int(value / 1000000) * 1000000) Then Num2Text = Num2Text & " " & Num2Text(value - Int(value / 1000000) * 1000000)

    Case 1000000000000#: Num2Text = "UN BILLON"

    Case Is 1 Then
    If RESIDUO = 0 Then
    NumeroATexto = Num2Text(Int(d)) & " DE PESOS"
    Else
    NumeroATexto = Num2Text(Int(d)) & " PESOS"
    End If
    Else
    NumeroATexto = Num2Text(Int(d)) & " PESO"
    End If
    End If

    End Function

    ResponderEliminar
  59. Funciona muy bien la Macro, pero necesito colocar la palabra "CON" antes de los decimales

    ResponderEliminar
  60. Oye me prodrias decir por favor como poner los parentesis ya lo intente peros solo me los muestra asi, dos mil (pesos 00/100 m.n.)

    ResponderEliminar
  61. :oops: hola porfa ayudame el procedimiento para hacer una macro y poder introducir esta función que haces el favor de darnos a los inespertos como yo

    ResponderEliminar
  62. Hola Mario antes que nada debo reconocer grandeza como persona ya que ayudas a mucha gente con tus conocimientos incondocionalmente de anta mano muchas gracias.
    al mismo tiempo te pido un grandicimo favor, lei la solución que le enviaste a Raul Raudales, para combertir números a Letras que comente que es excelente.
    la ayuda es que como crear una macro para insertar esta sintaxis.

    Carmen

    ResponderEliminar
  63. hola, muchas gracias por facilitarme estos codigos.., ahora tengo un problema es el siguiente: :cry:
    Yo ya tengo formulada los datos de la formula en mi excel...pero no puedo facturar todavía porque muchas veces se vende cantiades exactas...en mi factura, cuando quiero poner 50 o 300.00 con 00/100 M.N. no me sale..aparece sólo en el cuadro...cicuenta o trescientos..pero no me sale 00/100 y si pongo 300.05 con 00/100 M.N. me sale, necesito que aparezca el 00/100 y por favor se lo pido...c{omo hago para que aparezca dolares?
    Muchísimas Gracias :mrgreen:

    ResponderEliminar
  64. :twisted: :???: PUES AMI NO ME FUNCIONO, :evil: :evil: :sad:
    MIRIAM

    ResponderEliminar
  65. lo instale en oficce 2007 lo yeve hasta visual basic y se guardo pero no me convierte ningu na cantidad en letras que fue lo que paso o que hice mal alguien me puede decir que hacer ya lo cheque bien y no funciona me pueden ayudar
    :roll: :lol: :cry:

    ResponderEliminar
  66. hago la formula y nada mas me pone #¿NOMBRE? QUE ME FALTA QUE ALGUIEN ME AYUDE POR FAVORR

    ResponderEliminar
  67. jose enrique alvarez5 de septiembre de 2009, 9:24

    esta super el codigo pero creo que encontre un pequeno erro al momento de hacer una suma como 27.27+2.73 el resultado si sale a a 30 pero al momento de poner que lo ponga en letras me sale de esta manera VEINTE Y NUEVE PESOS 100/100 M.N podria decirme como sulucionarlo ya puse el 30 nomas escrito pero si sale bineTREINTA PESOS 00/100 M.N. el formato de la celda esta como numero y que despues del numero salga .00 Alguien podria ayudarme?????????

    ResponderEliminar
  68. enlacence con jcchecame34@hotmail.com y yoles digo como o les mando la macro ya configurada

    ResponderEliminar
  69. :mrgreen: Buenísima! Y sin los errores de otras que hay en la WEB. Gracias!

    ResponderEliminar
  70. Excelente este dato!!! muchas gracias por el aporte, funciona "Al Pelo" jejeje un saludo desde Venezuela

    ResponderEliminar
  71. Que bueno que existe gente como Usted (es). Gracias.

    ResponderEliminar
  72. Mucahas gracias...esto me resolvio mis dudas aunque tengo una duda, por favor ayudame ya que no me sale la palabra pesos no se en que estoy fallando, gracias

    ResponderEliminar
  73. Ok Aqui esta completo arreglado es decir 450 = Cuatro Cientos Cincuenta Pesos 00/100 MN

    '------------ INICIO DE LA FUNCION PESOS-----------------------------------

    'Function Pesos(Number As Single) As String
    'Comentado el 27/10/2008: La siguiente línea corrige el error de los decimales
    'en cantidades grandes, gracias a Any por la corrección.

    Function Pesos(Number As Double) As String

    Const MinNum = 1#
    Const MaxNum = 4294967295.99

    Dim Numbers, Tenths, Result As String
    Numbers = Array("CERO", "UN", "DOS", "TRES", "CUATRO", "CINCO", "SEIS", "SIETE", "OCHO", "NUEVE", "DIEZ", "ONCE", "DOCE", "TRECE", "CATORCE", "QUINCE", "DIECISEIS", "DIECISIETE", "DIECIOCHO", "DIECINUEVE")
    Tenths = Array("CERO", "DIEZ", "VEINTE", "TREINTA", "CUARENTA", "CINCUENTA", "SESENTA", "SETENTA", "OCHENTA", "NOVENTA")

    If (Number >= MinNum) And (Number <= MaxNum) Then
    Result = RecurseNumber((Fix(Number)))

    If Round((Number - Fix(Number)) * 100) < 10 Then
    Result = Result + " PESOS " + " 0" + Mid(Str(Round((Number - Fix(Number)) * 100)), 2, 1) + "/100 M.N."
    Else
    Result = Result + " PESOS " + Str(Round((Number - Fix(Number)) * 100)) + "/100 M.N."
    End If
    Else
    Result = "Error, verifique la cantidad."

    End If
    Pesos = Result
    End Function

    Function RecurseNumber(N As Long) As String

    Dim Numbers, Tenths
    Numbers = Array("CERO", "UN", "DOS", "TRES", "CUATRO", "CINCO", "SEIS", "SIETE", "OCHO", "NUEVE", "DIEZ", "ONCE", "DOCE", "TRECE", "CATORCE", "QUINCE", "DIECISEIS", "DIECISIETE", "DIECIOCHO", "DIECINUEVE")
    Tenths = Array("CERO", "DIEZ", "VEINTE", "TREINTA", "CUARENTA", "CINCUENTA", "SESENTA", "SETENTA", "OCHENTA", "NOVENTA")
    Hundrens = Array("CERO", "CIENTO", "DOSCIENTOS", "TRESCIENTOS", "CUATROCIENTOS", "QUINIENTOS", "SEISCIENTOS", "SETECIENTOS", "OCHOCIENTOS", "NOVECIENTOS")

    Dim Result As String
    Select Case N
    Case 0
    Result = ""
    Case 1 To 19
    Result = Numbers(N)
    Case 20 To 99
    If N Mod 10 0 Then
    Result = Tenths(N \ 10) + " Y " + RecurseNumber(N Mod 10)
    Else
    Result = Tenths(N \ 10) + " " + RecurseNumber(N Mod 10)
    End If
    Case 100 To 999
    If N \ 100 = 1 Then
    If N = 100 Then
    Result = "CIEN" + " " + RecurseNumber(N Mod 100)
    Else
    Result = Hundrens(N \ 100) + " " + RecurseNumber(N Mod 100)
    End If
    Else
    Result = Hundrens(N \ 100) + " " + RecurseNumber(N Mod 100)
    End If
    Case 1000 To 999999
    Result = RecurseNumber(N \ 1000) + " MIL " + RecurseNumber(N Mod 1000)

    Case 1000000 To 1999999
    Result = RecurseNumber(N \ 1000000) + " MILLON " + RecurseNumber(N Mod 1000000)
    Case 2000000 To 999999999
    Result = RecurseNumber(N \ 1000000) + " MILLONES " + RecurseNumber(N Mod 1000000)
    Case 1000000000 To 4294967295#
    Result = RecurseNumber(N \ 1000000000) + " BILLONES " + RecurseNumber(N Mod 1000000000)

    End Select
    RecurseNumber = Result
    End Function

    '========== FIN DE LA FUNCION PESOS ============
    'Para usarlo es = que una funcion de excel, ejemplo:

    '=pesos(suma(a1:a15))
    '=pesos(total)

    ResponderEliminar
  74. Buen día

    Gracias por la ayuda

    Me dices por favor como quito ese 00/100 Dolares para dejar solamente PESOS M/CTE?

    Gracias

    ResponderEliminar
  75. AyUdaaaaaaaaaaaa!!!!
    coMO HAGo ParA QUE 999.999 ME SALga NOVECIENTOS NOVENTA Y NUEVE MIL NOVECIENTOS NOVENTA Y NUEVE PESOS COLOMBIANOS M/CTE
    gRAciAS

    ResponderEliminar
  76. Hola NANI te dejo esta función que espero te sirva.

    Saludos, mi correo es resgros@hotmail.com

    ' Esta función la nombré Nlet corregida para lo que tú necesitas tal como lo pides
    ' cópiala tal cual está a continuación, espero te sea de mucha utilidad

    Function Nlet(Number As String, Optional Kurrencys As String, Optional Kurrency As String) As String
    If Kurrencys = "" Then
    Kurrencys = "PESOS"
    Kurrency = "PESO"
    End If
    If Kurrency = "" Then Kurrency = Kurrencys
    Const MinNum = 1#
    Const MaxNum = 4294967295#
    Dim Result As String
    If (Number >= MinNum) And (Number = 2 Then Kurrenzy = Kurrencys
    Result = RecurseNumber((Fix(Number)))
    If Round((Number - Fix(Number)) * 100) < 10 Then
    Result = Result + " " + Kurrenzy + Mid(Str(Round((Number - Fix(Number)) * 100)), 3) + " COLOMBIANOS M/CTE"
    Else
    Result = Result + " " + Kurrenzy + Mid(Str(Round((Number - Fix(Number)) * 100)), 3) + " COLOMBIANO M/CTE"
    End If
    End If
    Nlet = Result
    End Function
    Function RecurseNumber(N As Long) As String
    Dim Numbers, Tenths, Hundrens
    Numbers = Array("CERO", "UN", "DOS", "TRES", "CUATRO", "CINCO", "SEIS", "SIETE", "OCHO", "NUEVE", "DIEZ", "ONCE", "DOCE", "TRECE", "CATORCE", "QUINCE", "DIECISÉIS", "DIECISIETE", "DIECIOCHO", "DIECINUEVE", "VEINTE", "VEINTIÚN", "VEINTIDÓS", "VEINTITRÉS", "VEINTICUATRO", "VEINTICINCO", "VEINTISÉIS", "VEINTISIETE", "VEINTIOCHO", "VEINTINUEVE")
    Tenths = Array("CERO", "DIEZ", "VEINTE", "TREINTA", "CUARENTA", "CINCUENTA", "SESENTA", "SETENTA", "OCHENTA", "NOVENTA", "CIEN")
    Hundrens = Array("CERO", "CIENTO", "DOSCIENTOS", "TRESCIENTOS", "CUATROCIENTOS", "QUINIENTOS", "SEISCIENTOS", "SETECIENTOS", "OCHOCIENTOS", "NOVECIENTOS")

    Dim Result As String
    Select Case N
    Case 0
    Case 1 To 29
    Result = Numbers(N)
    Case 30 To 100
    Result = Tenths(N \ 10) + IIf(N Mod 10 0, " Y " + RecurseNumber(N Mod 10), "")
    Case 101 To 999
    Result = Hundrens(N \ 100) + IIf(N Mod 100 0, " " + RecurseNumber(N Mod 100), "")
    Case 1000 To 999999
    Result = RecurseNumber(N \ 1000) + " MIL" + IIf(N Mod 1000 0, " " + RecurseNumber(N Mod 1000), "")
    Case 1000000 To 1999999
    Result = RecurseNumber(N \ 1000000) + " MILLÓN" + IIf(N Mod 1000000 0, " " + RecurseNumber(N Mod 1000000), " DE")
    Case 2000000 To 999999999
    Result = RecurseNumber(N \ 1000000) + " MILLONES" + IIf(N Mod 1000000 0, " " + RecurseNumber(N Mod 1000000), " DE")
    Case 1000000000 To 1999999999
    Result = RecurseNumber(N \ 1000000000) + " BILLÓN" + IIf(N Mod 1000000000 0, " " + RecurseNumber(N Mod 1000000000), " DE")
    Case 2000000000 To 4294967295#
    Result = RecurseNumber(N \ 1000000000#) + " BILLONES" + IIf(N Mod 1000000000# 0, " " + RecurseNumber(N Mod 1000000000#), " DE")
    End Select
    RecurseNumber = Result
    End Function

    ' Para usarla es igual que una función de Excel, esjmplo:

    '=Nlet(SUMA(A1:A15))
    '=Nlet(TOTAL)

    ResponderEliminar
  77. Gracias mil ING RESÉNDIZ ;)

    ResponderEliminar
  78. Mario y/o Juan:
    Refiriéndome a lo de veinti.......
    Para que se modifica el case de 20 hasta 99 asi
    Case 20, 30 To 99
    ????????????

    ResponderEliminar
  79. Hola...
    No he podido guardar nada en el libro personal de excell...
    No se si esto no aplique para la versión 2007
    Puedes ayudarme paso a paso para poderla usar en otros archivos?
    Gracias

    ResponderEliminar
  80. Hola Victor Rey,
    Cuando abres excel haces clic en la flecha que esta apuntando hacia abajo te da tres opciones el icono Macros y entras a

    ResponderEliminar
  81. Hola Victor Rey,
    Cuando abres excel haces clic en la flecha que esta apuntando hacia abajo ene el icono de Macros te da tres opciones VER MACROS, GRAVAR UNA MACRO Y USAR REFERNCIAS RALATIVAS. has clic en GRAVA MACRO, se abre otra ventana donde te da la opción de darle nobre a la macro luego mas abajo en la misma ventana dice guardar macro en: has clic en la flecha de la perciana hacia abjo de esa ventana localizada de lado dercho casi a la mitad de dicha ventana ahí te da tres opciones
    LIBRO DE MACROS PERSONAL
    LIBRO NUEVO
    ESTE LIBRO
    Por tanto deverás seleccionar la opción LIBRO DE MACROS PERSONAL luego pegas la macro en la ventana de trabajo de Visual Basic y por último guardas excel normalmente y listo.
    Espero que te sirva.

    Saludos

    ResponderEliminar
  82. y trabaje en office 2010 y lo modifique para mi

    ResponderEliminar
  83. Tengo una series de formulas que me permiten hacer la convercion de nuneros a texto sin el uso de macros
    La tengo en formato de pesos mexicanos como el siguiente ejemplo:

    $1597.56
    un mil quinientos noventa y siete 56/100 m.n.

    tiene un limite de $9,999,999,999,999.99

    la puedo adaptar a otros formatos de moneda

    Contactame
    mariomejram@hotmail.com

    ResponderEliminar
  84. Hola, muchas gracias por publicar el còdigo de la macro, me ha servido muy bien, sin embargo tengo un problema, quiero guardarlo en la carpeta de Pesonal pero no puedo, no encuentro la carpeta y ademas desde visual no me permite guardarlo mas que con el nombre del archivo de excel. Ya he leido sus comentarios respecto a este problema peo aun no he podido resolver nada.Tengo excel 2002.

    Les agradeceria mucho que me pudieran ayudar con esto.

    ResponderEliminar
  85. Hola de nuevo aqui pidiendo su ayuda, ya he localizado en el editor de visual la carpeta de personal pero cuando grabo el modulo ahi la macro no funciona, solo funciona si lo grabo en la carpeta del libro o archivo que estoy trabajando. Ayuda por favor.

    ResponderEliminar
  86. HOla, disculpen alguien podría darme su correo?, podrían ayudarme?, tengo un formato de factura y me gustaría que apareciera la letra en ese espacio, por favor, gracias!!!

    ResponderEliminar
  87. :grin: :mrgreen: Muchas gracias por esta informacion le hice unas pequeñas modificaciones ya que me es necesario para elaborar facturas a proveedores.

    ResponderEliminar
  88. Por cierto lo instale en Excel 2010 sin nigun problema

    ResponderEliminar
  89. Hola, lo he probado y la verdad que funciona bien. Lo que pasa es que no escribe bien algunos numeros.
    Por ejemplo:
    329.98 (dice TRESCIENTOS VEINTE Y NUEVE 98/100 y deberia decir TRESCIENTOS VEINTINUEVE 98/100).
    Cual será la cuestion?
    Y despues la otra cuestion seria, si tengo que cambiar desde bisual basic, como hago para cambiar en todos los archivos al mismo tiempo?
    Gracias y buen año para todos

    ResponderEliminar
  90. Otro conflicto que encontré es por ejemplo:
    1451: (dice un mil cuatrocientos cincuenta y un 00/100 y deberia decir un mil cuatrocientos cincuenta y uno 00/100).
    Gracias

    ResponderEliminar
  91. quiero dartye la s gracias por que baje la formula y me funciono pero muy biem al principio tenia problemas con la moneda ya que me salian dolares pero como soy un poco travieso encotre la forma de cambiarla y me quedo muy gracias y espero que me ayudes proximnmate

    ResponderEliminar
  92. Hola Mario, felicidades y gracias! jeje me funciona perfectamente!

    Sin embargo no me deja de asustar los mensajes de advertencia de seguridad deshabilitandome los macros porque dice que NO es segura :S

    Saludos

    ResponderEliminar
  93. hola, tengo una pregunta como puedo hacerle para que aparesca por ejemplo $ 125.69 y en letra diga CIENTO VEINTICINCO PESOS 69/100 M.N.

    GRACIAS

    ResponderEliminar
  94. hola
    segui todos los pasos como estan escritos y no puede
    conseguir cambiar los numeros a letras no se si sea muy tonta
    pero pues no pude

    ResponderEliminar
  95. Oigan ya puede estaba utilizando la formula equivocada
    pero ahora como le hago para poner primero pesos
    y luego 00/100

    ResponderEliminar
  96. pues cerre el excel a ya no pude volver a habilitar la funcion
    ni modo seguire escribiendo yo las letras
    gracias

    ResponderEliminar
  97. HOLA OTRA VEZ
    PUES DESPUES DE MUCHOS INTENTOS Y ENOJOS
    POR FIN PUDE INSTALAR BIEN LA FORMULA Y ME
    QUEDO PERFECTO SON UNOS GENIOS GRACIAS

    ResponderEliminar
  98. pues yo quiero que me envien mas informacion

    ResponderEliminar
  99. : hola, gracias por el dato . si me funciona, pero resulta que en el cole el profesor nos dio una tarea para hacer lo mismo que hace la macro ( convertir numero a letras) .. pero con funciones, es decir utilizar : concatenar, largo , derecha etc etc etc... y todo lo que se requiera para transformar numeros a letras por ejeplo:
    A1 B1
    1 9,20 ------------- nueve soles con 20 centavos
    2
    .
    Agradeceria cualquier ayuda o idea .... :wink:

    ResponderEliminar
  100. :evil: no sirve esto es una porqueria

    ResponderEliminar
  101. HOLA ya puede poner la formula pero sabes cuando la cantidad es cerrada 120 me aprece solo ciento veinte y yo kiero me pongan ciento veinte 00/100 m.n. como le puedo hacer porfis yo hago muchas facturas y seria super bien eso si cuando la cantidada tiene centavos si lo pone correcta.


    saludos

    ResponderEliminar
  102. Hola Mario, buenas tardes:

    Estupenda tu aportación. Al igual que tú, yo tenía muchíiiisimo tiempo buscando una función que hiciera este acontecimiento, pero nunca encontré nada y ahora que nos lo proporcionas me sirve bastante en mis labores.

    Solo una duda, acá se estila escribir las cantidades con letra, luego la palabra pesos y al final 00/100 M.N., y este comando no lo hace así, sino que al final poner la palabra pesos. Como puedo hacerle para que las acomode en el orden requerido?

    Agradezco su ayuda. Besitos

    ResponderEliminar
  103. hola mario como estas espero que estes grubi :razz: :cool:

    ResponderEliminar
  104. que buen aporte muchas gracias pero necesito sabe como dejo solo el texto ejem.
    1000 ---> mil
    asi sin nada mas pero el problema es que me aparece un cero al final y no se lo he podido quitar

    ResponderEliminar
  105. hola muy buenos dias!
    he trataddo de seguir sus consejos ya hice un libro y alli pegue el texto y te un modilo nuevuna macro en el mismo insero que indican , pero al cerrar el libro aparece un error de compilacion y no me funciona nada , me podrian ayudar por favor?
    de antemano muchas gracias"

    ResponderEliminar
  106. hola mario en verdad agradezco mil veces tu programa...peroooo tengo un pequeño inconveniente.....al escribir manualmente las cantidades cerradas
    p.ej. ***500.00*** con letra solo me aparace
    ***quinientos***
    me falta la leyenda - pesos 00/100 mn. eso me ocurre con toooodas las cantidades cerradas, no he modificado nada tu programa, yo lo uso para hacer cheques y necesito que salga el texto con letra completo....................mil gracias..yo llevaba mas de un año buscando una opcion como esta .....................graaaaaaaaaaaaaaaaaaaaaaaaacias!

    ResponderEliminar
  107. Hola Sr. Mario, tome de su macro y la modifique con numeros acentuados como 16.00 SON: (DIESISÉIS PESOS 00/100 M.N.) y además dejando 1,000,000.00 SON: (UN MILLÓN DE PRESOS 00/100 M.N.) y 1,000.001.00 SON: (UN MILLÓN UN PESO 00/100 M.N. para la persona que le pueda servir trabaja sin problema hasta el 1,999,999,999.00 SON: (UN BILLÓN NOVECIENTOS NOVENTA Y NUEVE MILLONES NOVECIENTOS NOVENTA Y NUEVE MIL NOVECIENTOS NOVENTA Y NUEVE PESOS 00/100 M.N.)

    Inicio de la función
    Function Letras(Number As Double, Optional Kurrencys As String, Optional Kurrency As String) As String

    If Kurrencys = "" Then
    Kurrencys = "PESOS"
    Kurrency = "PESO"
    End If
    If Kurrency = "" Then Kurrency = Kurrencys

    Const MinNum = 0#
    Const MaxNum = 54294967295.99

    Dim Result As String
    If (Number >= MinNum) And (Number = 2 Then Kurrenzy = Kurrencys
    Result = RecurseNumber((Fix(Number)))

    If Round((Number - Fix(Number)) * 100) 0, " Y " + RecurseNumber(N Mod 10), "")
    Case 101 To 999
    Result = Hundrens(N \ 100) + IIf(N Mod 100 > 0, " " + RecurseNumber(N Mod 100), "")
    Case 1000 To 999999
    Result = RecurseNumber(N \ 1000) + " MIL" + IIf(N Mod 1000 > 0, " " + RecurseNumber(N Mod 1000), "")
    Case 1000000 To 1999999
    Result = RecurseNumber(N \ 1000000) + " MILLÓN" + IIf(N Mod 1000000 > 0, " " + RecurseNumber(N Mod 1000000), " DE")
    Case 2000000 To 999999999
    Result = RecurseNumber(N \ 1000000) + " MILLONES" + IIf(N Mod 1000000 > 0, " " + RecurseNumber(N Mod 1000000), " DE")
    Case 1000000000 To 1999999999
    Result = RecurseNumber(N \ 1000000000) + " BILLÓN" + IIf(N Mod 1000000000 > 0#, " " + RecurseNumber(N Mod 1000000000), " DE")
    Case 2000000000 To 54294967295#
    Result = RecurseNumber(N \ 1000000000) + " BILLONES" + IIf(N Mod 1000000000 > 0#, " " + RecurseNumber(N Mod 1000000000), " DE")
    End Select

    RecurseNumber = Result

    End Function

    '=============== FIN DE LA FUNCION LETRAS =====================================
    'ara usarla es = que una funcion de excel, ejemplo:

    '=Letras(suma(a1:a15))
    '= Letras(Total)

    ResponderEliminar
  108. Por alguna razón que no se que sea no paso la macro completa, nuevamente la integro esperando que se vea completa

    Function Letras(Number As Double, Optional Kurrencys As String, Optional Kurrency As String) As String

    If Kurrencys = "" Then
    Kurrencys = "PESOS"
    Kurrency = "PESO"
    End If
    If Kurrency = "" Then Kurrency = Kurrencys

    Const MinNum = 0#
    Const MaxNum = 54294967295.99

    Dim Result As String
    If (Number >= MinNum) And (Number = 2 Then Kurrenzy = Kurrencys
    Result = RecurseNumber((Fix(Number)))

    If Round((Number - Fix(Number)) * 100) 0, " Y " + RecurseNumber(N Mod 10), "")
    Case 101 To 999
    Result = Hundrens(N \ 100) + IIf(N Mod 100 > 0, " " + RecurseNumber(N Mod 100), "")
    Case 1000 To 999999
    Result = RecurseNumber(N \ 1000) + " MIL" + IIf(N Mod 1000 > 0, " " + RecurseNumber(N Mod 1000), "")
    Case 1000000 To 1999999
    Result = RecurseNumber(N \ 1000000) + " MILLÓN" + IIf(N Mod 1000000 > 0, " " + RecurseNumber(N Mod 1000000), " DE")
    Case 2000000 To 999999999
    Result = RecurseNumber(N \ 1000000) + " MILLONES" + IIf(N Mod 1000000 > 0, " " + RecurseNumber(N Mod 1000000), " DE")
    Case 1000000000 To 1999999999
    Result = RecurseNumber(N \ 1000000000) + " BILLÓN" + IIf(N Mod 1000000000 > 0#, " " + RecurseNumber(N Mod 1000000000), " DE")
    Case 2000000000 To 54294967295#
    Result = RecurseNumber(N \ 1000000000) + " BILLONES" + IIf(N Mod 1000000000 > 0#, " " + RecurseNumber(N Mod 1000000000), " DE")
    End Select

    RecurseNumber = Result

    End Function

    '=============== FIN DE LA FUNCION LETRAS =====================================
    'ara usarla es = que una funcion de excel, ejemplo:

    '=Letras(suma(a1:a15))
    '= Letras(Total)

    ResponderEliminar
  109. Hila TAU,
    Tengo esta misma macro corregida para que funcione con pesos y la acentuación en numeros como 16.00 SON: (DIECISÉIS PESOS 00/100 M.N.), 21.00 SON: (VEINTIÚN PESOS 00/100 M.N.) o en millón y millones, 1,000,000.00 SON: (UN MILLÓN DE PESOS 00/100 M.N.) 1,000,001.66 SON: (UN BILLÓN UN PESOS 66/100 M.N.) etc.
    Sí esta macro te puede servir escribeme a este e-mail resgros@hotmail.com y con gusto te la envió a tu correo

    saludos

    ResponderEliminar
  110. como hago al calcular fómulas en celdas que tiene por ejmplo "12 caramelos" no me de error, esto es celdas en las que hay texto y n´mero a la vez

    gracias

    ResponderEliminar
  111. Como puedo corregir el detalle de la cantidad cuando es 1,253,000.35
    que diga un millon y no un millones

    ResponderEliminar
  112. Hola Fernando,

    Con respecto a tu comentario de: 1,253,000.00 quedaria de la siguiente manera: "SON: (UN MILLÓN DOSCIESTOS CINCUENTA Y TRES MIL PESOS 00/100 M.N.) " es la misma macro de este blog pero ya corregida y llega hasta 1,999,999,999.99 sin ningún problema.
    Sólo que si la subo a este blog no aparece completa así que, si te interesa te la puedo enviar vía correo lectrónico, me correo es resgros@hotmail.com.

    saludos cordiales a todos los de este blog y especialmente al creador de dicho blog.

    ResponderEliminar
  113. :?: :!: :?: :?: porque haces cosas an dificiles :evil: :twisted: :mrgreen: :?: :?: :?: :?:

    ResponderEliminar
  114. hola gracias por el aporte fue grandios lo que estaba buscando
    agracias
    :roll: :wink: :cry:

    ResponderEliminar
  115. HOLA MARIO DESDE ECUADOR TE ESCRIBO, SABES ESTAS MACROS ESTAN INCREIBLES ME HAN AYUDADO MUCHISIMO, MUCHAS GRACIAS POR AHORRARNOS MUCHO TRABAJO, SABES TENGO UN PROBLEMITA, EN EXCELL 2003 LO INSTALE Y ME FUNCIONA PERFECTAMENTE, HASTA LE MODIFIQUE UNAS PALABRAS Y ME FUNCIONA A LA PERFECCION, PERO AL INSTALAR LAS MACROS EN EXCEL 2007 NO FUNCIONA ME SALE QUE HAY UN ERROR DE COMPILACION 28, LA VERDAD HE TRATADO DE VER CUAL ES EL PROBLEMA Y NO ME FUNCIONA, EN LA CELDA QUE ESCRIBO LA FORMULA ME SALE #NOMBRE Y NO FUNCIONA , AYUDEME SI NO ES MUCHA MOLESTIA, SERA Q NO ES COMPATIBLE, O HABRA QUE ENRUTARLO PARA EXCEL 2007, PLEASE RESPONDEME LO MAS URGENTE POSIBLE

    ResponderEliminar
  116. Hola Mario, saludos desde Mèxico.
    La pregunta es la siguiente:
    Como puedo crear una macro donde con cierta condicionante, cambie de color las letras ejemplo:
    trbajo en una escuela y tengo grupos aleatorios de niños y niñas. En una lista tengo los nombre por grado y grupo. Tengo columnas que me indican el sexo del alumno. Quiero en en otra columna, atraves de la funcion que te pido, cuando sea Hombre (H), en la columna aparezca H de color azul y M de color rosa. No solo yo tengo acceso a los datos y me topo que a veces los docentes no se fija y como todo lo ven igual, confunden el sexo y ponen H's en lugar de M's y viceversa.
    Espero puedas ayudarme o solo indicame si ya antes haz respondio algo similar.
    Gracias saludos
    Antonio Esparza

    ResponderEliminar
  117. Por tiempo habia buscado esta formula, es de gran utilidad, la probé y funciona muy bien.

    ResponderEliminar
  118. Que tal, me ayudo en gran parte el tip que nos compartes, pero tengo un leve problema.
    cuando yo quiero convertir por ejemplo: 1.1 en logar de ponerme "Uno 1/100 Pesos" me pone "Ciento Diez 00/100 Pesos"

    Como puedo corregir esto?
    Saludos

    ResponderEliminar
  119. Hola,

    Saludos al creador de este blog, a todos los que participan en él.

    Si a alguien le intresa tengo una macro que funciona a la perfección desde 0.01 hasta 9,999,999,999,999.99 solo pidanla al correo resgros@hotmail.com y con todo gusto se las envío.

    Que la pasen bien

    ResponderEliminar
  120. Hola
    No se si me puedas ayudar... creo que he hecho todo para que funcione y no lo logro... es office 2007 pero cuando la trato de llamar, no la encuentra y me marca errores.
    Gracias

    ResponderEliminar
  121. hola que tal soy nueva en el foro mira la verdad esta muy bien la formula pero que crees que me arroja un error " errror de compilacion: se ha detectado un nombre ambigüo:pesos. alguien podria AYUDARME PLIS....

    ResponderEliminar
  122. Hola mi pregunta es si la formula puede diferenciar entre: 1= UNO 00/100, 1000= UN MIL 00/100 y 1001= UN MIL UNO 00/100.
    Te lo pido por favor ya que en el trabajo emitimos cotizaciones, Facturas en cantidad.
    Gracias.

    ResponderEliminar
  123. Hola, no he podido hacer que aparesca la cantidad en letra ej: $ 21,250.51 (Veintiun mil doscientos cincuenta pesos 51/100m.n.), que incluya el parentesis ya copie los marcos e hice las midificaciones que mencionan en la parte de arriba pero no me funciona,
    me podrán mandar un marco con esas caracteristicas por favor

    saludos

    ResponderEliminar
  124. Hola, soy nueva en esto... pero necesito para algo de mi trabajo una formula sencilla para hacer que cuando escriba una palabra como "En analisis", cambien las letras a azul ... esto es en una hoja de excel comun.....

    alguien qeu me pueda ayudar????

    ResponderEliminar
  125. :roll: hola, no se como poner esta macro en excel 2007, alguien me podria ayudar

    ResponderEliminar
  126. Gracias! EXCELENTE APORTE, el mejor que hay en internet para transformar numeros a letras....

    ResponderEliminar
  127. hola mario!
    necesito usar el converitdor de numeros a letras y no puedo saber que pasa ya intenten varias veces y me sale esta leyenda
    error de compilacion
    se esperaba: número de linea o etiqueta o declaracion o fin de instruccion
    que hago mal por favor te agradezco mucho si me respondes a la brevedad
    Susana

    ResponderEliminar
  128. Hola Mario,

    Tu macro es de gran ayuda para mi generé esta funcion para pesos; sin embargo tengo unas preguntas:
    1. Que debo hacer para que tome valores hasta $999.999.999.999?
    2. Se puede generar en el mismo archivo otras funciones pero que correspondan a Dolares y Euros.

    Gracias

    ResponderEliminar
  129. HOLA !!!!
    NECESITO QUE ME DIGAS PORFAVOR
    SI ESCRIBO 45.00 ME ESCRIBE EN LETRA
    CUARENTA Y CINCOPESOS OSEA PEGADO PESOS NOME LO SEPARA
    ¿COMO LE HAGO PARA QUE LO SEPARE?
    GRACIAS

    ResponderEliminar
  130. Excelente programa, aunque es pirateado de una pagina en ingles, mejor aprendan a programar y luego se atribuyen trabajos de otros, yo de plano no se a esto pero no omite mi comentario, ustedes que tienen la capacidad no anden haciendo eso, y mejor hagan unos propios que la capacidad la tienen

    ResponderEliminar
  131. Hola buenas tardes, yo soy la persona de facturacion en una linea de transporte, pero quiero que el resultado de dicha facutura se convierta en letra, ya hice varias cosas que e leido y no sale, me sale algo asi de nombre me pudieran ayudar por favor..... :roll:

    ResponderEliminar
  132. HOLA MUCHAS GRACIAS DE VERAS SIRVE

    ResponderEliminar
  133. hola soy karina vivo en la calle san pedro :grin: :

    ResponderEliminar
  134. muchas gracias por la función de Excel para convertir numeros a letras.

    saludos

    ResponderEliminar
  135. gracias, quisiera ser algun dia un programador como tu. :razz:

    ResponderEliminar
  136. Hola, quisiera saber si me pueden ayudar el problema es el siguiente:

    Tengo la cantidad en una celda y cuando quiero imprimirla a letra me imprime asi:

    La cantidad contenida en la celda es:
    426.137,60

    Y el resultado en letra es:
    (CUATROCIENTOS VEINTISEIS MIL CIENTO TREINTA Y SIETE PESOS 59/100 M.N.)

    Si notas los centavos baja -0.01, solo me ah pasado con esa cantidad.

    Les agradeceria la ayuda

    Aqui esta el link de la factura :D

    http://dl.dropbox.com/u/11032979/Exel/FACTURA.xlsx

    Gracias :mrgreen:

    ResponderEliminar
  137. Muchisimas Gracias,
    Donde puedo ver mas herramientas que faciliten mi trabajo?
    Saludos

    ResponderEliminar
  138. Gracias un millón de ocasiones!!!!!!!!!!!! :razz: :lol: :!: :!: :!: :smile: :smile: :shock: :shock:

    ResponderEliminar
  139. Hola!
    Me sirvio mucho la formula para cambiar de numero a letra pero tengo un problema, a la hora de que me escribe la cantidad en letra el ultimo numero sale pegado a la letra "pesos" por ejemplo: Dos mil ciento cuarenta y ochopesos 00/100 M.N.... como le hago para que quede separado el "ocho" de la palabra "pesos"?? esto me pasa con todos los numeros a excepcion de numero cerrados...porfa ayudame !!! gracias!! :p

    ResponderEliminar
  140. hola, estoy tratando de crear la macro para cambiar una cantidad a texto, pero no se como, nunca he usado la funcion de macros y lo hago pero no me funciona, si me pueden explicar mejor se los agradeceria .. mil gracias

    ResponderEliminar
  141. Hola

    Tengo un problema no se si sea mi version de Office pero solamente realice un copy paste del codigo y corre bien pero al poner algun valor con decimales ejemplo:

    3.3 me aparece TREINTA Y TRES DOLARES 00/100

    saben de casualidad porque no me reconoce el punto decimal ?

    Saludos

    ResponderEliminar
  142. Hola necesito convertir de numero a letra pero segui los procedimientos y no logre nada mi sistema operativo es windows 7, GRACIAS!!!

    ResponderEliminar
  143. Miren este código le da la cifra completa sin números entremedio.

    Function PesosMN(tyCantidad As Currency) 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
    tyCantidad = Round(tyCantidad, 2)
    lyCantidad = Int(tyCantidad)
    lyCentavos = (tyCantidad - 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
    PesosMN = lcBloque
    Case 2
    PesosMN = lcBloque & IIf(lnBloqueCero = 3, Null, " MIL") & PesosMN
    Case 3
    PesosMN = lcBloque & IIf(lnPrimerDigito = 1 And lnSegundoDigito = 0 And lnTercerDigito = 0, " MILLON", " MILLONES") & PesosMN
    End Select
    lnNumeroBloques = lnNumeroBloques + 1
    Loop Until lyCantidad = 0
    PesosMN = PesosMN & IIf(tyCantidad 1, " PESOS ", " PESOS ")
    End Function

    ResponderEliminar
  144. Hola, recien supe de esta funcion para excel, he seguido el procedimiento de pegar directamente en el modulo dentro del libro macross PERSONAL.XLS pero cuando cierro todo me sale un error de compilacion:

    Error de Compilacion , se ha detectado un nombre ambiguo Pesos.

    Habr si me ayudas a solucionarlo.

    Gracias.

    ResponderEliminar
  145. hola me interesa mucho aprender como hacer una funcion en excel para convertir de numero a letra cualquier cantidad y no la puedo hacer... me podrian ayudar?

    ResponderEliminar
  146. :lol: me a funcionado la funcion mucho, pero necesito una pequeña modificacion y no se donde modificar, les pongo un ejemplo que yo quisiera
    al poner yo el numero
    25 quisiera que en letras me apareciera (VEINTICINCO) y no veinte y cinco
    si pudieran ayudarme les agradeceria mucho gracias
    espero su pronta respuesta

    ResponderEliminar
  147. Me han simplificado la vida!!! :!: Muchas gracias!!!

    ResponderEliminar
  148. Muchas gracias,...
    funciona a la primera que bien......
    te agradezco...................buen dia. :mrgreen:

    ResponderEliminar
  149. :shock: ORALE!!! la funcion esta de poca ya la he estado usando, pero tengo un problemota... hago completamente todo lo que indicas, al pie de la letra, pero al abrir nuevamente mi libro (claro despues de haberlo cerrado) comienzo a hacer mi factura normal, pero en mi barra donde puse la funcion me sale lo siguiente: #¿NOMBRE? y por consecuente no me da la lectura de la cantidad total de la factura, mi pregunta es ¿como reparo ese error? ya que todos los dias tengo que volver a introducir la funcion y no cerrar el libro en todo el dia laboral :?: :?: :mrgreen:

    ResponderEliminar
  150. hola....!!
    oie no me funciona es de =pesos(a1) lo hice =
    podrias ayudarme para que aparesca en pesos y salga en numero y letra
    gracias..!!

    ResponderEliminar
  151. Hola , Gracias por compartir su conociemiento y sin intenciones de molestarlo, quise hacerle algunas mejoras para ajustar a como se maneja en Mexico.

    Numbers = Array("CERO", "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")

    Case 1 To 29
    Result = Numbers(N)
    Case 30 To 99
    If N Mod 10 0 Then

    Remplazando estas 2 secciones ya se ve (por ejemplo) Veintidos en lugar de Veinte y Dos

    Saludos !

    ResponderEliminar
  152. como puedo eliminar el final de la oracion donde aparece 00/100.... ya que necesito que todo valla a impresion y no debe ir con esto... como elimino el 00/100 de ante mano muchas gracias

    ResponderEliminar