top of page

Centro-producto-cantidades-total

Tenemos un centro, unos productos y unas cantidades.


Vemos que en la columna productos, tenemos los productos vendidos por centros separados por coma, y, en la columna cantidades, tenemos las cantidades vendidas de cada producto separados por coma.


Debemos de crear un reporte, o, informe donde aparezca el centro, y, los productos con sus cantidades respectivas, y, una ultima columna con la suma de las cantidades para cada centro.


En una celda, ponemos LET, creamos una variable, usamos la funcion CONCAT, como argumento texto1, seleccionamos el rango B2:B7 y concatenamos con la barra inclinada.


=LET(a;CONCAT(B2:B7&"/");a)


Tenemos cada línea unida en una sola fila separada por la barra inclinada.


Usamos la funcion DIVIDIRTEXTO, como argumento texto, es la funcion CONCAT, como argumento delimitador de columna, entre comillas dobles, ponemos coma, como argumento delimitador de fila, entre comillas dobles, ponemos la barra inclinada, como argumento si no se encuentra, ponemos blanco.


=LET(a;DIVIDIRTEXTO(CONCAT(B2:B7&"/");",";"/";;;"");a)

 

Tenemos una matriz desbordada donde en cada línea, tenemos separado cada producto.


Vemos que tenemos una última línea en blanco, usamos EXCLUIR antes de DIVIDIRTEXTO, como argumento matriz, es la funcion DIVIDIRTEXTO, como filas, ponemos -1.


=LET(a;EXCLUIR(DIVIDIRTEXTO(CONCAT(B2:B7&"/");",";"/";;;"");-1);a)


Creamos otra variable, es la misma expresión que para la variable “a”, lo único que debemos de cambiar es el argumento texto1 de CONCAT por C2:C7.


=LET(a;EXCLUIR(DIVIDIRTEXTO(CONCAT(B2:B7&"/");",";"/";;;"");-1);b;EXCLUIR(DIVIDIRTEXTO(CONCAT(C2:C7&"/");",";"/";;;"");-1);b)

 

Tenemos las cantidades separadas por centros.


Multiplicamos por 1 para obtener las cantidades en formato de número.


=LET(a;EXCLUIR(DIVIDIRTEXTO(CONCAT(B2:B7&"/");",";"/";;;"");-1);b;EXCLUIR(DIVIDIRTEXTO(CONCAT(C2:C7&"/");",";"/";;;"");-1)*1;b)

 

Ya tenemos las cantidades en formato de número, pero, donde no hay número tenemos un error.


Usamos la funcion SI.ERROR, como argumento valor es la funcion EXCLUIR. como argumento valor si error, ponemos blanco.


=LET(a;EXCLUIR(DIVIDIRTEXTO(CONCAT(B2:B7&"/");",";"/";;;"");-1);b;SI.ERROR(EXCLUIR(DIVIDIRTEXTO(CONCAT(C2:C7&"/");",";"/";;;"");-1)*1;"");b)


Creamos otra variable, usamos BYROW, como argumento array, ponemos la variable “b”, como argumento funcion, ponemos LAMBDA, creamos una variable, y, sumamos dicha variable.


=LET(a;EXCLUIR(DIVIDIRTEXTO(CONCAT(B2:B7&"/");",";"/";;;"");-1);b;SI.ERROR(EXCLUIR(DIVIDIRTEXTO(CONCAT(C2:C7&"/");",";"/";;;"");-1)*1;"");c;BYROW(b;LAMBDA(x;SUMA(x)));c)


Tenemos la suma de las cantidades por centros.


Usamos el argumento cálculo de LET, usamos MAP, como argumento array, ponemos la variable “a”, como argumento array2, ponemos la variable “b”, como argumento funcion, ponemos LAMBDA, declaramos dos variables.


=LET(a;EXCLUIR(DIVIDIRTEXTO(CONCAT(B2:B7&"/");",";"/";;;"");-1);b;SI.ERROR(EXCLUIR(DIVIDIRTEXTO(CONCAT(C2:C7&"/");",";"/";;;"");-1)*1;"");c;BYROW(b;LAMBDA(x;SUMA(x)));MAP(a;b;LAMBDA(x;y

 

Como argumento cálculo de LAMBDA, usamos UNIRCADENAS, como argumento delimitador, entre comillas dobles ponemos dos puntos, ignoramos celdas vacías, u, omitimos el argumento, como argumento texto1, ponemos la variable “x”, como argumento texto2, ponemos la variable “y”.


=LET(a;EXCLUIR(DIVIDIRTEXTO(CONCAT(B2:B7&"/");",";"/";;;"");-1);b;SI.ERROR(EXCLUIR(DIVIDIRTEXTO(CONCAT(C2:C7&"/");",";"/";;;"");-1)*1;"");c;BYROW(b;LAMBDA(x;SUMA(x)));MAP(a;b;LAMBDA(x;y;UNIRCADENAS(":";VERDADERO;x;y))))

 

Pues, ya lo tenemos.


Antes de MAP, usamos la funcion NOMPROPIO.


=LET(a;EXCLUIR(DIVIDIRTEXTO(CONCAT(B2:B7&"/");",";"/";;;"");-1);b;SI.ERROR(EXCLUIR(DIVIDIRTEXTO(CONCAT(C2:C7&"/");",";"/";;;"");-1)*1;"");c;BYROW(b;LAMBDA(x;SUMA(x)));NOMPROPIO(MAP(a;b;LAMBDA(x;y;UNIRCADENAS(":";VERDADERO;x;y)))))


Antes de la funcion MAP. ponemos APILARH, como argumento matriz1, seleccionamos el rango A2:A7 (Centros), como argumento matriz2, es la funcion MAP, como argumento matriz3, ponemos la variable “c”.


=LET(a;EXCLUIR(DIVIDIRTEXTO(CONCAT(B2:B7&"/");",";"/";;;"");-1);b;SI.ERROR(EXCLUIR(DIVIDIRTEXTO(CONCAT(C2:C7&"/");",";"/";;;"");-1)*1;"");c;BYROW(b;LAMBDA(x;SUMA(x)));APILARH(A2:A7;NOMPROPIO(MAP(a;b;LAMBDA(x;y;UNIRCADENAS(":";VERDADERO;x;y))));c))

 

Aceptamos, y, ya lo tenemos.



Miguel Angel Franco Garcia

 
 
 

Comentarios


© 2019 Miguel Ángel Franco García

bottom of page