top of page
Foto del escritorJaime Franco Jimenez

Reestructurar modelo

En la primera tabla, los valores de ventas se proporcionan en una sola celda, incluida la Fecha, el Nombre del producto y la Cantidad, pero en un orden desorganizado.

Debemos de convertir la primera en la segunda tabla.

En la celda D3, usamos LET, creamos una variable, usamos la funcion REGEXEXTRACT, como argumento texto es la celda B3, como argumento patrón ponemos "[A-Z]+", es decir, que nos devuelva todas las letras mayúsculas cada todas las veces que aparezcan.


=LET(a;REGEXEXTRACT(B3;"[A-Z]+");a)

 

En este caso nos devuelve la letra “A”.


Creamos otra variable, volvemos a usar la funcion REGEXEXTRACT, como argumento texto es la celda B3, como argumento patrón ponemos "[0-9/]+", es decir, que nos devuelva todos los números todas las veces que aparezcan, como argumento return mode, seleccionamos 1, que quiere decir todas las coincidencias.


=LET(a;REGEXEXTRACT(B3;"[A-Z]+");b;REGEXEXTRACT(B3;"[0-9/]+";1);b)


Tenemos una matriz desbordada en horizontal con la fecha y la cantidad.

Creamos otra variable, usamos la funcion FILTRAR, como argumento matriz ponemos la variable “b”, como argumento Include, usamos la funcion LARGO, como argumento ponemos la variable “b” y comparamos con menor a 3.


Vamos a obtener aquellos valores que tengan una longitud menor a 3.


=LET(a;REGEXEXTRACT(B3;"[A-Z]+");b;REGEXEXTRACT(B3;"[0-9/]+";1);c;FILTRAR(b;LARGO(b)<3);c)

 

Obtenemos la cantidad.

Usamos el argumento cálculo de LET, usamos la funcion APILARH, como argumento matriz1 ponemos la variable “a”, como argumento matriz2, ponemos la variable “c”.


=LET(a;REGEXEXTRACT(B3;"[A-Z]+");b;REGEXEXTRACT(B3;"[0-9/]+";1);c;FILTRAR(b;LARGO(b)<3);APILARH(a;c))

 

Tenemos una matriz desbordada en horizontal con el producto y la cantidad.

Después del signo igual usamos la funcion REDUCE, como argumento valor inicial ponemos blanco, como argumento array seleccionamos el rango B3:B9, como argumento funcion, ponemos LAMBDA, y, declaramos dos variables.


=REDUCE("";B3:B9;LAMBDA(x;y

 

Como argumento calculo usamos la funcion APILARV, como argumento matriz1, ponemos la variable “x”, como argumento matriz2, es la funcion LET, pero, cambiamos B3 por la variable “y”.


=REDUCE("";B3:B9;LAMBDA(x;y;APILARV(x;LET(a;REGEXEXTRACT(y;"[A-Z]+");b;REGEXEXTRACT(y;"[0-9/]+";1);c;FILTRAR(b;LARGO(b)<3);APILARH(a;c)))))


Tenemos una matriz desbordada de dos columnas, en la primera columna tenemos los productos, y, en la segunda columna las cantidades.

La primera fila está de más, pues, antes de la funcion REDUCE usamos la funcion EXCLUIR, como argumento matriz es la funcion REDUCE, como argumento filas, ponemos 1.


=EXCLUIR(REDUCE("";B3:B9;LAMBDA(x;y;APILARV(x;LET(a;REGEXEXTRACT(y;"[A-Z]+");b;REGEXEXTRACT(y;"[0-9/]+";1);c;FILTRAR(b;LARGO(b)<3);APILARH(a;c)))));1)

En una celda aparte vamos a ver la funcion que vamos a usar para obtener la fecha, para ello, usamos la funcion EXTRAE, como argumento texto seleccionamos el rango B3:B6, como argumento posición inicial, usamos la función HALLAR, como argumento texto buscado, ponemos la barra inclinada, como argumento dentro del texto, seleccionamos el rango B3:B9, cerramos paréntesis, y, restamos 4, que es el punto donde debemos de empezar a extraer, como argumento numero de caracteres ponemos 10, que es la longitud de la fecha.


=EXTRAE(B3:B9;HALLAR("/";B3:B9)-4;10)

 

Obtenemos la fecha de cada cadena.

Copiamos la expresión, volvemos a la expresión principal, después del signo igual, usamos la funcion APILARH, como argumento matriz1, pegamos la expresión, como argumento matriz2 es la funcion EXCLUIR.


=APILARH(EXTRAE(B3:B9;HALLAR("/";B3:B9)-4;10);EXCLUIR(REDUCE("";B3:B9;LAMBDA(x;y;APILARV(x;LET(a;REGEXEXTRACT(y;"[A-Z]+");b;REGEXEXTRACT(y;"[0-9/]+";1);c;FILTRAR(b;LARGO(b)<3);APILARH(a;c)))));1))

 

Aceptamos, y, ya lo tenemos.



Miguel Angel Franco Garcia

0 visualizaciones0 comentarios

Comments


bottom of page