<img src="https://queue.simpleanalyticscdn.com/noscript.gif?collect-dnt=true" alt="" referrerpolicy="-when-downgrade"> EXCEL: Convertir números a letras
NeoTeo
Ariel Palazzesi

EXCEL: Convertir números a letras

EXCEL: Convertir números a letras

¿Listo para transformar números en letras? Descubre cómo una macro en Excel puede cambiar la forma en que presentas tus datos… ¡Atrévete a conocer todos sus secretos!

Hoy te proponemos escribir una “macro” para Microsoft Excel que te permitirá expresar números como su equivalente en letras. Se trata de una función muy buscada y que no viene “de serie” en la planilla de cálculo. En NeoTeo te mostraremos, paso a paso, como puedes escribirla tu mismo.

EXCEL: Convertir números a letras
Una macro para Excel.

Todos los que utilizamos la planilla de cálculo de Microsoft en algún momento nos hemos topado con la necesidad de convertir importes expresados como números (“138.55 €”) a su equivalente en letras (“ciento treinta y ocho euros con cincuenta y cinco centavos”).

Este tipo de conversión es casi indispensable cuando utilizamos Excel en labores relacionadas con la confección de facturas, presupuestos, liquidación de recibos de haberes, trabajos contables, emisión de comprobantes con importes o cualquier otra ligada al manejo de importes. Aunque no siempre sea obligatorio declarar los importes con ese formato, el hacerlo le da más “seriedad” a nuestros informes.

Excel, al igual que los demás integrantes de la suite Microsoft Office, permite la construcción de macroinstrucciones sumamente complejas, utilizando un lenguaje llamado Visual Basic para Aplicaciones (o VBA), que, como su nombre lo indica, es muy similar al Visual Basic

Aprovechando lo que hemos aprendido en nuestro tutorial sobre Visual BASIC 2005, en especial lo que se refiere a las instrucciones de control de flujo del programa, podemos escribir una macro que realice la conversión mencionada en Excel.

Escribiendo la macro Para escribir una macro, necesitamos en primer lugar abrir el editor de VBA que tiene incluido Excel. Para ello, como puede verse en la figura siguiente, vamos al menú principal de la aplicación y desde allí seleccionamos la opción “Herramientas”, luego “Macro” y del submenú que se abre hacemos clic en “Editor de Visual Basic”. (ALT-F11 realiza la misma acción).

EXCEL: Convertir números a letras
ALT-F11 realiza la misma acción.
EXCEL: Convertir números a letras
Editor de VBA.

Como puede verse en la imagen de la derecha, el editor de VBA, que se parece mucho a lo visto en nuestro tutorial de VB, propone cuatro ubicaciones para (“Hoja1”, “Hoja2”, “Hoja3” y “ThisWorkbook”) el código que vamos a escribir.

Le damos doble clic a la opción “ThisWorkbook”, y el editor tomará este aspecto:

EXCEL: Convertir números a letras
Listos para comenzar a trabajar.

En la sección en blanco que aparece deberemos pegar el código que te mostramos al final de este artículo, o descargar esta planilla de ejemplo.

No vamos a explicar aquí el funcionamiento detallado de la macro, por que lo abordaremos en el tutorial de VB. Basta con saber que se divide en dos funciones. Una de ellas (“num2letras”) convierte un número comprendido entre 0 y 999 en su equivalente en letras (“cero” a “novecientos noventa y nueve”). La otra, a la que hemos llamado “num2let” se encarga de llamar las veces que sea necesaria a la primera de ellas para “armar” el texto correspondiente al importe.

Para utilizarla, basta con escribir en una celda cualquiera de nuestra hoja de cálculo (aquella en que queremos aparezca el importe en letras) algo parecido a lo siguiente:

EXCEL: Convertir números a letras
Escribimos en la celda en que queremos aparezca el importe en letras.

Al hacerlo, en el lugar que hemos escrito la fórmula aparecerá el importe tal como puede verse en rojo.

Por supuesto, es mucho más interesante hacer algo como lo que se ve en esta captura de pantalla:

EXCEL: Convertir números a letras
Podemos utilizar num2let() dentro de otra función.

