Como convertir números en palabras en Excel en Español

miércoles, abril 18, 2007

Un compañero de trabajo me preguntó si había alguna función en Excel para convertir números a palabras(expresar los números en letras). Es decir, si el la celda A1 pongo 123,45 en la celda B1 donde pongo la función aparece "ciento veintitrés pesos con cuarenta y cinco centavos". Una rápida búsqueda en Google me llevó a está página de la base de datos de conocimientos de Microsoft sobre Cómo convertir un valor numérico en palabras en Excel en inglés que es una traducción automática del articulo How to convert a numeric value into English words in Excel.
Esta UDF (user defined function = función definida por el usuario) de Microsoft tiene varios problemas:
1 – sólo sirve para convertir números al inglés
2 – sólo usa el dólar como moneda
3 – sólo usa el punto como separador de decimales.

Para adaptar esta función a los usuarios de Excel en español, tuve que introducir varios cambios. Por ejemplo, en la mayoría de los países hispano parlantes se usa la coma como separador de decimales. Pero en Guatemala, Honduras, República Dominicana, México, Nicaragua, Puerto Rico y El Salvador, se usa el punto, como en los Estados Unidos.
También la moneda cambia de acuerdo al país.

Aquí pueden descargar una adaptación de la función para convertir números al español, que toma en cuenta todos estos problemas.



Para usarla hay que copiar el código de la función a un módulo del editor de Vba, por ejemplo en el Personal.xls. Luego podemos usar el asistente de funciones,




Esta versión de la función tiene tres argumentos, la celda que contiene el número (MyNumber), el separador (Sep) y la moneda (Mon)



El resultado:




Technorati Tags:

35 comments:

Anónimo,  01 mayo, 2007 16:28  

Estimado Jorge: Probé la rutina de "número en letras". En el caso de "mil" es lo mismo 1 mil que 454 mil, pero no así en millon. 1 millón es correcto pero 123 millón no... Estaría bueno modificar para el caso de más de un millon. Un saludo y gracias por la atención

Jorge L. Dunkelman 01 mayo, 2007 20:50  

Gracias por la observación. Será corregido.

Jorge L. Dunkelman 03 mayo, 2007 21:22  

Cumplido! La versión corregida se descargar de esta nota

Anónimo,  04 mayo, 2007 19:52  

Hola Jorge, cuando los decimales son números enteros, por ejemplo; 1,40 el resultado es UN PESO CON CUARENTA Y CENTAVOS,dejando la letra " y " , excepto para ",10" y ",20", que el resultado es correcto.
Enhorabuena por este excelente trabajo

Jorge L. Dunkelman 05 mayo, 2007 09:12  

Gracias por la observación. Tambien esto ha sido corregido.

HECTOR 20 mayo, 2007 18:46  

muchas gracias jorge por éste laburo.

Anónimo,  12 julio, 2007 09:32  

Hola Jorge,
estoy utilizando la funcion para convertir numeros a letras pero no consigo que redondee los decimales cuando utilizo otras operaciones.
ej 109,295.65+109,295.65*1.15= 125,689.998 = 125,690
cuando se convierte a letra queda asi: "ciento veinticinco mil seiscientos ochenta y ocho pesos 99/100 mn).
No consigo que quede: "ciento noventa y cinco mil seiscientos noventa"
agradeceria que me pudieras ayudar.
Gracias

Jorge L. Dunkelman 12 julio, 2007 18:01  

Hola,
ten en cuenta que lo que ves en la pantalla no es lo que Excel ve. Si haces la operación 109295.65*1.15 el resultado que ve Excel es 125689,9975. Lo que ves en la pantalla depende del formato de la celda, pero el resultado no cambia. Por eso la función te da como resultado 125689,99.
Para obtener el resultado deseado tendrías que usar primero alguna de las funciones de redondeo.

Anónimo,  23 julio, 2007 19:19  

HOLA A TODOS, DESEO QUE ME PUEDAN AYUDAR A VER EL CODIGO QUE MENCIONA ANONIMO AMI SI ME INTERESARIA COMO TE LO DESGLOSA DE ESTA MANERA 125,688.99 (ciento veinticinco mil seiscientos ochenta y ocho pesos 99/100 mn). HOJALA PUEDAN AYUDARME, SE LOS AGRADECERIA MUCHO

