top of page

Separar cantidad de producto

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

ree

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.

ree

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.

ree

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)

ree

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)

ree

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.

ree

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)

ree

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.

ree

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)

ree

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.

ree


Miguel Angel Franco

 
 
 

Comentarios


© 2019 Miguel Ángel Franco García

bottom of page