jueves, julio 19, 2007

Función números a letras en Excel en español – nueva versión

La función Excel Números a Letras en Español que publiqué en la última entrada sobre el tema, estaba orientada a usos financieros. Es decir, presuponía que siempre queríamos expresar números en forma literal acompañados por la correspondiente moneda.
Debido a esto todos los argumentos de la función eran obligatorios. Si no introducíamos algún valor para la variable "Sep" (separador de decimales) o para "Mon" (moneda), el resultado de la función era el error #VALOR!.

La versión que publico en esta entrada esta basada en la función que Bernie Deitrick presentó en uno de los foros Excel hace varios años atrás. Esta función es mucho más compacta y sus argumentos son opcionales, exceptuando el valor que se quiere convertir, por supuesto.

Para poder adaptar la función a nuestra querida lengua castellana he tenido que trabajar duro. Las cosas son más sencillas en ingles:

100 es one hundred en inglés pero sólo cien en castellana y no "uno cien"
500 es five hundred, respetando el patrón, pero en castellano diremos quinientos
1000 será one thousend, pero en castellano simplemente mil y no "uno mil"

Pero finalmente creo haber superado todas las dificultades, hasta que mis lectores empiecen a encontrar las fallas!

La función, que pueden descargar aquí, tiene cuatro argumentos:





N: el número que queremos convertir a letras (mandatario)

Ccy: el nombre de la moneda (opcional)

Cents: el nombre de las fracciones de la moneda (opcional)

Join: por defecto es "con", pero podemos sustituirla con "y" por ejemplo

Fraction: acepta dos valores FALSE (0) o TRUE (1). Cuando ponemos TRUE o 1 los centavos son expresados como fracción (67/100 centavos). Por defecto es FALSE




Technorati Tags:

