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.