Anónimo,  23 julio, 2007 19:24  

hola a todos, disculpen la molestia, realice el ejemplo que publican en este foro, pero no me muestra los datos como me podrian ser utilies ya que pongo 2,880.55 y me desglosa dos millones ochocientos ochenta y ocho mil cincuenta y cinco pesos cero centavos, habra una formula para que me desglose dos mil ochocientos ochenta pesos 55/100 mn como lo menciona el mensaje de anonimo arriba escrito, espero me puedan ayudar y no causarles tantas molestias, por su atencion gracias

Jorge L. Dunkelman 23 julio, 2007 19:52  

Hola,

la macro mencionada está en esta nota.
Una versión más compacta y flexible puedes ver en esta nota más reciente.

Jorge L. Dunkelman 23 julio, 2007 20:04  

Hola Anónimo,
supongo que eres la misma persona del comentario anterior.
Como menciono en la nota, en algunos paises se usa la coma como separador de miles y en otros el punto. Si tu sistema esta montado con el punto como separador (como en la Argentina) y usas la coma recibirás ese resultado.
Para solucionar este problema he agregado la variable Sep.
Y me permito dos observaciones a todos:
- este no es un foro, sino un blog. Como herramienta de consulta es mucho más limitado que un foro.
- Sería bueno que nos presentemos con nombres, aún cuando no sean nuestros nombres auténticos. Es más agradanle responder a "Juanito" que a Anónimo.

Anónimo,  14 agosto, 2007 20:59  

NO PUDE INSTALAR LA FUNCION EN EXCEL REALMENTE NECESITO UNA PEQUEÑA EXPLICACION DE COMO SE DEBE HACER GRACIAS QUE PENA TAN MOLESTIA

Anónimo,  14 agosto, 2007 21:00  

QUE PENA NO PUDE INSTALAR LA FUNCION EN EXCEL NECESITO UNA PEQUEÑA EXPLICACION GRACIAS

Jorge L. Dunkelman 14 agosto, 2007 21:34  

Hola, no es molestia y está explicado en el cuerpo de la nota.
Tienes que copiar el código de la función en un módulo del editor de Vb. Si necesitas un explicación más detallada ponte en contacto conmigo por mail a jorgedun@gmail.com.

Omar,  19 noviembre, 2007 22:26  

Hola, gracias por este dato me salvo el pellojo pero aun hay un problemita, cuando pones el monto de 958.60 en literal te escribe como nueve cientos cincuenta y ocho 60/100, lo mismo pasa con 758.60
Gracias por tu tiempo

Saludos

Jorge L. Dunkelman 19 noviembre, 2007 23:55  

Hola Omar

tienes que usar la versión corregida o la versión para México.
En breve estaré publicando una versión corregida y ampliada que me ha envíado uno de mis lectores.

Alejandro Flores,  10 enero, 2008 18:34  

Muy agradecido por todo su aporte en excel.

Anónimo,  23 abril, 2008 20:08  

Estimado Jorge:

Mi nombre es Beatriz Quintana, soy mexicana y antes que nada te felicito por tus conocimientos y sobre todo por la forma en que los transmites a través de tus ejemplos, llevo consultando tu blog desde hace un año porque ha sido de mucha utilidad en mi trabajo, no había tenido necesidad de escribirte, porque prácticamente todas mis dudas se han resuelto con las preguntas que te hacen, pero en esta ocasión no pude ejecutar la macro para la conversión de números a letras que adaptó Javier Reséndiz, no soy experta en excel y tal vez la solución es muy obvia, pero desconozco mucho sobre todo de macros, por lo mismo solicito tu ayuda, resulta que cuando escribo la fórmula en la celda con el ejemplo que hiciste en tu blog me aparece un recuadro con la leyenda "Error de Sintaxis" y marca la palabra "Attribute".

De antemano agradezco tu atención y quedo en espera de tu respuesta.

Buen día.

Jorge L. Dunkelman 24 abril, 2008 11:48  

Hola Beatriz

tienes que borrar la primer línea del código

Attribute VB_Name = "Módulo1"

Este línea es innecesaria y por un descuido no la borré cuando subí el archivo.

