top of page

Tres cifras

Ahora, vamos por un numero de tres cifras.


Debemos de tener en cuenta que el numero introducido puede tener 3, 4, 5, o, más cifras.


Para el tercer carácter, pues, debemos de trabajar siempre con el tercer número mayor.


Tenemos un numero de 7 cifras.






Vamos a solicitar que nos devuelva el tercer, segundo, y, primer número mayor del índice obtenido.











Vamos a usar la función K.ESIMO.MAYOR, como argumento matriz es la función SECUENCIA.


=K.ESIMO.MAYOR(SECUENCIA(LARGO(B1))


Como argumento K, usamos una constante de matriz para que nos devuelva el tercer, segundo, y, primer valor mayor.


Cerramos paréntesis.


=K.ESIMO.MAYOR(SECUENCIA(LARGO(B1));{3;2;1})


Tenemos las posiciones a recuperar del valor de la celda B1.











Usamos la función ABS, seguido de la función EXTRAE, como argumento texto, es la celda B1, como argumento posición inicial, es la función K.ESIMO.MAYOR, como argumento numero de caracteres, ponemos 1, cerramos paréntesis.


=ABS(EXTRAE(B1;K.ESIMO.MAYOR(SECUENCIA(LARGO(B1));{3;2;1});1))


Obtenemos los últimos tres caracteres del valor de la celda B1, ya da igual el número de caracteres que haya en la celda B1.










Usamos la función LET, creamos una variable, y, almacenamos la expresión anterior.


=LET(x;ABS(EXTRAE(B1;K.ESIMO.MAYOR(SECUENCIA(LARGO(B1));{3;2;1});1))


Como argumento calculo de LET, preguntamos con el condicional SI, como vamos a realizar tres preguntas, como argumento prueba lógica, ponemos el operador lógico Y, como argumento valor logico1, preguntamos con la función INDICE, donde extraemos el primer carácter de la variable, si es igual a 1.


=LET(x;ABS(EXTRAE(B1;K.ESIMO.MAYOR(SECUENCIA(LARGO(B1));{3;2;1});1));SI(Y(INDICE(x;1)=1


Como argumento valor logico2, preguntamos si el segundo carácter de la variable es igual a cero.


=LET(x;ABS(EXTRAE(B1;K.ESIMO.MAYOR(SECUENCIA(LARGO(B1));{3;2;1});1));SI(Y(INDICE(x;1)=1;INDICE(x;2)=0


Como argumento valor logico3, preguntamos si el tercer carácter es igual a cero.


Cerramos paréntesis del operador lógico Y.


=LET(x;ABS(EXTRAE(B1;K.ESIMO.MAYOR(SECUENCIA(LARGO(B1));{3;2;1});1));SI(Y(INDICE(x;1)=1;INDICE(x;2)=0;INDICE(x;3)=0)


Como argumento valor si verdadero, entre comillas dobles, ponemos Cien.


=LET(x;ABS(EXTRAE(B1;K.ESIMO.MAYOR(SECUENCIA(LARGO(B1));{3;2;1});1));SI(Y(INDICE(x;1)=1;INDICE(x;2)=0;INDICE(x;3)=0);"Cien"


Como argumento valor si falso, con la función BUSCARX, vamos a buscar el tercer carácter, que es el argumento valor buscado.


=LET(x;ABS(EXTRAE(B1;K.ESIMO.MAYOR(SECUENCIA(LARGO(B1));{3;2;1});1));SI(Y(INDICE(x;1)=1;INDICE(x;2)=0;INDICE(x;3)=0);"Cien";BUSCARX(INDICE(x;3)


Como argumento matriz de búsqueda, seleccionamos el rango H1:H9, como argumento matriz devuelta, seleccionamos el rango I1:I9.


=LET(x;ABS(EXTRAE(B1;K.ESIMO.MAYOR(SECUENCIA(LARGO(B1));{3;2;1});1));SI(Y(INDICE(x;1)=1;INDICE(x;2)=0;INDICE(x;3)=0);"Cien";BUSCARX(INDICE(x;3);H1:H9;L1:L9


Como argumento si no se encuentra, ponemos un texto en blanco, cerramos paréntesis.


=LET(x;ABS(EXTRAE(B1;K.ESIMO.MAYOR(SECUENCIA(LARGO(B1));{3;2;1});1));SI(Y(INDICE(x;1)=1;INDICE(x;2)=0;INDICE(x;3)=0);"Cien";BUSCARX(INDICE(x;3);H1:H9;L1:L9;"")))


Ponemos el siguiente número, 1234101, vemos que nos devuelve Ciento Uno.












Ponemos el numero 100, y, aparece la palabra Cien.












Si ponemos otro numero, vemos que el resultado es correcto, pero, si ponemos un numero entre 1 y 99, nos devuelve error, porque en el campo 3 carácter, no se contempla ni una ni dos cifras, para solventarlo podemos usar la función SI.ERROR, como argumento valor es la expresión que tenemos, y, como argumento valor si error, ponemos un texto en blanco.


=SI.ERROR(LET(x;ABS(EXTRAE(B1;K.ESIMO.MAYOR(SECUENCIA(LARGO(B1));{3;2;1});1));SI(Y(INDICE(x;1)=1;INDICE(x;2)=0;INDICE(x;3)=0);"Cien";BUSCARX(INDICE(x;1);H1:H9;L1:L9;"")));"")














Miguel Angel Franco

 
 
 

Comentarios


© 2019 Miguel Ángel Franco García

bottom of page