top of page

Extraer primer ultimo digito

Para el siguiente ejemplo, tenemos una serie de cadenas.










Debemos de extraer el primer digito y ultimo digito de cada cadena, por ejemplo, para la primera cadena, debe de devolvernos 0, y, 6.


Empecemos…


En la celda B2, usamos LET, declaramos una variable, usamos EXTRAE, como argumento texto, seleccionamos el rango A3:A7, como argumento posición inicial, usamos SECUENCIA, omitimos el argumento filas, como argumento columnas usamos MAX, como argumento de MAX, usamos LARGO, y, como argumento de LARGO, seleccionamos el rango A3:A7, como argumento número de caracteres, ponemos 1.


=LET(a;EXTRAE(A3:A7;SECUENCIA(;MAX(LARGO(A3:A7)));1);a)


Obtenemos una matriz desbordada con cada carácter de cada cadena.






Usamos la función ABS para obtener el valor absoluto de cada número, para cada texto, nos devolverá un error.


=LET(a;ABS(EXTRAE(A3:A7;SECUENCIA(;MAX(LARGO(A3:A7)));1));a)






Quitamos el error con la función SI.ERROR, y, ponemos un texto en blanco.


=LET(a;SI.ERROR(ABS(EXTRAE(A3:A7;SECUENCIA(;MAX(LARGO(A3:A7)));1));"");a)






Usamos la función BYROW, como argumento array, es la expresión anterior, como argumento función, ponemos LAMBDA, declaramos una variable, ponemos UNIRCADENAS, como argumento delimitador, ponemos un espacio, ignoramos celdas vacías, como argumento texto1, es la variable “x”.


LET(a;BYROW(SI.ERROR(ABS(EXTRAE(A3:A7;SECUENCIA(;MAX(LARGO(A3:A7)));1));"");LAMBDA(x;UNIRCADENAS(" ";VERDADERO;x)));a)


Obtenemos una matriz desbordada con los números de cada cadena separados por un espacio.











Debemos de tener en cuenta, que, si en una cadena aparece un solo número, solo debe de aparecer dicho número, para ello, debemos de controlar la longitud de cada cadena, bien, como argumento calculo de LET, usamos el condicional SI, como argumento prueba lógica, preguntamos si la longitud de la variable “a” es mayor a 1.


=LET(a;BYROW(SI.ERROR(ABS(EXTRAE(A3:A7;SECUENCIA(;MAX(LARGO(A3:A7)));1));"");LAMBDA(x;UNIRCADENAS(" ";VERDADERO;x)));SI(LARGO(a)>1


Como argumento valor si verdadero, usamos la función IZQUIERDA, como argumento texto es la variable “a”, omitimos el argumento número de caracteres, concatenamos con un espacio, concatenamos con la función DERECHA, como argumento texto, es la variable “a”, volvemos a omitir el argumento número de caracteres.


=LET(a;BYROW(SI.ERROR(ABS(EXTRAE(A3:A7;SECUENCIA(;MAX(LARGO(A3:A7)));1));"");LAMBDA(x;UNIRCADENAS(" ";VERDADERO;x)));SI(LARGO(a)>1;IZQUIERDA(a)&" "&DERECHA(a)


Como argumento valor si falso, usamos la función IZQUIERDA, como argumento texto es la variable “a”, omitimos el argumento número de caracteres.


=LET(a;BYROW(SI.ERROR(ABS(EXTRAE(A3:A7;SECUENCIA(;MAX(LARGO(A3:A7)));1));"");LAMBDA(x;UNIRCADENAS(" ";VERDADERO;x)));SI(LARGO(a)>1;IZQUIERDA(a)&" "&DERECHA(a);IZQUIERDA(a)))


Aceptamos, y, ya lo tenemos.










Miguel Angel Franco

 
 
 

Comments


© 2019 Miguel Ángel Franco García

bottom of page