top of page

Extraer total cadena concatenada

Tenemos el siguiente modelo, donde tenemos concatenado provincia/cantidad/centro/precio/producto/total.




















Debemos de extraer el total de cada cadena.


En la celda D2, vamos a extraer cada carácter de la celda B2, como hemos hecho en ejemplos anteriores con la función EXTRAE, pero, usamos LET, creamos una variable, punto y coma, ponemos la función EXTRAE, como argumento texto, es la celda B2, como argumento posición inicial, ponemos la función SECUENCIA, como argumento filas, ponemos la función LARGO, como argumento seleccionamos la celda B2, como argumento numero de caracteres, ponemos 1, probamos variable.


=LET(a;EXTRAE(B2;SECUENCIA(LARGO(B2));1);a)


Tenemos una matriz desbordada en vertical con cada carácter de la celda B2.























Usamos la función ABS para que nos devuelva el valor absoluto de cada carácter, solo nos devolverá el valor absoluto de los números, para el texto nos devolverá error.


=LET(a;ABS(EXTRAE(B2;SECUENCIA(LARGO(B2));1));a)






















Preguntamos si es numero la expresión anterior.


=LET(a;ESNUMERO(ABS(EXTRAE(B2;SECUENCIA(LARGO(B2));1)));a)


Obtenemos una matriz desbordada con VERDADERO donde es número, y, FALSO donde no lo es.



















Cuando usamos la función FILA para usarla dentro de LET nos devuelve un error, por lo que vamos a crear un contador para identificar cada registro.


Creamos otra variable, ponemos la función SECUENCIA, como argumento filas, ponemos la función LARGO, como argumento ponemos la celda B2, probamos variable.


Tenemos una secuencia de números desde el numero 1 hasta el valor de LARGO.



















Creamos otra variable, preguntamos si la variable “a” es igual a FALSO, en ese caso, que nos devuelva la variable “b”, en caso contrario, que devuelva un texto en blanco.


=LET(a;ESNUMERO(ABS(EXTRAE(B2;SECUENCIA(MAX(LARGO(B2)));1)));b;SECUENCIA(LARGO(B2));c;SI(a=FALSO;b;"");c)


Nos devuelve la variable “b” cuando la variable “a” sea igual a FALSO, es decir, cuando sea texto la variable “a”.


=LET(a;ESNUMERO(ABS(EXTRAE(B2;SECUENCIA(MAX(LARGO(B2)));1)));b;SECUENCIA(LARGO(B2));c;SI(a=FALSO;b;"");c)


Nos quedamos con el valor máximo.


=LET(a;ESNUMERO(ABS(EXTRAE(B2;SECUENCIA(MAX(LARGO(B2)));1)));b;SECUENCIA(LARGO(B2));c;MAX(SI(a=FALSO;b;""));c)


Nos devuelve 33.


Si restamos la longitud de la cadena de la celda B2 menos el valor devuelto anteriormente, obtendremos los caracteres a extraer por la derecha.


Creamos otra variable, usamos la función DERECHA, como argumento texto, ponemos la celda B2, como argumento numero de caracteres, ponemos la función LARGO, como argumento de LARGO, seleccionamos la celda B2, y, restamos la variable “c”.


=LET(a;ESNUMERO(ABS(EXTRAE(B2;SECUENCIA(LARGO(B2));1)));b;SECUENCIA(LARGO(B2));c;MAX(SI(a=FALSO;b;""));d;DERECHA(B2;LARGO(B2)-c);d)


Aceptamos, arrastramos, y, ya lo tenemos.
















Miguel Angel Franco

 
 
 

Comentarios


© 2019 Miguel Ángel Franco García

bottom of page