La sorprendente fórmula para convertir números en letras

Cada día me gusta más trabajar con Excel. Aunque parezca que ya nada me podría sorprender, hoy lo ha hecho una consulta en el foro de la web. En ella alguien preguntaba cómo podría traducir el resultado de una fórmula a otro idioma.
En realidad la traducción es lo de menos. Lo que me dejó con la boca abierta fue la fórmula en sí:
Con esta fórmula puedes transformar números en letras (con formato de moneda).
Atención: de momento solo es válida para Excel 365, pues utiliza la función LET:
=LET(importe;A1;
QMillones;SI(importe>999999;ENTERO(importe/1000000));
QMiles;SI(importe>999;ENTERO(importe/1000)-QMillones*1000);
QCentenas;importe-ENTERO(importe/1000)*1000;
QEntera;ENTERO(importe);
QDecimal;REDONDEAR((importe-ENTERO(importe))*100;0);
centfin;SI(QDecimal=1;" céntimo";" céntimos");
eurfin;SI(QEntera=1;" euro";" euros");
matriz;ELEGIR({1;2;3;4};QMillones;QMiles;QCentenas;QDecimal);
calculo;LET(
centena2;ENTERO(matriz/100);
decena2;ENTERO((matriz-centena2*100)/10);
unidad2;ENTERO((matriz-centena2*100-decena2*10));
centenas;{"""cien""doscientos""trescientos""cuatrocientos""quinientos""seiscientos""setecientos""ochocientos""novecientos"};
decenas;{""" diez"" veinte"" treinta"" cuarenta"" cincuenta"" sesenta"" setenta"" ochenta"" noventa"};
unidades;{""" un"" dos"" tres"" cuatro"" cinco"" seis"" siete"" ocho"" nueve"};
dieces;{"diez""once""doce""trece""catorce""quince""dieciseis""diecisiete""dieciocho""diecinueve"};
veintes;{"veinte""veintiuno""veintidos""veintitres""veinticuatro""veinticinco""veintiseis""veintisiete""veintiocho""veintinueve"};
tatantos;{""" y un"" y dos"" y tres"" y cuatro"" y cinco"" y seis"" y siete"" y ocho"" y nueve"};
num_letra1;INDICE(centenas;1;centena2+1);
num_letra2;SI(centena2=1;num_letra1&"to";num_letra1);
num_letra3;num_letra2&INDICE(decenas;1;decena2+1);
num_letra4;SI(decena2=0;INDICE(unidades;1;unidad2+1);"");
num_letra5;SI(decena2=1;EXTRAE(num_letra3;1;LARGO(num_letra3)-4)&INDICE(dieces;1;unidad2+1);"");
num_letra6;SI(decena2=2;EXTRAE(num_letra3;1;LARGO(num_letra3)-6)&INDICE(veintes;1;unidad2+1);"");
num_letra7;SI(decena2>2;INDICE(tatantos;1;unidad2+1);"");
num_letra8;SI(decena2=1;num_letra5;SI(decena2=2;num_letra6;num_letra3&num_letra4&num_letra7));
SI(matriz=100;"cien";num_letra8));
txtMillones;SI(importe>999999;SI(QMillones=1;"un millón ";INDICE(calculo;1)&" millones ");"");
txtMil;SI(importe>999;SI(QMiles=1;"mil ";SI(QMiles=0;"";INDICE(calculo;2)&" mil "));"");
txtCent;SI(QEntera=0;"";SI(INDICE(calculo;3)="";"";INDICE(calculo;3))&eurfin);
txtDecimal;SI(INDICE(calculo;4)="";"";SI(QEntera=0;"";" con ")&INDICE(calculo;4)¢fin);
SI(importe=0;"cero euros";ESPACIOS(txtMillones&txtMil&txtCent&txtDecimal)))
Si en tu empresa rellenas pagarés, cheques o letras de cambio (¡qué antiguo es esto!), esta fórmula para convertir números en letras te vendrá muy bien.
¿Prefieres utilizar fórmulas más sencillas? Échale un vistazo a la biblioteca de funciones.
Si deseas conocer a fondo esta megafórmula de Excel, echa un vistazo a este tutorial de Ismael Romero donde te muestra su funcionamiento.
Desde 2006 ayudo a profesionales y empresas a dominar Excel y Power BI de forma práctica, divertida y sin tecnicismos. Dejé el mundo corporativo en 2019 para dedicarme al 100% a la formación. Mi objetivo es siempre el mismo: que dejes de ver Excel como un problema y empieces a verlo como la solución que puede ser.