Ya que de esa manera podemos convertir a letras el valor de otra celda, que puede ser el resultado de algún cálculo más o menos complejo. La función “Concatenar” simplemente le agrega el texto “Son” al principio de la cadena.

Código de la macro Este es el código de la macro en cuestión. Simplemente, debemos seleccionarlo con el ratón, copiarlo al portapapeles (con CTRL-C) y luego pegarlo en el editor de VBA (con CTRL-V):

'-------------------------------------
 Public i
Function num2let(importe)  If importe = 1 Then final = " peso" Else final = " euros"  If importe > 999 Then num2let = num2letras(Int(importe / 1000)) + " mil "   num2let = num2let + num2letras(importe - Int(importe / 1000) * 1000) + final   If Int(importe) = 0 Then num2let = "cero euros"   If importe <> Int(importe) Then       num2let = num2let + " con " + num2letras((importe - Int(importe)) * 100) + " centavos."   End If
 End Function
Function num2letras(importe)  'Pasa de número a letras, importes entre 0 y 999   'Centena ----------------------------------------  centena2 = Int(importe / 100)  Select Case centena2      Case 0: num2letras = ""      Case 1: num2letras = "cien"      Case 2: num2letras = "doscientos"      Case 3: num2letras = "trescientos"      Case 4: num2letras = "cuatrocientos"      Case 5: num2letras = "quinientos"      Case 6: num2letras = "seiscientos"      Case 7: num2letras = "setecientos"      Case 8: num2letras = "ochocientos"      Case 9: num2letras = "novecientos"  End Select
   'Decena ----------------------------------------------  decena2 = Int((importe - centena2 * 100) / 10)  If centena2 = 1 Then num2letras = num2letras + "to"  Select Case decena2      Case 1: num2letras = num2letras + " diez"      Case 2: num2letras = num2letras + " veinte"      Case 3: num2letras = num2letras + " treinta"      Case 4: num2letras = num2letras + " cuarenta"      Case 5: num2letras = num2letras + " cincuenta"      Case 6: num2letras = num2letras + " sesenta"      Case 7: num2letras = num2letras + " setenta"      Case 8: num2letras = num2letras + " ochenta"      Case 9: num2letras = num2letras + " noventa"  End Select    'Unidad ----------------------------------------------  unidad2 = Int((importe - centena2 * 100 - decena2 * 10))  If decena2 = 0 Then      Select Case unidad2          Case 1: num2letras = num2letras + " un"          Case 2: num2letras = num2letras + " dos"          Case 3: num2letras = num2letras + " tres"          Case 4: num2letras = num2letras + " cuatro"          Case 5: num2letras = num2letras + " cinco"          Case 6: num2letras = num2letras + " seis"          Case 7: num2letras = num2letras + " siete"          Case 8: num2letras = num2letras + " ocho"          Case 9: num2letras = num2letras + " nueve"  End Select  End If   If decena2 = 1 Then      num2letras = Mid(num2letras, 1, Len(num2letras) - 4)  Select Case unidad2      Case 0: num2letras = num2letras + " diez"      Case 1: num2letras = num2letras + " once"      Case 2: num2letras = num2letras + " doce"      Case 3: num2letras = num2letras + " trece"      Case 4: num2letras = num2letras + " catorce"      Case 5: num2letras = num2letras + " quince"      Case 6: num2letras = num2letras + " diceciseis"      Case 7: num2letras = num2letras + " diecisiete"      Case 8: num2letras = num2letras + " dieciocho"      Case 9: num2letras = num2letras + " diecinueve"  End Select  End If   If decena2 = 2 Then      If unidad2 <> 0 Then num2letras = Mid(num2letras, 1, Len(num2letras) - 6)  Select Case unidad2      Case 1: num2letras = num2letras + " veintiun"      Case 2: num2letras = num2letras + " veintidos"      Case 3: num2letras = num2letras + " veintitres"      Case 4: num2letras = num2letras + " veinticuatro"      Case 5: num2letras = num2letras + " veinticinco"      Case 6: num2letras = num2letras + " veintiseis"      Case 7: num2letras = num2letras + " veintisiete"      Case 8: num2letras = num2letras + " veintiocho"      Case 9: num2letras = num2letras + " veintinueve"  End Select  End If   If decena2 > 2 Then  Select Case unidad2      Case 1: num2letras = num2letras + " y un"      Case 2: num2letras = num2letras + " y dos"      Case 3: num2letras = num2letras + " y tres"      Case 4: num2letras = num2letras + " y cuatro"      Case 5: num2letras = num2letras + " y cinco"      Case 6: num2letras = num2letras + " y seis"      Case 7: num2letras = num2letras + " y siete"      Case 8: num2letras = num2letras + " y ocho"      Case 9: num2letras = num2letras + " y nueve"  End Select  End If   If importe = 100 Then num2letras = "cien"
 End Function

