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. Hola, he visto tu web y quiero proponerte un intercambio de links, si te interesa visita http://tecnouy.blogspot.com es un blog muy nuevo creado en Uruguay que trata temas de tecnología e informática.
    Saludos y espero tu respuesta.

    ResponderEliminar
  2. Gracias, ya estas agregado a mis sitios amigos.
    Un saludo desde Uruguay

    ResponderEliminar
  3. mira fijate que estube probando tu aplicacion y si me funciono solo tengo una duda queria saber para ponerla en una funcion fija en mi microsoft excel como la funcion suma cualseri el procedimiento ya que lo probe usar en otra hoja pero nome parece...como funcion,...

    ResponderEliminar
  4. Oye andy00, lo que te recomiendo es que sigas el mismo procedimiento pero guardes todo el código anterior en el libro de macros PERSONAL.XLS, el cual podrás ver en el Editor de Visual Basic de Excel. Te aclaro que si no ves el libro de macros PERSONAL.XLS prueba crear una macro cualquiera y dile que quieres guardar esa macro en el libro personal, luego se enviará un mensaje que te dirá que la macro ha sido guardado en el libro de macros personal y que ese libro estará presente aunque no lo veas, cada vez que abrás Excel, y cada vez que quieras usar cualquier función como esta. Espero te sirva esta ayuda.

    ResponderEliminar
  5. La formula funciona perfectamente pero solamente con numeros hasta el 9.999.999... de ahi en adelante presenta problemas en la conversion de los ultimos numeros. En el codigo debe haber algo que pueda modificar estos rangos.

    ResponderEliminar
  6. Todo esta perfecto amigo, pero me aparece en dolares como puedo hacerlo pero en pesos

    Saludos y disculpa mi ignorancia

    ResponderEliminar
  7. Solo busca la primera linea que dice "Result... " y hasta el final de esa linea quita lo que dice DOLARES y ponle lo que tu quieras Hector.

    ResponderEliminar
  8. hola, me gusto mucho y me es de utilidad tu codigo solo quisiera saber como le hago para que aparezca de esta forma pesos 00/100 M.N. Sorry lo desconozco

    ResponderEliminar
  9. Hola, como puedo hacer que la macro funcione en otro archivo, ya intente y no encuentro como.

    Gracias y saludos

    ResponderEliminar
  10. busca estas lineas y sustituyela, asi ya aparece de esta forma PESOS 00/100 M.N.)

    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.)"

    Espero y les sea de Utilidad.

    Gracias

    ResponderEliminar
  11. Busca estas lineas:
    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

    y sustituyela por estas:
    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.)”

    asi esta mas claro, ya te aparecera PESOS 00/100 M.N.

    ResponderEliminar
  12. uuuuuh agreguenmeeen!! TUPRINCESITA_LA86

    ResponderEliminar
  13. Hola a todos, gracias por sus comentarios.
    - Maria: Victor te ha dado la respuesta a tu pregunta.
    - Victor: lo que tienes que hacer es guardar la macro no en el libro donde estás trabajando sino en el libro de macros PERSONAL.XLS, que se abre de manera oculta cada vez que abres Excel. En uno de mis artículos he escrito algo sobre esta situación de las macros, busca el tema en la categoría OfficeTips y trata de crear un Módulo nuevo en ese libro en donde deberás pegar el código de este articulo y verás que lo podrás ejecutar en cualquier libro que quieras siempre y cuando sea en la misma máquina en donde trabajas, de lo contrario tendrás que hacer el mismo procedimiento si decides usar otras PC's.

    Saludos y espero que todo les salga bien.

    ResponderEliminar
  14. GRACIAS VICTOR Y PARA TU PROBLEMA SOLO DEBES GUARDAR TU MACRO EN PERSONAL COMO TE DICE MARIO ENTONCES EN EL ARCHIVO QUE LO NECESITES LO LLAMARAS EN FX(INSERTAR FUNCION) Y ESCOGES DEFINIDAS X EL USUARIO Y APARECERA LO QUE CREASTE, ESPERO TE SIRVA.
    YO TENGO OTRA DUDA COMO PUEDO CORREGIR ESTO SI TENGO $500 APARECE CUATROCIENTOS NOVENTA Y NUEVE PESOS 100/100 M.N
    GRACIAS X SUS CONSEJOS X CIERTO MUY UTILES

    ResponderEliminar
  15. GRACIAS MARIA, CON RESPECTO A TU PROBLEMA, NECESITARIAMOS SABER EL ORIGEN DE TUS DATOS, PORQUE AL PONER 500.00 MANUALMENTE EN UNA CELDA, APARECE BIEN (QUINIENTOS PESOS 00/100 M.N.), A MENOS QUE LA CANTIDAD (500.00) PROVENGA DE O SEA EL RESULTADO DE ALGUNA OPERACION O SE PROVENGA DE DATOS EXTERNOS. SI ES, ASI NECESITARIAMOS TODOS LOS DETALLES, PARA PODER AYUDARTE EN ALGO.

    ResponderEliminar
  16. SI TIENES TODA LA RAZON VICTOR, LO QUE PASA ES QUE MIS DATOS PROVIENEN DE UNA SUMA ENTONCES COMO NO ES UNA CANTIDAD CERRADA NO ME SALE X EJEMPLO 499.99999

    ResponderEliminar
  17. Pienso que podria ser posible usar también la función REDONDEAR(Celda, Nº) para ver si se puede resolver esta cuestión. A menudo yo suelo usar esa función.

    ResponderEliminar
  18. que tal


    vi tu email buscado en internet una utilidad, programa o macra para convertir las cantidades en monedas de excel a letras, ojalá me lo puedas facilitar, saludos y gracias.

    ResponderEliminar
  19. Hola felipe, solo tienes que crear la macro y poner el codigo que esta en la parte de arriba de este foro y listo.
    Espero te sea de utilidad mi comentario, si no a lo mejor te podemos ayudar de otra manera, solo tienes que decirlo.

    ResponderEliminar
  20. A lo mejor un videito flash para que vea felipe.
    Pero voy a necesitar un programilla.

    ResponderEliminar
  21. Hay un programa que te graba todo lo que haces en la computadora, deja conseguir el nombre y el enlace para descargarlo y te aviso.

    ResponderEliminar
  22. Puedes descargar un capturador de video para grabar en formato avi los paso para crear la macro para que felipe vea, en este link http://my-screen-recorder.archivospc.com/ puedes descargar este programa, es una version de prueba, pero bien y te puede servir, yo lo probe y al parecer es bueno.
    Saludos........

    ResponderEliminar
  23. Gracias Vicktor001, lo tomaré en cuenta.

    ResponderEliminar
  24. Mario, donde puedo poner un nuevo tema? porque tengo un problemilla que no se como solucionar, ya le busque de muchas maneras y nada. es el siguiente: A convinar datos de una hoja de excel a word. resulta que tengo un archivo en word del que jalo datos de una base capturada en excel, es en cuanto a fecha, por ej. en excel tengo el formato de fecha 15/08/2007 y ese dato quisiera presentarlo en word 15 de agosto de 2007, aunque en excel le modifique el formato, no me lo respeta me lo deja en el formato 15/08/2007. ojala pudieras ayudarme. Gracias.

    ResponderEliminar
  25. Veré que puedo hacer vicktor001.

    ResponderEliminar
  26. HOLA MI PREGUNTA ES PORQUE CUANDO NO HAY DECIMALES ME APARECE ASI 100/100 M.N.) Y CUANDO LAS HAY SI APARECE BIEN

    ResponderEliminar
  27. Hola Ismael, hice varias pruebas con numeros con y sin decimales y los convierte bien, habra mas detalles de tus numero a convertir? seria buenos saberlo.

    ResponderEliminar
  28. NO HAY MAS SOLO ESAS, LAS CANTIDADES SALEN CORRECTAS A Y OTRA COSA HE NOTADO QUE SALEN LAS CANTIDADES SIN EL PARENTESIS DEL PRINCIPIO CUANDO SE INICIA LA CANTIDAD CON LETRA ME PODRIAS MANDAR TU FORMULA PARA SABER COMO VA CORRECTAMENTE SALUDOS

    ResponderEliminar
  29. Si pudieran publicar al menos la parte del código que han modificado sería bueno, porque muchas veces no podemos adivinar lo que han hecho para darles una respuesta correcta.

    ResponderEliminar
  30. Saludos.


    Si me funciono, en windows xp Pero lo quise usar en windows vista y no me puso nada

    ResponderEliminar
  31. Hola a todos
    he probado la formula y con valores en moneda funciona bien
    pero necesito convertir valores como "2,5", donde el entero y el decima aparezcan con letras "Dos coma Cinco"; pero no he podido modificar la macro, por favor solicito ayuda urgente

    agradecido desde Chile.

    ResponderEliminar
  32. Buen Día

    Me puedes indicar como puedo utilizar en excel ya que deseo convertir de una celda de números a letras, pero nosé exactamente que hacer con la funsiòn que mencionas

    Saludos

    Atte: Adolfo Jr.

    ResponderEliminar
  33. Lee el articulo que dice en este mismo post, para que entiendes a que se refiere. En resumen, tiene que abrir el editor de Visual Basic de Excel y pegar el código en un módulo del libro donde estás trabajando.

    ResponderEliminar
  34. Excelente tu articulo, solo tengo un problema ya que al convertir la cantidad deja pegada la ultima cantidad con la palabra pesos, ejemplo: noventa y nuevepesos 00/100 m.n., me podrias decir como corrijo este error.
    gracias.

    ResponderEliminar
  35. Oye Pedro Paramo. podrías ser tan amable de poner la línea de código que has modificado para ver donde está el error?

    ResponderEliminar
  36. PRIMERO QUE NADA, MUCHAS GRACIAS.
    LO QUE ME GUSTARIA QUE EN LUGAR DE DOLARES QUEDARA M.N. (MONEDA NACIONAL).
    ESPERO ME AYUDES.
    SALUDOS..

    ResponderEliminar
  37. MARIO.
    YA CAMBIE LOS DOLARES POR M.N., TENGO OTRA CONSULTA. PARA $ 3,500.00 SE ESCRIBIRIA
    TRES MIL QUINIENTOS PESOS 00/100 M.N.- LO QUE NO PUEDO PONER EL LA PALABRA PESOS. COMO LE HAGO.

    ResponderEliminar
  38. GERARDO Trabajaré en ello y luego te doy una respuesta.

    ResponderEliminar
  39. Gerardo, en la parte de arriba hay un ejemplo de como poner la palabra pesos, checala, haz el cambio y nos cuentas........

    ResponderEliminar
  40. Es el comentario 10 y 11. Gracias Victor.

    Victor la ultima vez comentabas sobre trabajar con dos archivos, uno de Excel y otro de Word y que los datos cambiaban de alguna manera, me pregunto si podrías enviarme un par de esos archivos con datos de ejemplo para ver el comportamiento de lo que me dices y ver si te puedo ayudar. Mi correo es correo1503[at]gmail[punto]com

    ResponderEliminar
  41. bueno y clarito el tema, pero
    siguiendo el ejemplo de arriba :

    $ 500

    necesito que me aparezca solo :

    CUATROCIENTOS NOVENTA Y NUEVE PESOS

    Como lo ago ??

    ResponderEliminar
  42. nesecito escribir en letras el siguiente numero
    25.850.431.005.879

    ResponderEliminar
  43. HOLA ERWIN, NO ENTENDI,

    QUIERES QUE TE APAREZCA LA CANTIDAD SIN EL DATO "00/100 M.N. ?" O QUE ES LO QUE NECESITAS?

    PODRIAS EXPLICARLO MAS A DETALLE PARA PODER AYUDARTE.....

    SALUDOS

    ResponderEliminar
  44. MARIO....
    MUY AGRADECIDO POR ESTE FORO...UN MONTON DE DUDAS Y PROBLEMAS HE SOLUCIONADO...LLEVO POCO TIEMPO DANDOLE COMO TARRO AL EXCELL Y ME HA AYUDADO MUCHO...SIGO BUSCANDO TRUCOS Y FORMULAS...ESTARE PENDIENTE POR SI PUEDO AYUDAR EN ALGO..

    UN AMIGO..

    ResponderEliminar
  45. Pues a mi no me anda, hago todo tal cual y me dice
    ERROR DE COMPILACION
    y marca esta fila
    Function Aletra(Rcantidad As Double) As String

    Alguna idea??

    ResponderEliminar
  46. PERDOOOONNNNNNNNN
    AHORA SIIIIII!!!!!!!!!!!!!!!!!!!

    GENIOOO!!!!!!!!!!!

    ResponderEliminar
  47. tambien con el 21, 22, 23
    VEINTE Y UNO DEBERIA DER VEINTIUNO

    ResponderEliminar
  48. Ahora mirando bien, en los numeros 21.000, 22.000 etx, aparece como VEINTE Y 1, VEINTE Y DOS, cuando deberia ser VEINTIUN MIL, VEINTIDOS MIL, etc.

    ResponderEliminar
  49. Gracias Mario, ya corregi el error, ademas efectue algunos cambios para que me apareciera despues de la cantidad en letra la leyenda pesos 00/100 m.n.
    Gracias nuevamente por tu formidable herramienta.

    ResponderEliminar
  50. Hola, he intentado hacerlo pero al poner la función en la celda, me sale un error: COMPILE ERROR: Ambiguous name detected:pesos; qué podrá ser?

    ResponderEliminar
  51. Tengo el mismo inconveniente que Leandro... el 21 me sale "Vente y un" cuando deberia ser "ventiuno".

    Lo mismo con las terminaciones en uno, 51 aparece "cincuenta y un" y yo necesito "cincuenta y uno".

    Pense en modificar los valores de "numbers" y "tenths" pero si hago eso el numero 1000 me va a aparecer "uno mil" en vez de "un mil".

    Como se podrian insertar condicionantes para estos casos?.

    Saludos.

    ResponderEliminar
  52. hola mario

    me parece muy interesante tu block. y me gustaria saber si este codigo tambien se puede colocar en Acces. y donde lo pegaria.

    Me podrias Ayudar?

    Gracias

    ResponderEliminar
  53. En access no estoy seguro Dublin.

    ResponderEliminar
  54. Para el problema de los ventiuno y demas agregue lo siguiente

    Case 21 To 29
    Result = "VEINTI" + RecurseNumber(N Mod 10)

    y modifique el case de 20 hasta 99 asi

    Case 20, 30 To 99

    Espero les sirva

    ResponderEliminar
  55. Excelente respuesta juan, muchas gracias.

    ResponderEliminar
  56. hola yo tambien quisiera saber para que solo apareciera la palabra pesos sin 00/100

    si alguien me puede ayudar...

    ademas muxas gracias ha sido de gran ayuda

    ResponderEliminar
  57. Hola ya sustitui por

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

    pero me los pone en rojos y no ejecuta la funcion porque sucede???

    ResponderEliminar
  58. Hola Gendo seguramente es que el caracter ” no es la comilla simple " prueba a sustituir todos los ” por "

    ResponderEliminar
  59. Ahhhh Gendo es que al postear se cambia la comilla simple por esto ” , por lo tanto en mi comentario anterior siempre solo todas las comillas se ven asi ”. pero pureba a sustituir cada uno de esos caracteres por comilla simple.

    ResponderEliminar
  60. Ya corregí esas comillas del comentario 56 (gentil ayuda de Juan).

    Es un problema de los simbolos en wordpress pero ahora ya está listo. Gracias por sus comentarios.

    ResponderEliminar
  61. Hola Mario.
    Interesante herramienta nos has mostrado. Sin embargo, tengo un problema y es que quiero tener esta función fija para cuando habra cualquier libro de excell.

    Probe tus indicaciones al guardar el codigo en una macro nueva o q lo guardara en el libro de macros personal pero ya probe todos esto y todavia no logro fijar la función.

    Me podrias ayudar a paso a paso como guardar la funcion.????

    Disculpa mi ignorancia.

    Saludos y gracias por tu articulo.

    ResponderEliminar
  62. Alguien lo ha instalado con office 2007 en windows vista? Me podrian decir los pasos para hacerlo funcionar?. Gracias de antemano.

    ResponderEliminar
  63. Yo tengo algunos problemas con la parte decimal del numero, les mostrare un ejemplo

    1,580,001.58 UN MILLON QUINIENTOS OCHENTA MIL UN PESOS 62/100 M.N.

    1,970,001.97 UN MILLON NOVECIENTOS SETENTA MIL DOS PESOS 00/100 M.N.

    existe por ahi un redondeo que no he podido encontrar.

    como le puedo hacer para que me aparezcan correctamente los decimales, y no se haga el redondeo de esta forma.

    A quien le puedo mandar el codigo que estoy empleando para recibir un tanto de ayuda

    Espero sus comentarios.

    ResponderEliminar
  64. Hola:
    Primero que nada muchas gracias es una herramientao valiosa nos ha ayudado a muchos a no sufrir con los errores, en al elaboracion de facturas o cheques en excel.
    Me gustaria me dijeras como poner simbolo antes y despues de la cantidad en letra ejemplo:
    ( NOVENTA MIL SEISCIENTOS TRES PESOS 61/100 M.N. )
    = NOVENTA MIL SEISCIENTOS TRES PESOS 61/100 M.M.=

    ResponderEliminar
  65. busqué en google y esto fue lo que me aclaró de dudas sobre como guardar en personal.xls

    Personal.xls

    Podemos crear una macro para que este disponible en todas las hojas de cálculo. Esto se hace con el libro PERSONAL.XLS

    Personal.xls es un Libro que se carga cada vez que se inicia Excel, pero no esta visible ya que tiene el atributo de Escondido (Hidden), por lo que si necesitamos modificarlo lo debemos hacer a través del comando "Mostrar" del menú "Ventana". En caso que no exista lo podemos crear con un libro de trabajo nuevo, salvarlo con este nombre y dejarlo en la carpeta "InicioXL" (XLStart), que se encuentra en la carpeta "Office" del directorio donde esta instalado MSOffice. Cada vez que dejamos de trabajar con este archivo, lo debemos salvar y luego activar el comando "Ocultar" del menú "Ventana", para que no se vea cuando iniciamos la aplicación.

    La ruta de mi fichero es:

    C:\Documents and Settings\Adolfo\Datos de programa\Microsoft\Excel\XLSTART\[PERSONAL.XLS]Hoja1

    ... http://www.fcjs.urjc.es/finan/trucos.htm

    ResponderEliminar
  66. La macros es excelente, después de buscar varios sitios, este es el mejor. El caso es que probé el problema del "veintiuno y demas" y resulto lo siguiente:
    16000021 DIECISEIS MILLONES VEINTIUN 00/100 NUEVOS SOLES
    17000021 DIECISIETE MILLONES VEINTE 00/100 NUEVOS SOLES
    18000021 DIECIOCHO MILLONES VEINTE 00/100 NUEVOS SOLES
    19000022 DIECINUEVE MILLONES VEINTIDOS 00/100 NUEVOS SOLES
    20000023 VEINTE MILLONES VEINTICUATRO 00/100 NUEVOS SOLES
    21000024 VEINTIUN MILLONES VEINTICUATRO 00/100 NUEVOS SOLES
    22000025 VEINTIDOS MILLONES VEINTICUATRO 00/100 NUEVOS SOLES
    23000026 VEINTITRES MILLONES VEINTISEIS 00/100 NUEVOS SOLES
    24000027 VEINTICUATRO MILLONES VEINTIOCHO 00/100 NUEVOS SOLES
    25000029 VEINTICINCO MILLONES VEINTIOCHO 00/100 NUEVOS SOLES

    como puedes ver la ultima parte de los veinti... difiere de la cantidad en numeros.

    Como solucionar este problema?

    ResponderEliminar
  67. Me puedes pasr la macro por favor quiero converti numeroa letras en pesos

    Gracias...

    ResponderEliminar
  68. holo como puedo pasar numeros con pundo decimal a letra por ejemplo: 9.2 diga nueve dos

    ResponderEliminar
  69. Tremenda ayuda con este codigo, es posble que me envien el actualizado con las observaciones 53 y 54????

    ResponderEliminar
  70. Perdon son los comentarios 53 y 65

    ResponderEliminar
  71. Saludos, solamente quise felicitar al autor y agradecerle por esta función tan útil: me ha sido de provecho. Gracias.

    ResponderEliminar
  72. buenisimo, mil gracias, me sirvio bastante

    ResponderEliminar
  73. MARIO PROBE TU MACRO EN MIS AVALUOS Y SI FUNCIONA, SOLO QUE LA PRESENTACION DE LA CANTIDAD EN LETRA ES ENTRE PARENTESIS, EJEMPLO

    ( UN MILLON DOSCIENTOSMIL PESOS 00/100 M:N.)

    el parentesis de al principio no aparece y al final si aparece, ya intente itersertaselo, pero en honor a la verdad no he podido y me me falla, si me puedes dar la solucion te lo agradecere con toda el alma

    paco borrego

    ResponderEliminar
  74. repito ejemplo estaba mal escrito

    (UN MILLON DOSCIENTOS MIL PESOS 00/100 M.N.)

    ResponderEliminar
  75. TENGO EL MISMMO PROBLE DE COMENTARIO 65, PARA UESTRA SON LÑOS DECIMALES, ALGUIEN TIENE CORREGIDO ESTO???
    ME LO PUEDA ENVIAR?? SERA DE SUMA UTILIDAD, ANTCIPADAMENTE MIS DESEOS DE EXITOS PARA 2008

    15,000.01 QUINCE MIL 01/100 DOLARES
    150,000.01 CIENTO CINCUENTA MIL 02/100 DOLARES
    1,500,000.01 UN MILLONES QUINIENTOS MIL 00/100 DOLARES
    1,500,000.02 UN MILLONES QUINIENTOS MIL 00/100 DOLARES
    15,000,000.03 QUINCE MILLONES 00/100 DOLARES
    1,500,000.04 UN MILLONES QUINIENTOS MIL 00/100 DOLARES
    1,500,000.05 UN MILLONES QUINIENTOS MIL 00/100 DOLARES
    1,500,000.06 UN MILLONES QUINIENTOS MIL 00/100 DOLARES
    1,500,000.07 UN MILLONES QUINIENTOS MIL 12/100 DOLARES
    1,500,000.08 UN MILLONES QUINIENTOS MIL 12/100 DOLARES
    1,500,000.09 UN MILLONES QUINIENTOS MIL 12/100 DOLARES
    1,500,000.10 UN MILLONES QUINIENTOS MIL 12/100 DOLARES
    1,500,000.11 UN MILLONES QUINIENTOS MIL 12/100 DOLARES
    1,500,000.12 UN MILLONES QUINIENTOS MIL 12/100 DOLARES
    1,500,000.13 UN MILLONES QUINIENTOS MIL 12/100 DOLARES
    1,500,000.14 UN MILLONES QUINIENTOS MIL 12/100 DOLARES

    ResponderEliminar
  76. oye tengo un problema ya que la macro no me esta funcionando como deve de ser he echo todo lo que dices en el post anterior para crear la macro pero no me funciona de echo el de la regla me funciono bien pero este no se por que no me ha funcionado agradeceria tu ayuda

    ResponderEliminar
  77. Agradezco la solucion a tan antiguo problema que tenia desde hace 10 años lo observe que alguien lo manejaba pero ahora siento que valio la pena la espera te felicito por tu blog, serch

    ResponderEliminar
  78. Hola...
    Lo probe en una makina con office 2003 y estuvo ExCELEnteEEee... pero donde lo necesito es en una makina ke tiene office 2007... pero no funcionaaa... no se algo estare haciendo mal, de todas formas esta excelente. Espero me contestes prontooo.... y cualquier cosa ahi esta mi mail...

    ResponderEliminar
  79. Pues yo lo he probado y creo que no hay ningun problema en ello, pero verificare nuevamente y luego te comento Alejandra.

    ResponderEliminar
  80. Hola Mario... Buen dia...

    Entonces algo he de estar haceidno mal?? :( Lo voy a checar pero de todos modos espero tu respuesta a ver su no hay ningun problema con el 2007 que es lo que deseo...

    Ah por cierto que tengas un feliz año nuevooo!!!

    ResponderEliminar
  81. MIL GRACIAS FELIZ AÑO NUEVO

    ResponderEliminar
  82. Gracias, no sabes como me ayudo, yo la utilice para poder poner promedios en letras, jejeje como no se programar solo le borre y cambie algunas cositas y ahora si es mas facil, ya que los maestros al poner calificaciones a mano muchas veces se equivocaban ponia 9 en la calif con numero y otro num diferente en la calif con letra, es un problema muy tonto al parecer pero me ayudo muchisimo, que bueno que existan personas como tu saludos

    ResponderEliminar
  83. ya tuve un problema, cuando lo mande a otra pc no me funciono me marca #name? que no la reconoce, a pesar de que en mi maq. la guarde en el personal.xls y despues la guarde en el mismo libro, no se si tenga que ver que donde la mande tengan office 2007, y en ingles, yo la tengo en español y el office 2003, siin embargo con las funciones predetermiinadas no se tuvo problemas tengo usando el promedio y lo cambio de idioma a average, es solo con la función, no se copia ni una macro de las que tenia, que será??? y es que se supone que este archivo lo mandaría a maestros y pueden tener el office 2003 o el office xp o el 2007 en ingles y en español y el objetivo es que funcione en cualquiera pero como que no se copia que hago?? o que estoy haciendo mal??? saludos y gracias, si tambien alguien me puede pasar la respuesta a krimacora@yahoo.com.mx, por que a veces en mi trabajo no tengo tiempo de ver la web pero si mi mail, gracias mil .

    ResponderEliminar
  84. Sencillo krima, si la nueva maquina no tiene el código que aqui he puesto en el libro de macros PERSONAL.XLS de cada una de ellas, pues no funcionara. Prueba insertar el código en cada una de ellas (las PC's) y luego envia el libro de excel y verás que todo funcionará.

    Dudo que las rutas sean incorrectas pues lo he probado en Office XP, 2003 y creo que en Office 2007 también y todo marcha bien. Pruebalo y cualquier duda puedes dejar tu mensaje. Al correo no puedo enviar respuestas porque estoy corto de tiempo.

    Saludos.

    ResponderEliminar
  85. Gracias funciona bien para numeros menores a un millon,
    el problema es cuando pongo pe. 1222,345.56 el ultimo valor decima de .56 lo deja como valor 00/100. como puedo correjirlo.

    Saludos

    ResponderEliminar
  86. ME FUE SUPER UTIL ESTA CODIGO PARA PODER CONVERTIR LOS NUMEROS A LETRAS NADA MAS UN CONVENIENTE COMO PUEDO PONERLO A PESOS MEXICANOS. EJ: EN EL CODIGO APARECE DE LA SIGUIENTE MANERA: 100 CIEN 00/100 DOLARES, Y LO QUE NECESITO ES QUE SALGA 100 CIEN PESOS 00/100 M.N.

    TE AGRADECERIA EN DEMACIA SI ME PUDIERAS CONTESTAR

    ResponderEliminar
  87. luiguibros, solo revisa el código con cuidado y cambio lo que no necesites por los PESOS MEXICANOS.

    Cualquier otra duda, solo consulta.

    ResponderEliminar
  88. disculpen, esto s eve genial por lo q he leido, y talvez sea muy tonto pero no entiendo como encuentro o com lo guardo el libro personal de macros, pues solo me dice libro 1-modulo 1(codigo) porfis ayudenme y mil gracias

    ResponderEliminar
  89. ya hice la formula, pero me pone(error verifique la formula) porfis ayudenme soy primerizo

    ResponderEliminar
  90. jejeee olvidenlo chicos ya vi el error, jejeje gracias esta exelente jeje solo hay un pequeño problemita, ya ejecute el programita, pero ¿al hacer otro archivo nuevo tengo q volver a hacer el programa con diferente nombre segun el trabajo q realice?? o como puedo hacer q funcione con todos los archivos nuevos q haga, porfis

    ResponderEliminar
  91. gracias me va a ser de gran utilidad esta formula ya que yo trabajo con numeros y luego tengo que pasarlo a letras muchas Gracias

    ResponderEliminar
  92. Oye, te doy lo único que puedo darte, las gracias no sabes como me simplificara mi trabajo esta aplicación en verdad sera de gran ayuda y de paso ahorrare papel y equivocaciones en el trabajo de oficina, un saludo desde México con el mayor de los agradecimientos

    ResponderEliminar
  93. fatima:
    en el cometario 68 MARCO propone lo siguiente,

    busqué en google y esto fue lo que me aclaró de dudas sobre como guardar en personal.xls

    Personal.xls

    Podemos crear una macro para que este disponible en todas las hojas de cálculo. Esto se hace con el libro PERSONAL.XLS

    Personal.xls es un Libro que se carga cada vez que se inicia Excel, pero no esta visible ya que tiene el atributo de Escondido (Hidden), por lo que si necesitamos modificarlo lo debemos hacer a través del comando “Mostrar” del menú “Ventana”. En caso que no exista lo podemos crear con un libro de trabajo nuevo, salvarlo con este nombre y dejarlo en la carpeta “InicioXL” (XLStart), que se encuentra en la carpeta “Office” del directorio donde esta instalado MSOffice. Cada vez que dejamos de trabajar con este archivo, lo debemos salvar y luego activar el comando “Ocultar” del menú “Ventana”, para que no se vea cuando iniciamos la aplicación.

    La ruta de mi fichero es:

    C:\Documents and Settings\Adolfo\Datos de programa\Microsoft\Excel\XLSTART\[PERSONAL.XLS]Hoja1

    MI RUTA MOGOVI
    puede que no se la misma ruta
    yo cree el libro de personal.xls y lo guarde en esta carpeta funciona bien en todos los libros.

    C:\Archivos de programa\Microsoft Office\OFFICE11\XLSTART

    guardalo en esta carpeta, espero y te sriva.

    Y GRACIAS POR ESTE CODIGO TENIA OTRO Y ME DABA PROBLEMAS CON ALGUNOS ARCHIVOS.

    ResponderEliminar
  94. OYE ME GUSTARIA ESTAR EN CONTACTO CONTIGO, PARA APRENDER MUCHO DE FORMULAS EN EXCEL COMO UN PASATIEMPO, RESPONDEME A MI CORREO, por favor

    ResponderEliminar
  95. MARIO ERNETO MORENO DIAZ19 de enero de 2008, 2:12

    NECESITO ESCRIBIR EN LETREAS LAS CANTIDADES EN DOLLARES USA

    ResponderEliminar
  96. MARIO ERNETO MORENO DIAZ19 de enero de 2008, 2:12

    NECESITO ESCRIBIR EN LETREAS LAS CANTIDADES EN DOLLARES USA

    ResponderEliminar
  97. Es una gran idea la que está publicada, pero desgraciadamente yo ya traté de hacer el macro pero no me sale, es la primera vez que hago un macro y no tengo experiencia, alguien puede ayudarme !? realmente necesito ayuda, gracias !

    ResponderEliminar
  98. alguien podría pasarme el codigo con las correcciones que anteriormente han resuelto !? y ayuda por favor !!!

    ResponderEliminar
  99. Miren amigos, si es la primera vez que van a crear una macro deberían leerse el tema que he puesto QUE ES UNA MACRO (http://www.elcuaderno.co.cc/?p=72) para que les sirva de introducción y les facilite la creación de este procedimiento.

    Además, copien el código tal y como está escrito y revisenlo con cuidado.

    Mario.

    ResponderEliminar
  100. como puedo hacer para que me muestre por ejemplo: 1000.00 en letras Mil pesos 00/100 !? porque el codigo mostraria Mil 00/100 pesos

    ResponderEliminar
  101. Mario, muchas gracias por la ayuda, ya pude crear la macro en el mismo libro y en personal.xls, muchisimas gracias por la ayuda y apoyo.
    Ahora, encontré un error que no he podido solucionar, cuando los los centavos son .00, .01, .02... hasta .09 en letras se ve asi, si pongo $1.05, en letra es: UN 0PESOS 5/100 M.N." uno de los ceros se adelanta y no veo como arreglarlo, quien me ayuda !?
    Gracias de nuevo !!

    ResponderEliminar
  102. me encanto la formula, solo q tengo la misma duda del num. 67 martin, no he podido agregar el parentesis de inicio, ya lo intente y me marca con rojo, q me indica q esta equivocado, me podrias ayudar, por favor, ya hice todo me salio bien, la cantidades bien, me aparece solo el parentisis final, aaahhh tambien no he podido grabarlo pa`q me parzcan en mis hojas de excel, el de personal.xls
    te agradezco mucho tu atencion, espero q me ayudes

    ResponderEliminar
  103. hola q buen blog es este, espero me puedan seguir ayudando, a mi me aparece un error cuando quiero que me convierta un numero en millones, me redondea las decimales
    ejemplo:
    12,111,123.60 (doce millones ciento once mil ciento VEINTICUATRO 00/100 m.n.)
    ya estuve revisando y solo lo hace en "millones"
    me podrian ayudar???
    graxxxxx

    ResponderEliminar
  104. La macro esta muy bien, muchas gracias pero tengo problemas con el redondeo de los decimales, ya que cuando sale con cero decimales aparece asi
    22.00
    25.00
    30.00
    ( TREINTA PESOS 0 /100 M.N. )
    y necesita salir 00/100

    la otra es que cuando son cantidades mayores o aumenta los decimales o no salen correctos
    511,825.25
    76,773.79
    588,599.04
    ( QUINIENTOS OCHENTA Y OCHO MIL QUINIENTOS NOVENTA Y NUEVE PESOS 6 /100 M.N. )

    511,825.30
    76,773.80
    588,599.10
    ( QUINIENTOS OCHENTA Y OCHO MIL QUINIENTOS NOVENTA Y NUEVE0PESOS 12 /100 M.N. )

    agradecere su ayuda para corregir este pequeño punto.

    Garcias

    ResponderEliminar
  105. Una pequeña aclaracioncita para todos los amigos que comentan sobre la variación en los centavos.

    Dependiendo de la PC en que se trabaje, y la cantidad de fórmulas que se usen para determinados cálculos en los libros de Excel, siempre hay una ligera y casi imperceptible variación de los valores que se muestran como resultados, así en algunas PC's un valor pueden mostrar 0.66 ctvs, y otras 0.65 ctvs o decimales, lo que sea, por lo tanto la formula aqui presentada está pensanda para volores escritos en celdas manualmente que no incluyen redondeos o aproximaciones derivados de otras formulas complejas.

    Ustedes también podrían usar la función "redondear" y establecer un valor (parametro) de redondeo en dicha función que corresponda a únicamente dos decimales solamente, y eso les podría resolver ese problema que a muchos se le presentan, espero que pongan especial cuidado a lo que les menciono en este comentario y verifiquen sus trabajos.

    Si tienen dudas pueden comentarlas, que si está en mis posibilidades de responderles y me alcanza el tiempo, con mucho gusto les ayudaré.

    Saludos.
    Mario.

    ResponderEliminar
  106. HOLA A TODOS QUIEN PUDIERA AYUDARME NECESITO ESTE ARCHIVO QUE TANTO MENSIONAN SOLO QUE LO NECESITO QUE ME LOS PASE A PESOS MEXICANOS... SE LOS VOY AGRADECER MUCHISIMO MI CORREO ES castro_26575@hotmail.com

    ResponderEliminar
  107. MI AMIGO. MUY INTERESANTE TU MACRO
    SOLO QUE EXISTE UN ERROR DE DICCION
    TU MACRO DA COMO RESULTADO: EJEMPLO:
    211.30 RESULTADO DOSCIENTOS ONCE 30/100 PESOS

    DEBERIA SER:: DOSCIENTOS ONCE PESOS CON 30/100 M.N.

    TE VOY A AGREDECER MUCHO QUE ME ENVIES EL MACRO CORRECTO YA QUE NO SE COMO REPROGRAMARLO.
    MI CORREO ES ADEPYME@GMAIL.COM
    MUCHAS GRACIAS

    ResponderEliminar
  108. Muy buena la macro, gracias por publicarla

    ResponderEliminar
  109. perdi un dia armando una hoja para pasar numeros a letras y llegue al millon. ahora encuentro tu excelente funcion. FELICITACIONES.

    ResponderEliminar
  110. Yo pase AÑOS buscando una función como esta, mira que hasta tome un curso de "programacion" para ver si asi y bueno... mejor ni hablar de eso.

    Si que la pegaste con esta solución, a mi me funciono a la primera y es distintas versiones.

    GRACIAS MIL... CIEN...DOCIENTAS...TRECIENTAS...ETC.

    NOTA SI EN ALGO PUEDO AYUDAR CON MUCHO GUSTO.

    ResponderEliminar
  111. Tu agradecimiento es suficiente Sergio, bienvenido al blog.

    ResponderEliminar
  112. de verda muuuchas gracias por tan buena utilidad tengo una pregunta... como hago pa que en la formula no salgan los decimales (centavos) y me muestre el valor textual de una casilla mejor dicho:

    en una casilla en formato puedo quitarle los decimales pero el programa sigue tomando los decimales (centavos) como hago para que me aparezca el mismo numero de la casilla sin tener en cuenta los decimales

    otra vez gracias sos un idolo!!!

    ResponderEliminar
  113. HOLA!!
    EXISTE ALGUN MODO DE K NO TENGA K HACER LA FORMULA X MEDIO DE UNA MACRO X K LO KIERO HACER MANUALMENTE EN UNA HOJA EN EXCEL Y PONGO EN LA CELDA DONDE KIERO LA CANTIDAD EN LETRA LO SIGUIENTE =PESOS(H21) (H21 LA CELDA EN LETRA) Y NO ME PONE NADA ME PONE
    #¿NOMBRE? K HAGO???

    ResponderEliminar
  114. HOLA!!
    EXISTE ALGUN MODO DE K NO TENGA K HACER LA FORMULA X MEDIO DE UNA MACRO X K LO KIERO HACER MANUALMENTE EN UNA HOJA EN EXCEL Y PONGO EN LA CELDA DONDE KIERO LA CANTIDAD EN LETRA LO SIGUIENTE =PESOS(H21) (H21 LA CELDA EN NUMERO)sorry Y NO ME PONE NADA ME PONE
    #¿NOMBRE? K HAGO??? ayuda!!!

    ResponderEliminar
  115. comentario numero 56 juan por favor podrias la subir la programacion de los veintiun para solo copiarla gracias
    hugo

    ResponderEliminar
  116. comentario nuro 56 juan por favor podrias la subir la programacion de los veintiun para solo copiarla gracias
    hugo

    ResponderEliminar
  117. Blanki: lamentablemente la gente de microsoft nunca considero una situacion en la cual nosotros pudieramos usar una funcion tan solo con poner =PESOS(CELDA), por lo tanto es necesario usar el entorno de programación de visual basic para efectos de poder efectuar esta función. De otra forma más fácil no se puede blanqui, pero intenta hacer el proceso y a lo mejor aprenderás un poco mas de todo.

    ResponderEliminar
  118. Buenas tardes Mario:

    Muchas gracias por la funcion. Tengo una inquietud que es:
    Cuando se declara cifras mayor de mil millones o billones sale mensaje "Error, verifique la cantidad.", como se puede mejorar la macro.

    Lo otro en cuando se digita en la celda 999.999.999 escribe cien millones en ves de novecientos noventa y nueve millones.....

    gracias

    ResponderEliminar
  119. Revisaré el código y veré que puedo hacer.

    ResponderEliminar
  120. que tal saludos a todos. mario un favor tengo problemascon los decimales al poner la cantidad no me parece bien.
    ejemplo
    265701,35 DOSCIENTOS SESENTA Y SEIS MIL SETECIENTOS DOS PESOS 34/100 M.N.
    si te das cuenta los decimales no coinciden TE LO AGRADECERIA MUCHO SI ME PUDIERAS AYUDAR

    ResponderEliminar
  121. Excelente macro, y muy buenos comentarios. Muchisimas gracias a Victor, Mario y a los demás que aportaron. Esto ahorra mucho trabajo.

    ResponderEliminar
  122. Buenas tardes...a mi me sirvio mucho usarlo, lo que no puedo es: por ejemplo la cantidad que yo tengo en la celda esta formulada de otra parte, y la suma es de 267.54 pero yo tengo la cantidad redondiada es decir tengo 268 en la celda....pero en letra me pone "Doscientos Sesenta y Siete 54/100 Pesos" como puedo hacerle para que me ponga la cantidad redondiada =(....Gracias!!!

    ResponderEliminar
  123. el problema de los decimales no es de redondeo, ni acumulacion, eso esta bien definido en la rutina, la macro se pierde despues de 1,999,999.99?
    NEcesito resolver esto, por lo demas esta excelente y muchas felicitaciones.

    ResponderEliminar
  124. Muchas gracias! Super util su macro, en verdad FELICIDADES

    ResponderEliminar
  125. Hola!! que tal...Bueno, en principio queria agradecer mucho por haber subido tan util informacion.
    Pero tengo una duda, queria saber como tengo que modificar la programacion para que me aparezca el resultado en letras pero sin los centavos.

    Ej: 253 que me escirba: doscientos cincuenta y tres.

    Sin los centavos. Desde ya muchisimas gracias

    ResponderEliminar
  126. hola
    q tal bueno me parece interesante lo de tu macro lo he probado pero al mmento de aabrirlo de nuevo me parece error como puedo hacerlo no te entiendo cuando dices q lo guarde como personal como lo podria solucionar ese problema gracias de todas maneras si puedes ayudarme seria de mucha ayuda

    ResponderEliminar
  127. Hola; demasiado bueno de verdad, ya trasforme la función a bolívares (moneda de mi país Venezuela) y quedo así: 10,40 = diez bolívares con 40/100 céntimos; solo reemplace dólares por céntimos y agregue bolívares con entre los primero “aprestéis” de la formula; mil gracias mi amigo

    ResponderEliminar
  128. que tal esta muy bien esta informacion pero me podran ayudar necesito que la sig. cantidad aparesca en pesos mexicanos. ejemplo 1,500.50
    (un mil quinientos pesos 50/100 M.N.)


    es para facturas del fisco
    mi correo es luis-felipe25@hotmail.com

    muchisimas gracias hasta luego

    ResponderEliminar
  129. Hola; excelente el blog, muchas felicidades.

    me podrias decir como le hago para que el principio de la cantidad le aparesca el "(" por que solo aparece el del final

    Mando muchos salud2

    ResponderEliminar
  130. Una excelente herramienta, yo la ocupo para hacer facturas, y realmente ahorra mucho tiempo.

    Hice algunas modificaciones que quizas sirva a otras personas. La adapte para pesos Mexicanos y corregí lo de los "veintiun".

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

    Function Pesos(Number As Single) 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 = "SON: ( " + Result + " PESOS" + " 0" + Mid(Str(Round((Number - Fix(Number)) * 100)), 2, 1) + "/100 M.N. )"
    Else
    Result = "SON: ( " + 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 21 To 29
    Result = "VEINTI" + RecurseNumber(N Mod 10)
    Case 20, 30 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 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
  131. Gracias por ese muy buen comentario Ricardo. Espero que le sirva mucho a personas que han consultado lo que tu has hecho. Unicamente les comentaré que si copian y pegan el código y por casualidad da algún error lo comenten porque Wordpress en el caso de código de programación a veces modifica algunos caracteres aunque siempre estoy pendiente de ello.

    Un saludo.

    ResponderEliminar
  132. Antes que nada quiero aclarar que no soy programador ni nada por el estilo, simplemente un usuario avanzado.

    Si, tienes razon Mario, al pegar se modificó el códico, la verdad no encontre la manera de subirlo como debe ser, sin embargo lo envié a tu correo tal y cual en un archivo de texto.

    Saludos.

    ResponderEliminar
  133. ah gracias por la ayuda me ha servido de mucha utilidad solo tengo un problema cuando me parece 1101 me sale un mil ciento un 00/100 otro es cuando termina en uno por ejemplo 21 me sale veintiun o 31 treinta y un

    ResponderEliminar
  134. quisiera saber q es excel y a puedo hacer atraves de el y tambien como ejecutar sus programas

    ResponderEliminar
  135. Muchas gracias por la ayuda, es mucho el ahorro de tiempo con esta funcion. Salud2

    ResponderEliminar
  136. Hola: Hace algun tiempo atras pude poner el codigo en el Form sin abrir un libro nuevo, esto dio lugar a NO NECESITAR abrir el libro que contiene la macro para poder usarla sin error.
    Lamentablemente con el codigo de EURO TOOL que viene por defecto ya no se puede hacer.
    Quizas vos conozcas la forma de insertar nuevamente el codigo sin abrir un nuevo libro.
    Gracias por el codigo me es de muchisima ayuda y te felicito por tu blog.
    Estas siempre en MIS FAVORITOS

    ResponderEliminar
  137. Excelente!!

    De gran utilidad, felicitaciones, estaremos en contacto, un saludo!!

    ResponderEliminar
  138. Ok, he jugado un rato con el MACRO, y por cuestion de semantica le agregue la palabra "con", por lo tanto y como ejemplo: 123,45 Bolivares, se lee: ciento veintitres con 45/100 bolivares Todo esto gracias a las diferentes preguntas y respuestas aqui encontradas, 1000 Pts!!

    ResponderEliminar
  139. nathali: prueba visitar los siguientes enlaces:
    http://www.aulafacil.com/Excel/temario.htm
    http://www.monografias.com/trabajos16/sepa-excel/sepa-excel.shtml
    Espero te sirva.

    Hugo/Luis Miguel: me alegra que les haya servido.

    McGust: Ya probaste insertar el código en el libro de macros personal??, para que no tengas que crearla en cada libro.

    ResponderEliminar
  140. Saludos amigos, quisiera que me enviaran un codigo o que modificar en el actual para que solo me aparezcan las cantidades de los numeros en letras sin decimales o signos de MN, por ejemplo 78= Setenta y ocho; me sirve para registro de calificaciones en mi Colegio

    ResponderEliminar
  141. hola primero que nada muchisimas gracias por este aporte me ha facilitado muchas cosas pero tengo un problemita ya lo puse en pesos y que tambien apareciera con M.N pero no se en donde darle un espacio para que las letras no me salgan pegadas a la cantidad ejem:

    If Round((Number - Fix(Number)) * 100)

    ResponderEliminar
  142. hay creo que no salio el ejemplo :
    1562

    UN MIL QUINIENTOS SESENTA Y DOSPESOS 00/100 M.N
    quisiera que la palabra pesos tenga un espacio asi es como lo tengo :
    If Round((Number - Fix(Number)) * 100)

    ResponderEliminar
  143. bueno creo que no puedo postear el ejemplo ojala entiendas mi problema GRACIAS

    ResponderEliminar
  144. OK. mi excel no tenia el personal x lo que tuve que crearlo. Obviamente lo grave luego de modificarlo a mi conveniencia en la ruta C:\Archivos de programa\ Microsoft office
    \office11\XLSTART . Para los que tengan que hacer lo mismo les sugiero ocultar la ventana del personal.xls con VENTANA-OULTAR asi no aparece cuando abrimos los libros. Ta buena la REGLA funciona de 10. Gracias

    ResponderEliminar
  145. necesito que solo me aparezca el monto entero, sin 00/100 y la palabra dolares. Ej. 500300, quinientos mil trescientos, gracias

    ResponderEliminar
  146. Saludo muy bueno su tema pero yo ando buscando uno mas espesifico y creo qu eaqui me pueden ayudar, lo que quier es lo mismo que explicaron ariba pero en vez de ponerlo 5 en la celda A1 par aque salg aen letra en la B1 "CINCO", lo que necesito es que cuando lo ponga 5 en la celda A1 me salga CINCO en la misma celda A1, o en vez de CINCO que salga otro texto definido por mi, esto es par afine de digistacion.

    Porfavor si alguien puede ayudarme o orientarme de otro programa que peuda hacer esto para digitar.

    ResponderEliminar
  147. Que tal amigo Mario: Te saludo desde Guetemala, Quisiera que me enseñaras algun codigo para convertir numeros a letras, pero sin que aparezcan al final los signos de moneda o decimales para que cuando yo escriba un numero me aparezca solamente la conversión en letras; asi por ejemplo si yo escribo el numero 75 me aparezca solo el texto Setenta y cinco solamente con la inicial mayuscula, me sirve para escribir cantidades en letras de las calificaciones de los certificados de los alumnos del colegio donde trabajo

    ResponderEliminar
  148. Saludos desde Monterrey Mexico y quiero felicitales y darles la gracias porque me acabana de ahorrar un chorro de tiempo en mi trabajo

    saludo Janeth

    ResponderEliminar
  149. Miguel Hernandez4 de abril de 2008, 9:42

    Estimado Amigo:

    Soy de Guatemala, y dejame decirte que en muy pocos sitios se encuentra la informacion exacta de lo que se busca, por lo que te felicito por la didactica con la que has manejado los temas que se han solicitado y ademas de esto me gustaria saber si tenes mas articulos respecto a trucos de excel. Espero que cada dia mas aporten a tu pagina.

    ResponderEliminar
  150. Pues normalmente escribo seguido sobre Excel, solo busca un poco en el blog y verás.

    Gracias por tu visita Miguel.

    ResponderEliminar
  151. Agradeceré quien me pueda asesorar sobre cómo se debe ejecutar esta macro una vez grabada y guardada, es decir, ya tengo las cantidades en excel en la celda A1, pero quiero aplicar la cantidad en la B1; cuál es el procedimiento para que se haga la converción. gracias

    ResponderEliminar
  152. Agradeceré quien me pueda asesorar sobre cómo se debe ejecutar esta macro una vez grabada y guardada, es decir, ya tengo las cantidades en excel en la celda A1, pero quiero aplicar la cantidad en la B1; cuál es el procedimiento para que se haga la converción o que tecla o teclas debo de presionar para que se efectúe la macro. En realidad más necesito esta maco para word 2007. gracias

    ResponderEliminar
  153. adrian: tienes que agregarle un espacio antes del pesos seria " pesos" y tu lo tienes "pesos" fijate en el espacio antes de la palabra.
    Jaime: una vez que guardas la macro, en el archivo personal.xls, llamas la formula poniedo =personal.xls!pesos(aqui la celda que quieres convertir a texto)

    ResponderEliminar
  154. Buenas tardes, agradezco muchisimo el que puso la función, no saben como me ha ahorrado tiempo en hacer cheques, facturas, etc. en donde perdemos tiempo muchas veces. Yo sé que un segundo en muchas ocasiones nos cuesta un poco de trabajo y aveces fallamos una letra por la prisa, pero con esta formula, nos facilita ese trabajo y se nos olvida. Ya me familiaricé con las funciones y tengo por seguro que me funciona al 100% no puedo exigir mas. Al principio me costó un poco, pero analizando la linea de comandos se va mejorando y asi se va probando, tengo que decirlo asi, porque no sé nada de programación solo por el interés de solucionar un problema encontré esta pagina. Gracias a todos lo que han participado e interesado como yo...seguiré leyendo de ustedes para aprender, es muy interesante y productiva.

    ResponderEliminar
  155. HOLA BUENAS TARDES NUNCA HABIA INTENTADO ESTO, Y TODO ES MUY INTERESANTE. YO KISIERA KE ME PASARAN POR FAVOR UNA FORMULA PARA PASAR LA CANTIDAD EN LETRA YO TENGO EN EXCEL UNA HOJA PARA FACTURACION PERO ME FALTA PONER LA CANTIDAD EN LETRA INTENTE CON LAS FORMULAS KE TIENEN ALGUNOS PERO NO ME SALE EL EXCEL KE TENGO ES DE WINDOWS 2000 PROFESSIONAL. POR FAVOR TE LO AGRADECERIA MUCHISIMO Y QUE TENGAN UN BUEN DIA

    ResponderEliminar
  156. Oye amigo!
    una respuesta a algo que siempre habia buscado la manera de solucionarlo.

    sobre todo porque nos da la seguridad de preveer los errores.
    Te felicito a ti y a la vez a todos los q han participado en el blog por darnos esta gran solucion.

    mi unico pero es que me funciona al 100% solo hasta 999,999.99 hasta antes del melon de quesos.

    ahi ya se desvirtúa y me saca mal calculado los centavos, sin que sea problema de redondeos, xq la cantidad a convertir la escribo manualmente en una celda en blanco.

    lastima q no todo en la vida sea perfecto, ojala exista pronto algo mejorado aun..

    pero por lo pronto .. es simplemente GENIAL !!!

    ResponderEliminar
  157. Encontre genial tu funcion pero me cabe una duda, ya que soy de chile y aca trabajamos con pesos.
    Mi pregunta es la siguiente:
    como puedo modificar la funcion para que como resultado me de solamente pesos

    ej: $ 587 = quinientos ochenta y siete pesos

    Te agradeceria un monton ya que llevo bastante tiempo tratando de hacer esto.

    ResponderEliminar
  158. Priscila:
    Solo cambia lo que dice DOLARES a PESOS en el código y lo tendrás listo!!

    Saludos.

    ResponderEliminar
  159. necesito saber como convertir los numeros a letras. lo he intentado pero no puedo.
    me urge saer como

    ResponderEliminar
  160. Mario:
    Lo cambie y ahora me sale en pesos, peso me gustaria que saliera de la siguiente manera

    Ej.: 567 quinientos sesenta y siete pesos.

    y no lo que me aparece ahora que es:

    567 Quinientos sesenta y siete 00/100 pesos

    La idea es eliminar el "00/100"

    Me podrias ayudar con eso?

    De ante mano muchas gracias.

    ResponderEliminar
  161. Mario: Te saludo nuevamente desde Guatemala solamente para suplicarte si estuviera en tu posibilidad crear un codigo para convertir cantidades de numeros a texto de cero a cien, pero que el texto de la conversión de numeros a letras solamente tenga la inicial mayuscula por ejemplo el numero 75 sería Setenta y cinco, considero que a varios nos puede servir porque manejamos calificaciones en certificados de Colegios e Institutos de Educación Básica. Gracias por tu comprensión.

    ResponderEliminar
  162. Ya instale la macro y la guarde como dice en el libro Personal, pero al momento de ejecutarlo en otro libro no funciona. Me sala la dirreccion donde esta guardado el libro.

    =C:\PERSONAL.XLS!PESOS(B12)

    A que se debe ese error, que hago mal?

    Gracias

    ResponderEliminar
  163. mario
    esta excelente tu macros, solo tengo un requerimiento,

    he notado que tiene varios arreglos y la verdad ya me perdi,
    me puedes mandar el arreglo final, lo quiero para hacer un macros en facturas
    y bueno no he podido saber como ponerlo para que jale en todos los libros

    ResponderEliminar
  164. Mario
    por cierto acabo de leer otra nota en tu pagina principal

    y me falto pedirte algo

    " POR FAVOR MARIO ME PUEDES MANDAR EL MACROS COMPLETO, DE ANTE MANO TE PIDO UNA DISCULPA POR NO PONER ATENCION A TODA LA CADENA, DE COMENTARIOS DE TODOS LOS QUE AMABLEMENTE APORTAN PARA QUE TODOS SE NOS FACILITEN LAS COSAS, TE LO AGRADECERIA MUCHO, POR ULTIMO ESPERO QUE ESTE COMENTARIO NO INCOMODE A NADIE, LO HAGO POR QUE ENTIENDO QUE LAS COSAS SE DEBEN DE PEDIR BIEN, SIN MAS AGRADESCO DE ANTEMANO SU AYUDA"

    ResponderEliminar
  165. OK ESTO FUE LO QUE HICE
    NO ENCONTRE EL LIBRO DE PERSONAL
    ASI QUE HICE EL MIO, PERO NO FUNCIONO CUANDO QUIERO HACERLO O APLICARLO EN OTRA FORMULA,
    ENTONCES HICE LO QUE SUGIRIO
    McGust - 31 Mar 08 a las 12:00:53
    EN SU NOTA
    Y FUNCIONO SOLO QUE LA FORMULA ME QUEDO
    =PERSONAL.XLS!PESOS(A1)
    SOLO ASI.
    ESTUVE HABLANDO CON MI CONTADORA Y DE ENTRADA, ME DICE QUE LA FORMA CORRECTA DE ESCRIBIR 21 SI ES VEINTE Y UN XXXX
    ASI QUE EL MACRO ESTA PERFECTO, SOLO POR QUE NO PUEDO HACER QUE FUNCIONES EN TODOS LOS LIBROS, DE TODOS MODOS MIL GRACIAS

    ResponderEliminar
  166. jorge:
    La macro completa está escrita arriba en el artículo, pero te diré que hare: Voy a escribir algo sobre el libro de macros personal y luego le echas un vistazo.

    Saludos.

    ResponderEliminar
  167. MARIO

    GRACIAS POR LA CONTESTACION, LO UNICO ES QUENO PUEDO HACER QUE LA FORMULA SE PUEDA USAR EN TODOS LOS LIBROS

    MAS O MENOS LO PARCHE Y QUEDO
    PERO ESPERARE TU ARTICULO
    POR CIERTO MUY BUENA TU PAGINA, COMO QUE DOS LOS COMENTARIOS Y NOTAS QUE VI EN ESTA PAGINA SON ELOCUENTES AL TEMA HASTA QUE LLEGUE YO
    NUEVAMENTE GRACIAS

    ResponderEliminar
  168. Mario:
    Hice lo que me dijiste y funciona, pero yo quiero que al anotar:

    589 aparesca
    "QUINIENTOS OCHENTA Y NUEVE PESOS"
    (sin comillas)

    ¿Que es lo que hay que cambiar para eso?

    Nuevamente gracias de ante mano

    ResponderEliminar
  169. MARIO:
    Hice lo que me dijiste y funciona, pero a mi me gustaria que al escribir por ejemplo

    589 apareciera
    QUINIENTOS OCHENTA Y NUEVE PESOS.

    ¿Que tendria que cambiar para esto?

    Nuevamente muchas gracia de antemano

    ResponderEliminar
  170. Quiero escribir una cantidad que diga
    Ej.
    0.75 Setenta y Cinco Centavos

    como hago

    ResponderEliminar
  171. ME ENCANTO TU PAGINA, PERO TENGO UN PROBLEMA ME DICEN QUE DEBE DECIR : LA CANTIDAD EN LETRAS SEGUIDA DE PESOS Y DESPUES LA FRACCIOAN POR EJEMPLO NOVENTA PESOS 00/100 M.N. Y NO NOVENTA 00/100 PÑESOS M.N. QUE PEUDOHACER, AYUDA, POR FAVOR

    ResponderEliminar
  172. Gracias por el truco!!
    muy buen aporte :)
    esta muy interesante y me sirve de mucho :)
    thank you!!

    ResponderEliminar
  173. BUENO CREO Q TENGO UN PROBLEMA :( COMO LE HAGO PARA QUE ESTE MACRO ESTE ACTIVO EN TODAS LAS HOJAS DE CALCULO QUE YO ESTE USANDO .. HE LEIDO SOBRE UN TAL LIBRO PERSONAL.XLS ... PERO ME CONFUNDO
    HELP ME PLS

    ResponderEliminar
  174. Está bien este truco, pero alguien me ayuda con el siguiente: que solo acepte letras dentro de una celda o que solo acepte numeros en la celda

    ResponderEliminar
  175. BUENO CREO Q TENGO UN PROBLEMA :( COMO LE HAGO PARA QUE ESTE MACRO ESTE ACTIVO EN TODAS LAS HOJAS DE CALCULO QUE YO ESTE USANDO .. HE LEIDO SOBRE UN TAL LIBRO PERSONAL.XLS … PERO ME CONFUNDO
    HELP ME PLS tengo el mismo problema o duda como z1Rah le agradeseria su ayuda

    ResponderEliminar
  176. Gracias por la formula de convertir una cifra en número a letra, en mi trabajo realizo muchas facturas en excel y tenia mucho tiempo buscando una solución, tuve algunos problemas, pero en aprox. 1.5 horas empezo a funcionar de maravilla.

    muchas gracias

    ResponderEliminar
  177. Gracias a ti por comentar Antoinio, de hecho luego pondre un nuevo código que encontre al andar vagando por la web, un tanto mejor que este, debido a peticiones de muchos amigos que han dejado sus comentarios al respecto.

    Saludos.

    ResponderEliminar
  178. hola, encontre esta pagina que esta muy buena, mi duda es cuando escribo por ejemplo 25 me coloca en letras veinte y cinco como hago para que me coloque veinticinco, gracias por la ayuda que puedan brindarme

    ResponderEliminar
  179. Muchas gracias excelente codigo de todos los sitios viistado fue el unico que funciono .

    ResponderEliminar
  180. Pues me alegro que te sea de utilidad, luego pondré algo más, sobre otra forma de hacerlo debido a muchas peticiones de los visitantes.

    Saludos.

    ResponderEliminar
  181. Hola quisiera que me ayudaran a ponerlo pero en ingles y que quedara de la siguiente forma:
    $3,897.73
    THREE THOUSAND EIGHT HUNDRED NINETY SEVEN DOLLARS 73/100 US Cy

    Espero que me ayuden por que la verdad no pude.

    ResponderEliminar
  182. Hola Mario,

    Excelente solo modifique las lineas 16 y 18 para ponerlo como se usa en Mex

    Result = Result + " 0" + Mid(Str(Round((Number - Fix(Number)) * 100)), 2, 1) + "/100 M.N."

    Result = Result + " PESOS" + Str(Round((Number - Fix(Number)) * 100)) + "/100 M.N."

    Pero al principio no entendia bien como usarla pero me chute todo el blog completito para llegar a entenderlo.

    Cuando son cantidades menores a 1 marca error, se puede revisar esta parte?

    Muchas gracias por tu apoyo!!!

    ResponderEliminar
  183. ecelente para hacerlo en dólares pero en español lo hice de la siguiente manera:
    '———— INICIO DE LA FUNCION DÓLARES———————————–

    Function DÓLARES(Number As Single) 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 + " DÓLARES" + " 0" + Mid(Str(Round((Number - Fix(Number)) * 100)), 2, 1) + "/100 U.S.)"
    Else
    Result = "( " + Result + " DÓLARES " + Str(Round((Number - Fix(Number)) * 100)) + "/100 U.S.)"
    End If
    Else
    Result = "Error, verifique la cantidad."

    End If
    DÓLARES = 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 21 To 29
    Result = "VEINTI" + RecurseNumber(N Mod 10)
    Case 20, 30 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 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 DÓLARES———————————–
    'Para usarlo es = que una funcion de excel, ejemplo:

    '=DÓLARES(suma(a1:a15))
    '=DÓLARES(total)

    y aparece asi:
    SI PONGO --------> 2
    ME DA CIOMO RESULTADO--->(DOSDOLARES00/100 U.S)

    GRACIAS POR TODO

    ResponderEliminar
  184. Hola, muchas gracias por el codigo, me ayudo mucho (tambien el de la regla), es grato conocer por este medio a gente como tu.

    Saludos.

    ResponderEliminar
  185. ADRIAN IZQUIERDO27 de mayo de 2008, 7:18

    hola Mario:

    mil gracias por el truco funciona de maravilla, solo quisiera saber porque me aparece como sigue:

    escribi la cantidad $100.02 en la celda A1

    en la celda B1 escribi la formula : =PESOS(A1)

    el resultado fue:

    CIEN 02/100 DOLARES

    COMO LE HAGO PARA QUE EN LUGAR DE DOLARES DIGA PESOS

    gracias

    ResponderEliminar
  186. De verdad eres lindo, al compartir tus muchos conocimientos con toda la comunidad de la web. Dios te bendiga por tu generosidad.
    Lo probé y funciona de maravilla, cambié lo que era necesario para sustituir la palabra dolares por pesos m.n. , me daba error de compliación, entonces cambié por comillas en lugar del signo que tenía (que parecían comillas) . De verdad muchas gracias por tu ayuda, y por cierto que listo eres Mario!!!!

    ResponderEliminar
  187. Sólo cambia DOLARES por PESOS, eso es todo. :D

    ResponderEliminar
  188. Buena tarde

    Agradezco tu cooperacion para la solucion de esta programacion.

    Quisiera saber si tienes algo para excel donde me ayude a saber en la hoja de excel la ubicacion de trabajo (algo asi como si estoy en la celda c6 me señale con una linea o sombra hacia arriba e izquierda y ubicar las orillas, precisamente la coordenada)

    ResponderEliminar
  189. Creeme LUIS que mucho tiempo he pensando en esa posibilidad y creo que no existe al menos no se como hacerle para resaltar toda la fila y la columna en donde se encuentre ubicado la seleccion. Pero si algo surge por ahi creeme que no dudaré ni un segundo en publicarlo porque a estos de la Microsoft nunca se les ocurre nada estético como esta caracteristica.

    ResponderEliminar
  190. Hola. Qué tal? No sabe cuanta utilidad genera tener esta funcion a mano. Ahorra muchisimo tiempo a la hora de hacer recibos.

    Ahora, me surgio un pequeño inconveniente (que quizas no lo sea tanto) y es cuando se ingresa el numero 22 devuelve "veinte y dos". No habria una forma de corregir la macro solamente para el caso del numero 22? De modo que devuelva la palabra "veintidós" Muchas gracias.

    ResponderEliminar
  191. HOLA
    QUE BUENO QUE EXISTEN PAGINAS ASI ME ENCANTA
    Y ME SIRVIO MUCHO TODOS LOS CONSEGOS

    Y LES DON LAS GRACIAS MUCHAS GRACIAS

    ResponderEliminar
  192. Excelente aportación, me es de mucha utilidad. tengo un detalle:

    Cuando el resultado es:

    UN MILLON PESOS 00/100
    ¿Cómo agrego la palabra "de" entre "millon" y "pesos".

    Mil gracias por su ayuda.

    ResponderEliminar
  193. HOLA, ERES UN GENIO, GRACIAS POR LA AYUDA, SI SE DE PROGRAMACION, UNA VEZ TOME EL CURSO DE VISUAL BASIC, PERO CON TU AYUDA HE APRENDIDO MAS, HAGO LA MISMA PREGUNTA, SOBRE PONER LA PALABRA DE CUANDO QUEREMOS PONER "UN MILLON DE PESOS", TAMBIEN PROBE QUE CUNDO PASA DE 1 MILLON LAS DECIMALES NO LAS PONE BIEN, SEGUIRE CHECANDO LA LOGICA, PERO SI LO SABES Y ME AYUDAS TE LO AGRADEZCO MUCHO GENIO.

    ResponderEliminar
  194. esta super la macro

    gracia me servido mucho
    yo he tenido un problema al escribir la cifra 1,000,000
    me aparece un millones de pesos 00/100 m.n.
    y quiero que me aparesca

    un millon de pesos 00/100 m.n.

    ResponderEliminar
  195. HIZE EXACTAMENTE LO QUE EXPLICAS YA ME CONVIERTE PERO EN DOLARES....
    QUIERO QUE ME SALGA EN PESOS, LE MODIFIQUE NADA MAS DONDE DICE DOLARES EN LA HOJA DE PROGRAMACION PERO NADA ME MARCA ERROR, MUCHO TE AGRADECERIA TU AYUDA..
    EXCELENTE BLOG

    ResponderEliminar
  196. No se porque te debe estar dando errores SOL, pero acabo de modificar el código para que sea un tanto más legible, así que busca las líneas número 16 y 18 y cambia solamente lo que dice DOLARES a PESOS nada más.

    Si tu problema persiste después de hacer esto, comentalo nuevamente y dime que versión de Office tienes y que error se te presenta, Saludos.

    ResponderEliminar