top of page
Foto del escritorJaime Franco Jimenez

Separar cantidad de producto

Tenemos una columna con productos, al lado del producto tenemos una cantidad separada por un guion medio.

Debemos de crear un reporte con el producto único, y, las cantidades de dicho producto.

En la celda B2, usamos LET, creamos una variable, y, seleccionamos el rango A2:A14.


=LET(a;A2:A14

 

Creamos otra variable, usamos la funcion REGEXEXTRACT, como argumento texto, ponemos la variable “a”, como argumento patrón, ponemos "[A-Za-z]+", es decir, que nos devuelva los caracteres que sea letras mayúsculas, o, minúsculas, todas las veces que aparezcan, como argumento return mode, seleccionamos 1.


=LET(a;A2:A14;b;REGEXEXTRACT(a;"[A-Za-z]+";1);b)


Tenemos los productos.

Creamos otra variable, usamos de nuevo la funcion REGEXEXTRACT, como argumento texto, ponemos la variable “a”, como argumento patrón, ponemos "[0-9]+", es decir, que nos devuelva los números cada vez que aparecen, como argumento return mode, ponemos 1.


=LET(a;A2:A14;b;REGEXEXTRACT(a;"[A-Za-z]+";1);c;REGEXEXTRACT(a;"[0-9]+";1);c)

 

Tenemos los números.

Pero, tenemos un error, porque cafetera no tiene cantidad, pues, antes de REGEXEXTRACT, ponemos la funcion SI.ERROR, como argumento valor es la funcion REGEXEXTRACT, como argumento valor si error, ponemos 0, pero, entre comillas dobles.


=LET(a;A2:A14;b;REGEXEXTRACT(a;"[A-Za-z]+";1);c;SI.ERROR(REGEXEXTRACT(a;"[0-9]+";1);"0");c)

Creamos otra variable, usamos la funcion ENFILA, como argumento matriz, usamos la funcion UNICOS, como argumento ponemos la variable “c”, cerramos paréntesis, vamos a obtener los productos únicos en horizontal.


=LET(a;A2:A14;b;REGEXEXTRACT(a;"[A-Za-z]+";1);c;SI.ERROR(REGEXEXTRACT(a;"[0-9]+";1);"0");cc;ENFILA(UNICOS(b));cc)

Creamos otra variable, usamos el condicional SI, como argumento prueba lógica, preguntamos si la variable ” b” es igual a la variable “cc”, en ese caso (valor si verdadero), que devuelva la variable “c”, en caso contrario (valor si falso), que devuelva blanco.


=LET(a;A2:A14;b;REGEXEXTRACT(a;"[A-Za-z]+";1);c;SI.ERROR(REGEXEXTRACT(a;"[0-9]+";1);"0");cc;ENFILA(UNICOS(b));d;SI(b=cc;c;"");d)


Vamos a tener las cantidades por productos en columnas.

Vemos que hay productos que tienen la misma cantidad, y, deben de aparecer las cantidades únicas, pues, delante del condicional SI, ponemos la funcion UNICOS.


=LET(a;A2:A14;b;REGEXEXTRACT(a;"[A-Za-z]+";1);c;SI.ERROR(REGEXEXTRACT(a;"[0-9]+";1);"0");cc;ENFILA(UNICOS(b));d;UNICOS(SI(b=cc;c;""));d)

Creamos otra variable, usamos la funcion BYCOL, como argumento array, ponemos la variable “d”, como argumento funcion, ponemos LAMBDA, declaramos una variable, como argumento calculo, usamos la funcion UNIRCADENAS, como argumento delimitador, entre comillas dobles ponemos coma, y, dejamos un espacio, ignoramos celdas vacías, como argumento texto1, ponemos la variable creada.


=LET(a;A2:A14;b;REGEXEXTRACT(a;"[A-Za-z]+";1);c;SI.ERROR(REGEXEXTRACT(a;"[0-9]+";1);"0");cc;ENFILA(UNICOS(b));d;UNICOS(SI(b=cc;c;""));e;BYCOL(d;LAMBDA(x;UNIRCADENAS(", ";VERDADERO;x)));e)


Tenemos en celdas independientes las cantidades para cada producto.

Antes de BYCOL usamos la funcion ENCOL, para obtener los datos en una columna.


=LET(a;A2:A14;b;REGEXEXTRACT(a;"[A-Za-z]+";1);c;SI.ERROR(REGEXEXTRACT(a;"[0-9]+";1);"0");cc;ENFILA(UNICOS(b));d;UNICOS(SI(b=cc;c;""));e;ENCOL(BYCOL(d;LAMBDA(x;UNIRCADENAS(", ";VERDADERO;x))));e)

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


=LET(a;A2:A14;b;REGEXEXTRACT(a;"[A-Za-z]+";1);c;SI.ERROR(REGEXEXTRACT(a;"[0-9]+";1);"0");cc;ENFILA(UNICOS(b));d;UNICOS(SI(b=cc;c;""));e;ENCOL(BYCOL(d;LAMBDA(x;UNIRCADENAS(", ";VERDADERO;x))));APILARH(ENCOL(cc);e))

 

Aceptamos, y, ya lo tenemos.



Miguel Angel Franco

2 visualizaciones0 comentarios

Comments


bottom of page