Descargar

Planilla de ejemplo

Descarga la

planilla de ejemplo.

Etiquetas

#Tutoriales
avatar

Ariel, me parece que la función que generaste está buena como ejemplo, pero si no vas a explicar el funcionamiento deberías hacerla para todos los valores representables posibles (que no son tantos como parece).

avatar
avatar

Recuerden habilitar los macros en Excel, sino no funciona.

avatar
avatar

Hola Ariel,
la macro funciona a la perfeccion unicamente hay un pequeño fallo que es que cuando escribes "1234" pone "un mil doscientas treinta y cuatro". ¿Como podria hacer para suprimir el "un", de la expresion? Gracias

avatar
avatar

Esta bastante bien pero necesito que me ponga la cantidad en pesos, como le hago??????

avatar
avatar

Hago todos los pasos que me aparecen en este tutorial y no logro nada cuando escribo la formula me aparece el mensaje NOMBRE con unos signos.Ayuda por fa

avatar
avatar

no puedo ver el resultado, no me funciona, he habiltado las macros y nada
gracias
rosita

avatar
avatar

Como estamos???
Una pregunta.
Necesitaria saber como puedo hacer para poder colocar varios filtros desplegables en una misma columna en excel

avatar
avatar

Hola amigos, saludos a todos, les escribo desde la hermosa República de Colombia, es un placer comentar con ustedes acerca de la "macro" (coloco las comillas porque en realidad es una función o fórmula para los cálculos de excel y que no viene incluida en él) de la que escriben ustedes para convertir una cantidad expresada en dígitos con su correspondiente valor en texto.

Debido a mi trabajo, donde de manera corriente hay que llenar planillas de excel, y el valor final hay que expresarlo en letras, decidí - al notar la falta de esta función en excel - escribirla yo mismo. A medida que escribía el código noté fallas en él, cuando lo probé, noté fallas como las que describen:

** 1236 = "Un mil doscientos treinta y seis...", al amigo Hugo Hernández le comento lo siguiente: "quiero decirte que la expresión "un mil" es correcta y más cuando se habla en términos monetarios, sólo que tenemos la mala costumbre de omitir el "un" en los textos y en el habla": en Colombia es de uso corriente decir "mil doscientos treinta y seis pesos" y no "un mil...", si no lo creen busquen y verán que nuestros billetes de $1.000 emitidos por el Banco de la República así lo escribe en ellos. Esta falla la corregí a punta de "fuerza bruta", en este momento el código lo estoy mejorando para hacerlo más compacto (aclaro que en mis momentos de ocio - que no son muchos por cierto -, debido al trabajo). Y aclaro también mi expresión "fuerza bruta" porque mis conocimientos de programación son mínimos y lo poco que sé lo he aprendido yo mismo, gracias a todo el contenido que se encuentra en Internet.

En fin, si alguien desea le puedo enviar el código que escribí y que funciona con cantidades que van de 1 hasta 999.999'999.999.99 (En Colombia se transcribe: "Novecientos Noventa y Nueve Mil Millones Novecientos Noventa y Nueve Pesos con Noventa y Nueve Centavos MLCTE"), y de paso le puedo enviar un documento para que ingrese la citada función a las ya incluidas en excel.

Con aprecio,

David M. Uribe

[email protected]

avatar
avatar

Hola a todos de nuevo, recibí una corrección a mi comentario de ayer, efectivamente, la cantidad 999.999'999.999 se transcribe "novecientos noventa y nueve mil novecientos noventa y nueve millones novecientos noventa y nueve mil novecientos noventa y nueve pesos MLCTE".

