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

jueves, julio 19, 2007

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

PAULRICHTER 02 agosto, 2007 22:22  

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

MIGUELANGEL,  06 agosto, 2007 21:42  

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

Jorge L. Dunkelman 07 agosto, 2007 06:19  

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.

RICARDO 07 septiembre, 2007 17:23  

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

pacomegia 14 noviembre, 2007 22:01  

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.

Jorge L. Dunkelman 15 noviembre, 2007 17:58  

Hola pacomegia

gracias por el aporte.

Anónimo,  27 noviembre, 2007 18:49  

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

Juan Arturo Drew P. 24 enero, 2008 22:20  

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,

Jorge L. Dunkelman 24 enero, 2008 23:05  

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.

Anónimo,  19 julio, 2008 02:40  

GRACIAS EXCELENTE TRABAJO , GRACIAS

Jose 09 agosto, 2008 08:55  

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.

Jorge L. Dunkelman 09 agosto, 2008 10:40  

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.

José Moreno 28 marzo, 2009 18: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,

Jorge L. Dunkelman 29 marzo, 2009 20:50  

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

Anónimo,  23 noviembre, 2009 23:05  

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

Jorge L. Dunkelman 24 noviembre, 2009 06:22  

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

Anónimo,  12 enero, 2010 18:26  

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

Slds.

Jorge L. Dunkelman 12 enero, 2010 20:37  

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"

Guccie,  09 febrero, 2010 23:42  

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

Jorge L. Dunkelman 10 febrero, 2010 06:46  

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.

Anónimo,  25 febrero, 2010 21:57  

el link esta roto podrian volverlo a subir por favor

Jorge L. Dunkelman 26 febrero, 2010 09:25  

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.

Erick Astorga 03 junio, 2010 06:39  

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

Jorge L. Dunkelman 04 junio, 2010 08:25  

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

Anónimo,  27 octubre, 2010 16:23  

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

Jorge L. Dunkelman 27 octubre, 2010 21:18  

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

miles_de_ideas 13 julio, 2011 00:50  

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

Rafael Medina 15 enero, 2014 20:34  

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

Jorge Dunkelman 16 enero, 2014 18:10  

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.

0z0,  10 diciembre, 2015 00:28  

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.

Jorge Dunkelman 10 diciembre, 2015 18:53  

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.

Publicar un comentario

Google+ Followers

Seguidores

Google+ Badge

Términos Legales

  © Blogger template On The Road by Ourblogtemplates.com 2009

Back to TOP