Gracias por leer el blog.

Anónimo,  10 junio, 2008 02:06  

jorge:

probe la formula y funciona excelente. hora una consulta, como hago para que lo escriba en minusculas.

gracias.
Pablo

Jorge L. Dunkelman 10 junio, 2008 18:44  

El camino más fácil es combinaarla con la función MINUSC (=MINUSC(SpellNumber2(A1,".","pesos")).
También se podría modificar el código de la función.

MetalloM,  01 agosto, 2008 17:48  

muchas gracias! se agradece que compartas tus conocimientos y si te hacen observaciones mejores el codigo, una compañera tenia que hacer la rutina pero con tu ayuda pudo seguir en la siguente labor.

un saludo!

Anónimo,  18 marzo, 2009 16:31  

Hola,

Muchas Gracias!! me sirvio bastante, justo necesitaba algo asi para automatizar unas facturas.-


nuevamente Gracias!!!

Ricardo 19 abril, 2009 06:33  

Hola Jorge, mi nombre es Ricardo Boudon y resido en Santiago de Chile, en primer lugar quiero felicitarte por tu muy buena disposición a solucionar las inquietudes que podamos tener y hacernos más fácil el poder comprender Excel.
Como tu bien sabrás en mi país no se suele hablar de centavos, es por este motivo que me gustaría me expliques que debo hacer para que la cifra termine solamente en pesos y no indique los centavos, Ej. 12.000.000 expresa doce millones de pesos con cero centavos y necesito que solo diga doce millones de pesos.

Agradezco tu atención y quedo en espera de tu respuesta.

Jorge L. Dunkelman 21 abril, 2009 21:54  

Esta versión de la función te permite expresar los números sin centavos (el argumento es opcional)

Anónimo,  22 agosto, 2009 00:56  

excelente tu contribucion; con la version que baje del 21/04/2009 21:54 horas no me sale el DE PESOS; pero me sale en minúsculas y las necesito en mayusculas los nombres en letras de los numeros . ¿Tenes alguna alternativa así?Desde ya muchas gracias
carlos

Anónimo,  22 agosto, 2009 01:00  

GRACIAS; LE PUSE MAYUSC A LA FORMULA Y SALE EN MAYUSCULA; EXCELENTE LO QUE HICISTE; TE EMPIEZO A SEGUIR DESDE HOY.-
CARLOS

Anónimo,  03 noviembre, 2011 20:52  

Jorge:

Mi nombre es Denisa, tus comentarios estan super buenos, pero yo tengo un problema, no uso decimales y lo unico que consigo es que salga es que para 264197.- pesos, salga
Dos Mil Sesenta Siete Mil Uno Mil Noventa Seis Pesos. no tenia la base de VB asi que copie la que sale para ingles y la he modificado pero aun no consigo que resulte correctamente, me gustaria que me ayudaras gracias y estan super buenos tus estudios

Jorge L. Dunkelman 04 noviembre, 2011 13:21  

Denisa,

te sugiero descargar el código (acabo de renovar el enlace) y copiarlo en el libro Personal. Para obtener el resultado adecuado tienes que usar separadores de miles (punto o coma, lo que se use en tu país) o poner "" como argumento para el separador.

Anónimo,  26 enero, 2012 16:54  

Hola Jorge, mi nombre es Hector de Mty. México, la pregunta es la versión para Mexico del convertidor de números a palabras para que versión de excel es?

Jorge L. Dunkelman 26 enero, 2012 18:04  

Hector,
no lo he probado pero debe funcionar con todas las versiones de Excel a partir de Excel 97.

RAUL,  24 mayo, 2012 16:46  

hola, soy un nuevo seguidor,colombia, al aplicar la rutina de la formula, me sala el mensaje:

error de compilacion
se esperaba end function

agradezco la ayuda

Jorge L. Dunkelman 26 mayo, 2012 11:44  

Fijate si has copiado todo el código.

Anónimo,  02 enero, 2013 21:23  

Muchas gracias por el laburo, me vino al pelo.

Saludos, Juan Manuel

Publicar un comentario

Google+ Followers

Seguidores

Google+ Badge

Términos Legales

  © Blogger template On The Road by Ourblogtemplates.com 2009

Back to TOP