top of page

5 cifras

Vamos por un numero de 5 cifras, hasta hora, tenemos controlado el primer, segundo, tercer y cuarto carácter, si tenemos el numero 21.876, tenemos en letras:










Al usar el quinto carácter, para este número, seria Veintiún Mil Ochocientos setenta y seis.


Vamos a seguir trabajando con este número, debemos de trabajar con el primer y segundo carácter por la izquierda.





Solo cuando el primer carácter por la izquierda es igual a 2, y, el segundo carácter por la derecha es distinto a cero, debe de poner la palabra Veinti.


Con la siguiente expresión, nos volvemos a traer el índice.


=SECUENCIA(LARGO(B1))









Debemos e quedarnos con el quinto y cuarto carácter mayor, para ello, volvemos a usar la función K.ESIMO.MAYOR, como argumento matriz es la función SECUECIA.


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


Como argumento K, usamos una constante de matriz, donde ponemos el valor 5 y 4, separado por punto y coma.


Cerramos paréntesis.


=K.ESIMO.MAYOR(SECUENCIA(LARGO(B1));{5;4})


Aceptamos, tenemos una matriz desbordada en vertical con los números 1, y, 2.






Usamos la función ABS y EXTRAE, como argumento texto de EXTRAE, seleccionamos la celda B1, como argumento posición inicial, es la expresión anterior, como numero de caracteres, ponemos 1.


Cerramos paréntesis.


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


Obtenemos el quinto y cuarto carácter.






Vamos a usar LET, creamos una variable, y, almacenamos la expresión anterior.


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


Como argumento calculo de LET, preguntamos con el condicional SI, como vamos a preguntar dos veces, usamos el operador lógico Y, como argumento valor lógico1, usamos INDICE, como argumento matriz es la variable “x”, como argumento numero de fila, ponemos 1, omitimos el argumento numero de columna, cerramos paréntesis de INDICE, igualamos a 2, es decir, si el primer numero de la variable “x” es igual a 2.


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


Como argumento valor logico2, preguntamos si el segundo valor de la variable “x” es distinto a cero, cerramos paréntesis del operador lógico Y.


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


Como argumento valor si verdadero, entre comillas dobles, ponemos la palabra Veinti, de momento, omitimos el argumento valor si falso, cerramos paréntesis del condicional SI y de LET.


=LET(x;ABS(EXTRAE(B1;K.ESIMO.MAYOR(SECUENCIA(LARGO(B1));{5;4});1));SI(Y(INDICE(x;1)=2;INDICE(x;2)<>0);"Veinti"))


Aceptamos, y, vemos que aparece la palabra Veinti.


Ahora debemos de concatenar con el segundo valor en texto, para ello, borramos el cierre de paréntesis de LET, ponemos el símbolo de concatenar (&), usamos BUSCARX, como argumento valor buscado, nos traemos el segundo valor de la variable “x”.


