Separar cantidad de producto
- Jaime Franco Jimenez

- 5 ene 2024
- 2 Min. de lectura
Nos han entregado un informe con la venta de una serie de producto junto con la cantidad vendida separados por un guion medio.
Debemos de crear un informe donde aparezcan los productos únicos con las cantidades vendidas por cada producto.
En la celda B2, usamos LET, creamos una variable, seleccionamos el rango A2:A14, probamos variable.
=LET(a;A2:A14;a)
Creamos otra variable, usamos la función TEXTOANTES, como argumento texto, ponemos la variable “a”, como argumento delimitador, entre comillas dobles, ponemos el guion medio.
=LET(a;A2:A14;b;TEXTOANTES(a;"-");b)
Tenemos una matriz desbordada en vertical con cada producto.
Vemos que tenemos un error, debido a que tenemos el producto cafetera, sin unidades asignadas, usamos la funcion SI.ERROR, como argumento valor, es la funcion TEXTOANTES, como argumento valor si error, ponemos la variable "a".
=LET(a;A2:A14;b;SI.ERROR(TEXTOANTES(a;"-");a);b)
Vemos que donde había error, aparece el producto cafetera.
Nos quedamos con los valores únicos.
=LET(a;A2:A14;b;UNICOS(SI.ERROR(TEXTOANTES(a;"-");a));b)
Usamos la función ENFILA para tener los productos en horizontal.
=LET(a;A2:A14;b;ENFILA(UNICOS(SI.ERROR(TEXTOANTES(a;"-");a)));b)
Creamos otra variable, usamos la funcion REDUCE, como argumento valor inicial, ponemos dobles comillas dobles, como argumento array, ponemos la variable “b”, como argumento funcion ponemos LAMBDA, y, declaramos dos variables.
=LET(a;A2:A14;b;ENFILA(UNICOS(SI.ERROR(TEXTOANTES(a;"-");a)));c;REDUCE("";b;LAMBDA(x;y
Como argumento calculo de LAMBDA, usamos APILARH, como argumento matriz1, ponemos la variable “x”, como argumento matriz2, usamos el condicional SI, como argumento prueba lógica, preguntamos si la variable “y” es igual a cada producto, para ello, usamos la funcion TEXTOANTES, como argumento texto ponemos la variable “a”, como argumento delimitador, entre comillas dobles, ponemos el guion medio, como argumento valor si verdadero, usamos la funcion TEXTODESPUES, como argumento texto, ponemos la variable “a”, como argumento delimitador, entre comillas dobles, ponemos el guion medio, como argumento valor si falso, ponemos blanco.
=LET(a;A2:A14;b;ENFILA(UNICOS(SI.ERROR(TEXTOANTES(a;"-");A2:A14)));c;REDUCE("";b;LAMBDA(x;y;APILARH(x;SI(y=TEXTOANTES(a;"-");TEXTODESPUES(a;"-");""))));c)
Tenemos una matriz desbordada de seis columnas, donde tenemos la cantidad por producto, y, error donde no hay cantidad.
La primera columna está de más, creamos otra variable, usamos la función EXCLUIR, como argumento matriz, ponemos la variable “c”, ignoramos el argumento filas, como argumento columnas, ponemos 1.
=LET(a;A2:A14;b;ENFILA(UNICOS(SI.ERROR(TEXTOANTES(a;"-");A2:A14)));c;REDUCE("";b;LAMBDA(x;y;APILARH(x;SI(y=TEXTOANTES(a;"-");TEXTODESPUES(a;"-");""))));d;EXCLUIR(c;;1);d)
Tenemos error donde no hay cantidad, usamos la funcion SI.ERROR, como argumento valor es la funcion EXCLUIR, como argumento valor si error, ponemos blanco.
=LET(a;A2:A14;b;ENFILA(UNICOS(SI.ERROR(TEXTOANTES(a;"-");A2:A14)));c;REDUCE("";b;LAMBDA(x;y;APILARH(x;SI(y=TEXTOANTES(a;"-");TEXTODESPUES(a;"-");""))));d;SI.ERROR(EXCLUIR(c;;1);"");d)
Donde había error, ahora, aparece blanco.
Transponemos la variable “d”.
=LET(a;A2:A14;b;ENFILA(UNICOS(SI.ERROR(TEXTOANTES(a;"-");A2:A14)));c;REDUCE("";b;LAMBDA(x;y;APILARH(x;SI(y=TEXTOANTES(a;"-");TEXTODESPUES(a;"-");""))));d;SI.ERROR(EXCLUIR(c;;1);"");e;TRANSPONER(d);e)
Nos quedamos con los valores únicos, usamos el argumento by_col, y, seleccionamos devolver columnas únicas.
=LET(a;A2:A14;b;ENFILA(UNICOS(SI.ERROR(TEXTOANTES(a;"-");A2:A14)));c;REDUCE("";b;LAMBDA(x;y;APILARH(x;SI(y=TEXTOANTES(a;"-");TEXTODESPUES(a;"-");""))));d;SI.ERROR(EXCLUIR(c;;1);"");e;UNICOS(TRANSPONER(d);VERDADERO);e)
Solo deben de aparece cantidades únicas, cosa que ya tenemos.
Usamos el argumento calculo de LET, usamos la funcion BYROW, como argumento array, ponemos la variable “e”, como argumento funcion, ponemos LAMBDA, creamos una variable, usamos UNIRCADENAS, como argumento delimitador, entre comillas dobles, ponemos coma, ignoramos celdas vacías, como argumento texto1, ponemos la variable “x”.
=LET(a;A2:A14;b;ENFILA(UNICOS(SI.ERROR(TEXTOANTES(a;"-");A2:A14)));c;REDUCE("";b;LAMBDA(x;y;APILARH(x;SI(y=TEXTOANTES(a;"-");TEXTODESPUES(a;"-");""))));d;SI.ERROR(EXCLUIR(c;;1);"");e;UNICOS(TRANSPONER(d);VERDADERO);BYROW(e;LAMBDA(x;UNIRCADENAS(", ";VERDADERO;x))))
Ya tenemos las cantidades por producto, vemos que, para el producto cafetera, no hay cantidades.
Antes de BYROW, usamos APILARH, como argumento matriz1, usamos ENCOL, como argumento ponemos la variable “b”, como argumento matriz2, es la funcion BYROW.
=LET(a;A2:A14;b;ENFILA(UNICOS(SI.ERROR(TEXTOANTES(a;"-");A2:A14)));c;REDUCE("";b;LAMBDA(x;y;APILARH(x;SI(y=TEXTOANTES(a;"-");TEXTODESPUES(a;"-");""))));d;SI.ERROR(EXCLUIR(c;;1);"");e;UNICOS(TRANSPONER(d);VERDADERO);APILARH(ENCOL(b);BYROW(e;LAMBDA(x;UNIRCADENAS(", ";VERDADERO;x)))))
Aceptamos, y, ya lo tenemos.
Miguel Angel Franco Garcia
















Comentarios