Atte.

David M. Uribe

avatar
avatar

porfa si la ocupo es algo urgente

avatar
avatar

Hola quien me podría decir que puedo hacer:
Quiero convertir números a letras en excel 2008 de Mac los necesito para un formato de cheques y facturación que me recomiendan hacer.

Perafanu.

avatar
avatar

Buenas tardes Sres. me confirmar bien como son los pasos para que la cifra de un total la pueda escribir en letras porque le busque de pie a pa pero no le encuentro la vuelta habra alguien que me explique desde el comienzo para ver si falle en algun paso desde ya gracias

avatar
avatar

hola soy martin, oye un favorzaso mira soy contador, pero quiero covertir un archivo de excel a texto, pero no se como utilizar y aplicar el macro para poder realizar este proceso, pero me puedas ayudar muchas gracias

avatar
avatar

Hola queridos amigos!
Me parace una buena Herramienta, fenomenal en todo caso.
Pero como puedo hacer para que los resultados aparescan en Bolívares.

Gracias

Saludos

avatar
avatar

Hola a todos, les comento que yo no se nada de nada de programacion en VB o macros, por lo que en una hoja a base de funciones, desarrolle un "programa" que cambia perfectamente cualquier cantidad en numeros a letras.

El inconveniente es que dedico una hoja por cada cantidad que desee reexpresar mediante un cruce de informacion, "igual a la cantidad expresada en numero que viene de tu factura, y te devuelvo la cantidad en letra, expresada en tu factura".

Actualmente desarrollo el mismo "programa", pero en un codigo mucho mas compacto, expresado en unas cuantas columnas pero en el mismo renglon, lo que me permite en la misma hoja poner tantos renglones como cantidades en letra vaya necesitando, util si se desea desarrollar una pequeña contabilidad en excell, por eso de las polizas.

En mi caso, mediante tambien funciones desarrollo un formulario dinamico, lo que me permite tener una hoja como base de datos y una como reporte dinamico, cuyos valores estan condicionados a por ejemplo el numero de cliente, y dentro de los valores que se actualizan automaticamente, esta por supuesto la cantidad con letra.

ulisesa aguilera
[email protected]

avatar
avatar

Ok. creo que la funcion esta muy buena como ejemplo pero encontre un pequeño error prueben introducir 25.29 y me dicen como corregir eso...

Lo de cambiae Euro a otro formato de monetario es solo cambiar el texto Euro en el codigo y ya esta.

Si corrigen este error que encontre seria bueno que lo publiquen en el foro
Chao

avatar
avatar

es muy interesante

avatar
avatar

Hola Nelson recibe saludos desde Nicaragua, para que el resultado aparesca en Bolivares anda al codigo y cambia donde dice euro sustuyelo por Bolivares y listo... espero que responda a tu pregunta.

avatar
avatar

Hola, quisiera ayuda :
1.- Necesito Cambiar euros por Pesos
2.- Quiero saber si puedo cambiar a letras mayusculas

Gracias por su ayuda

avatar
avatar

me gustaria saber si es posible una vez creada esa formula en el visual, abrir de cualquier planilla de excel sin tenes q volver a establecerla
gracias

avatar
avatar

hola como hago para que la formula me exprese las cantidades en bolivares fuertes

avatar
avatar

Funciona mal. Por ejemplo pongan 1,21 y vean que figura

avatar
avatar

quiero aprender a usar macros y programar en excel

avatar
avatar

hola a todos, me gusto mucho la planilla muy buena, la modifique para que entregara los valores en pesos y para que pudieran ingresarse valores sobre el millon.

avatar
avatar

mira tengo una duda no se si se algun modo puedan ayudarme
necesito convertir cantidades de numero a letra por desir

$1,500.00 que lo arrastre automaticamente otra selda asi

( un mil quinientos pesos 00/100mn) como le ago

gracias espero su respuesta ansiosamente.

avatar
avatar

no puedo hacer para q me de en exel la cantidad escrita alguien podria desirme como le hago
paso por paso

avatar
avatar

