Descargar archivo de ejemplo.
En este truco veremos cómo podemos hacer en Excel para que, dado un número, nos muestre su valor pero en letras.
Antes de hacer cualquier cosa en Excel, y este consejo aplica para cualquier problema que necesitemos resolver, debemos:
- Entender conceptualmente como es la solución.
- Si el problema es complejo, subdividirlo en partes y resolverlas individualmente.
Vamos a desarrollar la solución para escribir números entre 0 y 999.
Lo primero que identificamos es que hay dos tipos de números:
- Nombre Único: Aquellos números que tienen un nombre específico. Ejemplo, los dígitos (dos, tres, etc.), las decenas (veinte, treinta), centenas (doscientos, etc) y combinaciones específicas de decenas y unidades (doce, quince, etc.)
- Nombre compuesto: Aquellos cuyo nombre se arma a partir de la unión de los nombres de las centenas, decenas y unidades.
Las fórmulas que utilizaremos se detallan a continuación. Aquellas que ya están explicadas en otros post tienen el vínculo por si prefieres repasar estas funciones antes de continuar:
- BUSCARV
- Funciones lógicas Y y O
- SI
- CONCATENAR
- ESERROR
- ESPACIOS
- ENTERO
- RESIDUO
Además de estos dos casos, tenemos dos excepciones: el “cero” y el “cien“. Estos nombres solo se usan para los números específicos a los que les corresponden. Ningún otro número utiliza la palabra “cero”. Entre los primeros 999 números, solo el 100 usa el nombre “cien”, porque el resto utiliza “ciento …”.
Debemos tener en alguna parte de nuestro archivo distintas tablas que asocien el número, con las letras que le correspondan. Para simplificarlo, lo dividí en tres tablas:
La tabla de decenas debe tener los nombres de los números desde el 10 hasta el 29 (veintinueve), ya que son Únicos. Y después de 10 en 10 (treinta, cuarenta, cincuenta, etc). Con las centenas es lo mismo “ciento”, “doscientos”, etc.
TRUCO! Las tablas de decenas y centenas tienen además el 0, pero está vacío el campo del nombre (la celda tiene un ‘ para indicar que es texto vacío), porque cuando no hay centenas (ej. 65) o no hay decenas (ej. 401), no va ningún nombre.
Vamos a ayudarnos con una tabla auxiliar para ir componiendo el número.
1. Centenas
Esta es la parte más fácil de esta tarea. Debemos identificar cuál es la centena del número que queremos escribir en letras y luego buscaremos en la tabla “Centenas” de la figura anterior cómo se escribe en letras utilizando la función BUSCARV.
Nuestra tabla tiene los números de 100 en 100 desde el 100 hasta el 900.
Ejemplo, para el número 456, la centena correspondiente es 400 y el nombre es “cuatrocientos”.
Para obtener el 400, utilizaremos la función ENTERO. Como su nombre lo dice, esta función devuelve la parte entera de un número.
Si dividimos 456 entre 100 da 4,56. ENTERO(456/100) da 4 porque elimina los decimales. Al volverla a multiplicar por 4, nos da 400 que es el número que buscamos.
Este cálculo lo podemos ver en la celda C8 de nuestra tabla auxiliar (en el archivo de ejemplo).
El nombre de las centenas (en la celda D8) lo encontramos a través de la siguiente fórmula:
=BUSCARV(C8;G15:H24;2;FALSO). Donde G15:H24 es el rango que contiene los nombres de las Centenas.
2. Decenas
Este caso es un poco más complejo que el de las centenas.
Esto se debe a que tenemos combinaciones de decenas y unidades con nombre propio. Por ejemplo 14. No es “diez” y “cuatro” sino “catorce”.
Vamos a necesitar dos formas distintas de ver el número (ya vamos a ver por qué).
La primera, es el número de decenas y unidades SIN las centenas, que construimos fácilmente restando al número buscado el que construímos en la celda C8 y ubicamos en la celda B9 (=B8-C8).
La segunda es eliminar las unidades y dejar solo el nombre de las decenas. Seguimos el mismo procedimiento que utilizamos para las centenas con la función ENTERO. En la celda C9 nos queda:=ENTERO(B9/10)*10
El esquema a continuación explica el proceso que debemos seguir (hacer click para agrandar)
El camino verde es el más fácil de seguir, utilizando nuevamente la función BUSCARV en la tabla de decenas.
BUSCARV(B9;D15:E42;2;FALSO). Donde, en el caso de encontrar el nombre, en la tabla, nos devolverá el nombre (ej. 25 → “veinticinco”).
Sin embargo, si no lo encuentra, la fórmula devuelve ERROR !!!! (#N/A).
No hay problema. Excel tiene una función que nos permite trabajar con errores. Son varias, pero la más abarcativa es:
ESERROR: Esta función comprueba si un valor es error y devuelve Verdadero o Falso.
Por lo tanto la función lógica es:
¿Es error (no encuentra) el número de decenas+unidades en la tabla?
Entonces (ESERROR=VERDADERO), busca el valor de las decenas (el que calculamos en la celda C9).
De lo contrario (ESERROR=FALSO), busca el valor de las decenas + unidades (celda B9).
La fórmula queda:
=SI(ESERROR(BUSCARV(B9;D15:E42;2;FALSO));BUSCARV(C9;D15:E42;2;FALSO);BUSCARV(B9;D15:E42;2;FALSO))
Se ve compleja pero la interpretación es: Si Es Error la búsqueda del valor de B9, entonces busca el de la celda C9, de lo contrario (si no es error), devuelve el valor de la búsqueda de B9.
3. Uso de “y”
Después de esta fórmula tan compleja, volvamos a algo fácil.
Para los números mayores de 30, pero que no son decenas exactas, necesitamos unir el nombre de las decenas y las unidades utilizando “y”. Ejemplo “cuarenta y cinco”.
Si se cumplen las dos condiciones: Mayor que 30 Y es no es múltiplo exacto de 10, entonces lleva “y”.
Como esta fórmula es fácil, voy a aprovechar a introducir la función RESIDUO:
RESIDUO(Número, número divisor)
La cual proporciona el residuo después de dividir el número entre el divisor.
Ejemplos:
RESIDUO(45;10) da 5.
RESIDUO(40;10) da 0 (es decir, es múltiplo exacto).
Por lo tanto, en la celda D9 definiremos si usaremos o no “y” utilizando la función:
=SI(Y(B9>30;RESIDUO(B9;10)<>0);”y”;”"), donde las dos comillas juntas (“”) indican que queda en blanco.
4. Unidades
Falta menos.
Nuevamente tenemos dos circunstancias que condicionas la utilización del nombre de las unidades:
- La unidad no es cero (porque, salvo para el número “cero” – que trataremos aparte – forma parte de las decenas (ej diez o sesenta).
- El número que corresponde a las decenas + unidades está entre 10 y 29. En estos casos, las unidades forman parte de esas decenas+unidades con nombre propio (ej. dieciséis o veintiocho).
Si se cumplen estas condiciones, no corresponde nombre de unidades. En caso contrario, debemos buscar el nombre en la tabla que le corresponde.
=SI(O(C11=0;Y(B9>=10;B9<=29));”";BUSCARV(C11;A15:B24;2;FALSO))
5. Excepciones
Como mencioné al principio, tenemos dos casos donde el nombre sólo aplica para ese número específico: el cero y el 100.
Hay indudablemente formas de manejarlos dentro de lo elaborado anteriormente, pero para este truco preferí dejarlo separado para no hacer más complejas las instancias anteriores.
Simplemente armé una tablita de excepciones entre las celdas J16:K17.
5. Redacción del número
Llegamos finalmente a la parte donde debemos unir todas las piezas para redactar en letras el número.
Para esto, debemos unir los distintos nombres de nuestra tabla auxiliar que se encuentran en la columna D, entre las filas 8 y 11
Para esto, utilizaremos la función CONCATENAR donde agregaremos un espacio (” “) entre cada palabra para evitar que nos quede algo como “cuatrocientoscincuentayseis”.
CONCATENAR(D8;” “;D9;” “;D10;” “;D11)
Ahora. En el caso que el número sea un solo dígito, la fórmula anterior va a agregar todos los espacios que incluímos. Ejemplo, quedaría “ uno”. O en el caso de no llevar decenas quedarían dos espacios entre la centena y la unidad “cuatrocientos uno”).
Afortunadamente podemos eliminar todos estos espacios usando la función …. ESPACIOS.
Esta función simplemente elimina todos los espacios anteriores a la primera palabra, todos los que están al final de la última letra, y deja solamente UN espacio entre palabras.
Introducimos la función CONCATENAR antes mencionada dentro de ESPACIOS para eliminar los espacios indeseados:
ESPACIOS(CONCATENAR(D8;” “;D9;” “;D10;” “;D11))
La composición final la obtenemos de verificar si el número es una de las excepciones (0 o 100).
BUSCARV(B3;J16:K17;2;FALSO)
Si lo es, asignamos el nombre que corresponde. De lo contrario, la función de redacción del nombre antes mencionada.
=SI(ESERROR(BUSCARV(B3;J16:K17;2;FALSO));ESPACIOS(CONCATENAR(D8;” “;D9;” “;D10;” “;D11));BUSCARV(B3;J16:K17;2;FALSO))
Buscá más trucos en: trucosdeexcel.com
Seguime por Twitter, usuario “trucosdeexcel”.
Mandá tus sugerencias o preguntas a: excelman@trucosdeexcel.com




Excelente,
Agradeceré si pueden ayudarme a formular para cifras en millones.
Saludos y éxito en todo.
que tal, con todo respeto, yo necesitaba encontrar la manera de expresarlo en pesos, junto con centavos, asique le agregue unas formulas y datos para llegar hasta los 999,999, junto con centavos, tengo el archivo mas no se como subirlo, pero si me dices como te lo puedo pasar, espero no molestarte por modificar el archivo
Qué bueno!!! Si quieres, puedes enviarme el archivo a excelman@trucosdeexcel.com. Si quieres además escribir el tutorial para explicar lo que hiciste, también pásamelo y lo publico tal cual como lo enviaste (obviamente mencionando tu envío). Si no, mándame el archivo y yo escribo la nota.
Buen día,
Les pido de favor que me ayuden con esta duda, es posible escribir una cantidades mayores con letra. Ej. $ 5,567 o bien, $ 10,897
De antemano les agradezco el apoyo.
Hola, a ver si me podeis ayudar porque yo no soy muy buena en esto.
Necesito hacer una planilla de trabajo, y necesito escribir los turnos que corresponden a cada persona con letras ej:M(mañana), T(tarde),N(noche), pero quiero que esas letras tengan un valor numerico(que no aparezca en la celde)para poder hacer al final del todo un computo total de horas.
Espero haberme esplicado bien y que alguien me lo solucione, gracias.
muy bueno pero partucular me gustaria que explique como poner en una celda el 0 a la izquierda ejm.(09,002 )por favor y que alguien por favor me ayude o me explique abelito104@hotmail.com
como se suma