31 comentarios:

  1. Cuando se van a colocar valores como 1010000 coloca un millon diez mil de pesos en vez de un millon diez mil pesos

    ResponderBorrar
  2. Buenas tardes lo saludo desde Lima - Peru, en primer lugar dejeme decirle que su web me parece de lo mejor que hay en la Red, muchas gracias y felicitaciones por su trabajo y siga adelante porfavor. Ahora quisiera consultarle no se si hice mal al copiar la funcion en mi maquina pero cuando coloco un multiplo de mil siempre me sale el mismo resultado "cien dolares /100 centavos" que hecho mal?? Muchas Gracias.

    Atte
    SMAYLODON

    ResponderBorrar
  3. Hola Miguelangel

    la función tiene un "bug", que será corregido próximamente.
    Puedes usar la función que aparece en la nota Números a letras - versión para México o alguna de las otras versiones siguiendo los enlaces en esa nota.

    ResponderBorrar
  4. Jorge, recibe una ovación de mi y mi crew, que no saben de excel, y me ven como yo te miro, Tu web es "the real thing" es... como diríamos en México, "la neta".
    Gracias y mil gracias por compartir lo que sabes, y hacer caras felices!
    Cordial saludo,
    Ricardo López

    ResponderBorrar
  5. Bueno, teniendo en cuenta que el Español tiene género, cree hace tiempo una función que permite elegir el género tanto de la parte entera como de la parte decimal.
    Se puede descargar en

    http://www.necesitomas.com/index.php?q=node/61

    así se puede conseguir
    ciento un pesos con un céntimo
    y también
    ciento una arrobas con una cuartilla.

    Un saludo y enhorabuena por este blog.

    ResponderBorrar
  6. Hola pacomegia

    gracias por el aporte.

    ResponderBorrar
  7. Gracias por darnos a todos la posibilidad de poder hacer mas eficiente nuestro trabajo¡¡¡
    Atentamente.
    Alejandra Aros

    ResponderBorrar
  8. Hola Jorge y felicidadees por el excelente aporte para los que disfrutamos de Excel.

    He hecho algunas modificaciones sobre la función sugerida por tí, y he logrado solucionar el problema en caso de números enteros, pueda converir a "00/100 centavos". Por otro lado he detectado que para potencias de 10 arriba de mil, la funcion devolvía "cero", cosa que ya funciona.

    La función modificada está en:
    http://www.esnips.com/doc/e20d28b7-7273-43b7-a0b4-88954b9b4671/spellnumsp4


    Finalmente para conseguir que esta dunción trabaje con todos los documentos como función global, hay que guradarla con extensión xla como complemento y guardarla en: C:\Users\..\AppData\Roaming\Microsoft\Complementos

    El complemento xla está acá:
    http://www.esnips.com/doc/90a5fc60-161a-4733-83a9-b1457dc0dbac/spellnum

    Saludos cordiales,

    ResponderBorrar
  9. Hola Juan Arturo,
    gracias por el aporte. Todavía no he descargado la función, pero no tengo dudas que dunciona a la perfección.
    Una pequeña observación: se puede guardar la función como complemento (*.xla), pero no hace falta guardar el complemento en una carpeta determinada. Al instlar el complemento, hay que señalar dónde se encuentra.
    Para la mayoría de los lectores de este blog, tal vez lo más sencillo es guardar la función en el Personal.xls.

    ResponderBorrar
  10. GRACIAS EXCELENTE TRABAJO , GRACIAS

    ResponderBorrar
  11. hola jorge muchisima gracias por tu aporte, actualmente me encuentro elaborando un formato de fartura y tus aportes han sido de muchisima ayuda. descargue tu funcion numeros a letras pero como soy nuevo en excel y macros no se como activarla me gustaria que me ayudes porq me interesa muchisimo que funcione en mi formato.

    ResponderBorrar
  12. Hola José

    tienes que copiar el código en un módulo del editor de Vba (que abres apretando Alt+F11). Para que la función esté disponible para cualquier cuaderno abierto te recomiendo copiarla en el Personal.xls.

    ResponderBorrar
  13. Hoal Jorge, deseo descargar la versión final de esta excelente función pero el link esta roto.
    Agradecería enormemente que pudiesen publicar nuevamente el link.

    Saludos,

    ResponderBorrar
  14. Hola José
    he probado el link y la descarga funciona sin problemas. Si no logras descargar la función puedo mandarela por mail.

    ResponderBorrar
  15. Por que al utilizar el codigo no me traduce los valores exactos....ejem: 150000

    ResponderBorrar
  16. ¿Podrías ser un poco más explicito? ¿Cuál es el valor en números y cuál la traducción en palabras?
    Te sugiero que me envíes el cuaderno con el problema para que pueda darme una idea.

    ResponderBorrar
  17. Como se hace para incluir la fórmula en excel?

    Slds.

    ResponderBorrar
  18. Hay que copiar el código en un módulo del editor de Vba. Para que la función esté disponible para todos los cuadernos activos hay que poner el código en una módulo del Personal.xls
    Si no estás familiarizado con el tema, podés hacer una búsqueda en el blog con "personal"

    ResponderBorrar
  19. Sr. Jorge, podrás colocar de nuevo el complemento del xla, porque el no me permite accesar al mismo

    ResponderBorrar
  20. Guccie,
    He intentado descargar el archivo y no veo que haya algún problema para acceder a él.
    El archivo no es un .xla, sino un .bas
    Este tipo de archivos lo puedes impotar directamente a un módulo de Vba.
    También se puede copiar y pegar directamente al módulo.
    También te recomiendo ver el enlace que sugiere Paco Megía en su comentario.

    ResponderBorrar
  21. el link esta roto podrian volverlo a subir por favor

    ResponderBorrar
  22. EL link no está roto, pero veo que Esnips impone la descarga de una barra para efectuar la descarga. Le sugiero a todos mis lectores no decargar la barra.
    Estaré pasando los archivos a mi sitio de descarga a lo largo de la semana.
    Te invito a probar descargar el archivo en unos días.

    ResponderBorrar
  23. cuando pongo 1,000,000.00 en lugar de un millon me pone Cero

    ResponderBorrar
  24. Hola Erick,
    acabo de revisar y corregir la función. La nueva versión se puede descargar aquí

    ResponderBorrar
  25. Jorge buenos dias desde vhsa, tabasco, excelente ayuda la de tu función, una pregunta si quiero que la conversión me aparezca en mayusculas simplemente escribo las letras en MAYUSCULAS o no es tan simple. Gracias

    ResponderBorrar
  26. Si, hay que reemplazaar las minúsculas por mayúsculas en los lugares correspondientes del código.

    ResponderBorrar
  27. Excelente ayuda amigo, en México nos ayudará a los Contadores para hacer un file de Excel para emitir facturas bajo el rubro de impresiones con codigo de barras bidireccional!!! muchas gracias...

    ResponderBorrar
  28. AMIGO JORGE SU BLOG ES LO MEJOR NO DE LO MEJOR ES EL MEJOR, soy un simple aficionado he hice lo de las mayúsculas cuando vi la función transcrita, soy abogado y en nuestro uso en Venezuela solo usamos la expresión de "con 77/100 céntimos" para cheques; en cambio para documentos debemos ser literal quiere decir "con setenta y siete céntimos" tiene alguna sugerencia de sustitución o revisión con el alma le agradeceria

    ResponderBorrar
  29. Rafael,

    gracias por los conceptos. Para obtener el resultado que buscas habría que adaptar el código de la función. Lamentablemente no dispongo del tiempo necesario; tal vez lo haga en el futuro.

    ResponderBorrar
  30. Estimado Jorge,
    Excelentes tus N versiones de convertir numeros a letras.
    Pero yo tengo una necesdidad un poco particular, mira quisiera que con base a una celda que diga soles o dolares, se convierta el texto automaticamente y diga soles o dolares, alguna idea?.
    Gracias por tu apoyo.

    ResponderBorrar
  31. No me queda clara tu consulta. Por favor, fijate lo que pongo en el enlace Ayuda (en la parte superior del blog) y ponte en contacto conmigo por mail privado.

    ResponderBorrar

Nota: sólo los miembros de este blog pueden publicar comentarios.