=LET(x;ABS(EXTRAE(B1;K.ESIMO.MAYOR(SECUENCIA(LARGO(B1));{5;4});1));SI(Y(INDICE(x;1)=2;INDICE(x;2)<>0);"Veinti")&BUSCARX(INDICE(x;2)


Como argumento matriz de búsqueda, seleccionamos el rango H1:H9, como argumento matriz devuelta, seleccionamos el rango I1:I9, como argumento si no se encuentra, ponemos un texto en blanco, cerramos paréntesis de BUSCARX y de LET.


Aceptamos, y, tenemos Veintiuno.


Si ponemos el siguiente número:





Nos aparece:






Aparece FALSO porque omitimos el argumento valor si falso del condicional SI.


Borramos el cierre de paréntesis del condicional SI.






Quedaría:





Es decir, la palabra Veinti y BUSCARX es el argumento valor si verdadero.


Si el primer carácter por la izquierda no es dos, y, es distinto a cero, puede ser 31, 45, 78, 99, entre medio de estos números debe de estar la letra “y”, ponemos punto y coma, vamos al argumento valor si falso, hacemos la misma pregunta que antes, pero en vez de poner igual a 2, ponemos distinto a 2.


=LET(x;ABS(EXTRAE(B1;K.ESIMO.MAYOR(SECUENCIA(LARGO(B1));{5;4});1));SI(Y(INDICE(x;1)=2;INDICE(x;2)<>0);"Veinti"&BUSCARX(INDICE(x;2);H1:H9;I1:I9;"");SI(Y(INDICE(x;1)<>2;INDICE(x;2)<>0)


Como argumento valor si verdadero, usamos BUSCARX, como argumento valor buscado, es el primer carácter de la variable “x”.


=LET(x;ABS(EXTRAE(B1;K.ESIMO.MAYOR(SECUENCIA(LARGO(B1));{5;4});1));SI(Y(INDICE(x;1)=2;INDICE(x;2)<>0);"Veinti"&BUSCARX(INDICE(x;2);H1:H9;I1:I9;"");SI(Y(INDICE(x;1)<>2;INDICE(x;2)<>0);BUSCARX(INDICE(x;1)


Como argumento matriz de búsqueda, seleccionamos el rango H1:H9, como argumento matriz devuelta, seleccionamos el rango K1:K9, 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));{5;4});1));SI(Y(INDICE(x;1)=2;INDICE(x;2)<>0);"Veinti"&BUSCARX(INDICE(x;2);H1:H9;I1:I9;"");SI(Y(INDICE(x;1)<>2;INDICE(x;2)<>0);BUSCARX(INDICE(x;1);H1:H9;K1:K9;""))))


Aceptamos, he cambiado el primer numero por la izquierda por el numero 3, vemos que aparece treinta.


Tenemos el siguiente número:





Vemos que nos devuelve:





Aun no tenemos controlado un numero entre 11 y 19 como dos primeros dígitos por la izquierda, para ello, debemos de realizar las siguientes preguntas:




Pero, debemos de poner como primera condición dentro de nuestra expresión, si dicha condición se cumple, usamos BUSCARX, como argumento valor buscado no podemos usar la variable “x”, porque esta variable nos devuelve una matriz desbordada con los dos primeros dígitos por la izquierda, pero para esta condición, debemos de usar los dos primeros dígitos por la izquierda, pero como número, podemos usar la variable “x”, pero delante debemos de poner ABS, y, después CONCAT, con esto obtenemos el número.


=LET(x;ABS(EXTRAE(B1;K.ESIMO.MAYOR(SECUENCIA(LARGO(B1));{5;4});1));SI(Y(INDICE(x;1)=1;INDICE(x;2)>=1;INDICE(x;2)<=9);BUSCARX(ABS(CONCAT(x))


Como argumento matriz de búsqueda, seleccionamos el rango H10:H19, como argumento matriz devuelta, seleccionamos el rango I10;I19, como argumento valor si no se encuentra, ponemos un texto en blanco, cerramos paréntesis de BUSCARX.


=LET(x;ABS(EXTRAE(B1;K.ESIMO.MAYOR(SECUENCIA(LARGO(B1));{5;4});1));SI(Y(INDICE(x;1)=1;INDICE(x;2)>=1;INDICE(x;2)<=9);BUSCARX(ABS(CONCAT(x));H10:H19;I10:I19;"");SI(Y(INDICE(x;1)=2;INDICE(x;2)<>0);"Veinti"&BUSCARX(INDICE(x;2);H1:H9;I1:I9;"");SI(Y(INDICE(x;1)<>2;INDICE(x;2)<>0);BUSCARX(INDICE(x;1);H1:H9;K1:K9;"")&" y "&BUSCARX(INDICE(x;2);H1:H9;I1:I9;"");SI(Y(INDICE(x;1)<>0;INDICE(x;2)=0);BUSCARX(INDICE(x;1);H1:H9;K1:K9;""))))))


Aceptamos, pongamos el siguiente número:




Vemos como quinto carácter, aparece trece.


Ponemos el siguiente número:




Aparece treinta y tres.


Ponemos el siguiente número:




Vemos que aparece Veintitrés.


Si ponemos una cantidad, por ejemplo, de 4 cifras, el campo 5 carácter devuelve un error.











Para quitar el error del campo 5 carácter, podemos usar la función SI.ERROR.


=SI.ERROR(LET(x;ABS(EXTRAE(B1;K.ESIMO.MAYOR(SECUENCIA(LARGO(B1));{5;4});1));SI(Y(INDICE(x;1)=1;INDICE(x;2)>=1;INDICE(x;2)<=9);BUSCARX(ABS(CONCAT(x));H10:H19;I10:I19;"");SI(Y(INDICE(x;1)=2;INDICE(x;2)<>0);"Veinti"&BUSCARX(INDICE(x;2);H1:H9;I1:I9;"");SI(Y(INDICE(x;1)<>2;INDICE(x;2)<>0);BUSCARX(INDICE(x;1);H1:H9;K1:K9;"")&" y "&BUSCARX(INDICE(x;2);H1:H9;I1:I9;"");SI(Y(INDICE(x;1)<>0;INDICE(x;2)=0);BUSCARX(INDICE(x;1);H1:H9;K1:K9;""))))));"")


Después del texto, debe de aparecer la palabra Mil, para ello, vamos a la expresión del campo 4 carácter, después del signo igual con el condicional SI, preguntamos si el valor de B10 es distinto a blanco, en ese caso, que ponga la palabra Mil, en caso contrario, que ejecute la expresión que había.


=SI(B10<>"";"Mil";BUSCARX(ABS(EXTRAE(B1;K.ESIMO.MAYOR(SECUENCIA(LARGO(B1));4);1));H1:H9;M1:M9;""))


Si ponemos un numero de menos de 4 cifras, obtendremos, también, un error, volvamos a la expresión del campo 4 carácter, después de:


=SI(B10<>"";"Mil"


Ponemos otro condicional SI, donde preguntamos que, si la longitud de B1 es menor a 4, que ponga un texto en blanco.


=SI(B10<>"";"Mil";SI(LARGO(B1)<4;"";BUSCARX(ABS(EXTRAE(B1;K.ESIMO.MAYOR(SECUENCIA(LARGO(B1));4);1));H1:H9;M1:M9;"")))


Con esto ya tenemos controlado todas las posibles condiciones.



Miguel Angel Franco

 
 
 

Comentarios


© 2019 Miguel Ángel Franco García

bottom of page