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: MS Excel
Cuando se van a colocar valores como 1010000 coloca un millon diez mil de pesos en vez de un millon diez mil pesos
ResponderBorrarBuenas 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.
ResponderBorrarAtte
SMAYLODON
Hola Miguelangel
ResponderBorrarla 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.
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".
ResponderBorrarGracias y mil gracias por compartir lo que sabes, y hacer caras felices!
Cordial saludo,
Ricardo López
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.
ResponderBorrarSe 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.
Hola pacomegia
ResponderBorrargracias por el aporte.
Gracias por darnos a todos la posibilidad de poder hacer mas eficiente nuestro trabajo¡¡¡
ResponderBorrarAtentamente.
Alejandra Aros
Hola Jorge y felicidadees por el excelente aporte para los que disfrutamos de Excel.
ResponderBorrarHe 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,
Hola Juan Arturo,
ResponderBorrargracias 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.
GRACIAS EXCELENTE TRABAJO , GRACIAS
ResponderBorrarhola 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.
ResponderBorrarHola José
ResponderBorrartienes 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.
Hoal Jorge, deseo descargar la versión final de esta excelente función pero el link esta roto.
ResponderBorrarAgradecería enormemente que pudiesen publicar nuevamente el link.
Saludos,
Hola José
ResponderBorrarhe probado el link y la descarga funciona sin problemas. Si no logras descargar la función puedo mandarela por mail.
Por que al utilizar el codigo no me traduce los valores exactos....ejem: 150000
ResponderBorrar¿Podrías ser un poco más explicito? ¿Cuál es el valor en números y cuál la traducción en palabras?
ResponderBorrarTe sugiero que me envíes el cuaderno con el problema para que pueda darme una idea.
Como se hace para incluir la fórmula en excel?
ResponderBorrarSlds.
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
ResponderBorrarSi no estás familiarizado con el tema, podés hacer una búsqueda en el blog con "personal"
Sr. Jorge, podrás colocar de nuevo el complemento del xla, porque el no me permite accesar al mismo
ResponderBorrarGuccie,
ResponderBorrarHe 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.
el link esta roto podrian volverlo a subir por favor
ResponderBorrarEL 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.
ResponderBorrarEstaré 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.
cuando pongo 1,000,000.00 en lugar de un millon me pone Cero
ResponderBorrarHola Erick,
ResponderBorraracabo de revisar y corregir la función. La nueva versión se puede descargar aquí
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
ResponderBorrarSi, hay que reemplazaar las minúsculas por mayúsculas en los lugares correspondientes del código.
ResponderBorrarExcelente 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...
ResponderBorrarAMIGO 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
ResponderBorrarRafael,
ResponderBorrargracias 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.
Estimado Jorge,
ResponderBorrarExcelentes 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.
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