He leído la macro. Me parece que la función "Int" produce un error al interpretar los decimales. Por ejemplo: Si introducimos 12,60 nos devuelve "Son doce euros con cincuenta y nueve centavos." Sucede lo mismo con otros decimales.
¿Cabe corregirlo? Un saludo y gracias.

avatar
avatar

Buenas amigos, me podrian por favor colaborar con algo: quiero que en un archivo de excel si digito un numero este sea reemplazado con un nombre. La idea es abreviar la escritura y darle un codigo al nombre. Por ej: si digito 1 entonces que aparezca el nombre "Pepito Perez". Como hago para crear una funcion asi.
Muchas gracias.
Cesar

avatar
avatar

he visto algunos foros pero necesito cambiar euros por pesos o simplemente que lo ignore
la palabra peso puede estar pre escrita en otra celda
gracias
[email protected]
saludos desde chile san pedro de atacama
ruben

avatar
avatar

un favor como hago para que no me salga euros si no pesos ... URGENTE POR FAVOR

avatar
avatar

no puedo probarlo porque no encuentro el codigo

avatar
avatar

no q tal eso ta n complicado

avatar
avatar

David, te saludo con afecto. Deseo preguntarte, si es posible que nos digas la razón por la que decidiste transmitirnos la función de conversión de números a letras en Exel por medio del foro que nos señalas (del cual ya fueron eliminados los adjuntos que dejaste) y no por esta página tuya, a la que da más gusto acceder que a aquella que solo se dedica a tomar fotos. ¿Podrías aclarar mi duda, por favor?

avatar
avatar

hola David, estuve viendo el foro que publicaste y me parece que te borraron los adjuntos, te escribi al correo para ver si te ueda facil colaborarme enviandolos, me urge para mi trabajo, mil gracias por tu colaboracion. me llamo Jeison Arlides guzman y vivo en medellin!

avatar
avatar

cuando pones un valor con 16 centavos ejemplo 1.16 el texto te dice un euro con quince centavos

avatar
avatar

LA FÓRMULA ESTA MUY BIEN, PERO COMO PUEDO SUSTITUIR LOS EUROS POR PESOS?

avatar
avatar

No veo codigo al final

avatar
avatar

Hola buenas tardes: ¿ por favor, me podrias obsequiar la instrucción ( macro o funcion) para convertir numeros a letras en PESOS.? te lo agradeceré mucho. Saludos.

avatar
avatar

Excelente esta macro, pero quisiera que los centavos sean antes de descripcion de la moneda
gracias por tu respuesta
saluds

avatar
avatar

hola soy estudiante, me gustaria saber cual es el codigo en bisual estudio.net para para poder leer un numero y expresarlo en letras, ejemplo 10000: dies mil

avatar
avatar

Estimado,
esta muy buena la manera que proporcionaste para la funcion final.. pero le encontre un pequeño (o gran) error.. si no necesitas decimales (por ejemplo: 65.521 = sesenta y cinco mil quinientos veintiuno) esta perfecto!!.. e incluso cuando tambien es con decimales, pero solo si estos son mayores a 0.01 (por ejemplo: 521,21 = quinientos veintiuno con 21/100) tambien esta perfecto!!..

pero el problema se presenta cuando quieres mencionar de todos modos los decimales pero que estos sean "0".. por ejemplo: 521,00 = quinientos veintiuno con 00/100; en vez de: quinientos veintiuno /100...... que es como lo presenta la macro..

porfa.. ayudame a solucionar este problemita..

avatar
avatar

buenas noches. alguien por favor puede ayudarme, he pegado la macro tal y como indican las instrucciones pero por mas que trato no sale el resultado. el resultado que indica es #¿NOMBRE?. les agradezco su ayuda

[email protected]

avatar
avatar

buenas noches. alguien por favor puede ayudarme, he pegado la macro tal y como indican las instrucciones pero por mas que trato no sale el resultado. el resultado que indica es #¿NOMBRE?. les agradezco su ayuda

[email protected]

avatar
avatar

Quisiera saber como adquirir la plantilla para convertir numeros, espero alguien me pueda decir como, gracias.

Saludos.

avatar
avatar

Gracias, me ha servido un montón, ya coloque de euro a Bolívares, ahora voy a para que solo salga en mayúscula :D

avatar
avatar

Gracias, me ha servido un montón, ya coloque de euro a Bolívares, ahora voy a para que solo salga en mayúscula :D

avatar
avatar

hola por favor alguien puede ayudarme, he pegado la macro tal y como indican las instrucciones pero por mas que trato no sale el resultado. el resultado que indica es #¿NOMBRE?. les agradezco su ayuda

avatar
avatar

buena tarde la verdad me gustaria que me ayudaran y me dieran el codigo que debo colocar, por que en la parte donde dice descargar planilla de instrucciones no me aparece nada
gracias

avatar
avatar

Hola!

Espero me puedas ayudar con lo siguiente: me ha servido tu tutorial para convertir de numero a texto, pero, requiero que las cantidades en centavos, se expresen en número y no en texto, es decir, algo asi como 20/100 y, que tenga la posibilidad de variar ya sea en pesos o dólares.
Gracias por tu ayuda y saludos desde Mexico

avatar
avatar

Hola quise bajar la planilla para probarla, pero el link me dice que no esta. De donde podria bajarla?

Muchas gracias

avatar
avatar

hola amigos
quisiera convertir un numero en texto...ej
5 = rrrrr
4 = rrrr
3 = rrr
2 = rr
1 = r
muchas gracias por su ayuda..
saludos

avatar
avatar

hola amigos

quisiera convertir un numero en texto con una formula o funcion en excel 2007 (no en visual basic)...ej

5 = rrrrr

4 = rrrr

3 = rrr

2 = rr

1 = r

muchas gracias por su ayuda..

saludos

avatar
avatar

Alguien me puede decir donde veo los codigos que debo pegar para que fumcione la macro

avatar
avatar

Olii xD
Como estan quisiera saber si ahi vendn pan ?
o algun tipo de perros voladores ;A

avatar
avatar

Ariel me interesa mucho la plantilla, pero la plantilla de ejemplo no se puede descargar, la podrias subir de nuevo, gracias

avatar
avatar

la naturaleza es un medio muy importatnte q debemos saber para nuestro medio anbiente .
x la cual debemos cuidarlo x nuestro bien y x la proteccion de muchas personas mas q vivimos en este planeta para q los arboles nos cuiden y nos den mucho aire y proteccion en toda la vida .

avatar
avatar

Hola Hugo.
Lamentablemente no puede descargar la planilla de ejemplo, por favor me la puedes facilitar a mi e_mail [email protected]

Saludos y gracias.

avatar
avatar

Hola soy peruana y tengo problemas, por favor si alguien me puede ayudar: deseo convertir un número en letras, ejem 2343.34 dos mil trescientos cuarentitres y 34/100 dólares americanos
gracias

avatar
avatar

no se ve el archivo

avatar
avatar

ola cm puedo descargar el programa para convertir de numeros a letras en excel ayudenme xfavor

avatar
avatar

me parece excelnete la macro, pero tiene un pequeño detalle con los decimales, a la persona quien tenga el archivo original de excel favor verificar con la macro publicada, ya que los decimales si no los convierte exactamente, por ejemplo 12.20 doce euros con diecinueve centavos.
siendo lo correcto doce euros con veinte centavos.
alguien que me ayude???

avatar
avatar

un saludo para mi mejor amix "BRENDA"

avatar
avatar

Hola amigos, soy profesor y tengo la dificultad de expresar las notas en palabras para certificado de calificaciones finales, en una planilla excel 2010. Ojalá alguien pueda brindarme su ayuda. Gracias.

avatar
avatar

gracias por toda la información estaba bien calidad son buena onda

avatar
avatar

HOLA! ALGUIEN ME PUEDE ORIENTAR COMO DESCARGAR EL MACRO PARA EXPRESAR IMPORTES EN TEXTO?

avatar
avatar

Hola buenos días, si alguien me pudiera ayudar ya que en mi caso la formula es para texto de números de documentos de identificación, por ejemplo: (1716 81916 0203) un mil setecientos dieciséis; ochenta y un mil novecientos dieciséis; cero doscientos tres. si alguien me pudiera apoyar le agradecería mucho.

avatar

Debes iniciar sesión para publicar un comentario.