Tenemos el siguiente modelo, donde en la primera columna tenemos un nombre de empleado y unos meses asignados a cada empleado, al lado, tenemos las ventas correspondientes.
Debemos de calcular el total para cada empleado.
En la celda D2, usamos LET, creamos una variable, seleccionamos el rango A2:A28, creamos otra variable, seleccionamos el rango B2:B28.
=LET(xx;A2:A28;yy;B2:B28
Creamos otra variable, usamos la funcion FILTRAR, como argumento matriz, ponemos la variable “xx”, como argumento Include, ponemos la variable “yy” e igualamos blanco.
=LET(xx;A2:A28;yy;B2:B28;a;FILTRAR(xx;yy="");a)
Tenemos los empleados.
Creamos otra variable, transponemos la variable “yy”, es decir, las ventas.
=LET(xx;A2:A28;yy;B2:B28;a;FILTRAR(xx;yy="");b;TRANSPONER(yy);b)
Tenemos en horizontal las ventas.
Creamos otra variable, usamos el condicional SI, como argumento prueba lógica, preguntamos si la variable “b” es igual a 0, como argumento valor si verdadero, entre comillas dobles, ponemos barra inclinada, como argumento valor si falso, ponemos la variable “b”.
=LET(xx;A2:A28;yy;B2:B28;a;FILTRAR(xx;yy="");b;TRANSPONER(yy);c;SI(b=0;"/";b);c)
Donde había blanco, ahora, está la barra inclinada.
Antes del condicional SI, usamos la funcion UNIRCADENAS, como argumento delimitador, entre comillas dobles, ponemos coma, y, dejamos un espacio, ignoramos celdas vacías, u, omitimos el argumento, como argumento texto1, es el condicional SI.
=LET(xx;A2:A28;yy;B2:B28;a;FILTRAR(xx;yy="");b;TRANSPONER(yy);c;UNIRCADENAS(",";VERDADERO;SI(b=0;"/";b));c)
Tenemos cada cantidad separada por coma, y, la barra inclinada indica los valores de cada empleado.
Antes de UNIRCADENAS, usamos la funcion DIVIDIRTEXTO, como argumento texto es la funcion UNIRCADENAS, como argumento delimitador de columna, entre comillas dobles, ponemos coma, como argumento delimitador de fila, entre comillas dobles, ponemos la barra inclinada.
=LET(xx;A2:A28;yy;B2:B28;a;FILTRAR(xx;yy="");b;TRANSPONER(yy);c;DIVIDIRTEXTO(UNIRCADENAS(",";VERDADERO;SI(b=0;"/";b));",";"/");c)
Tenemos una matriz desbordada de 14 columnas, con el valor de cada empleado, y, error donde no hay coincidencia.
La primera columna, y, la primera fila está de más, pues, usamos la funcion EXCLUIR antes de DIVIDIRTEXTO, como argumento matriz es la funcion DIVIDIRTEXTO, como argumento filas ponemos1, como argumento columnas, ponemos 1.
=LET(xx;A2:A28;yy;B2:B28;a;FILTRAR(xx;yy="");b;TRANSPONER(yy);c;EXCLUIR(DIVIDIRTEXTO(UNIRCADENAS(",";VERDADERO;SI(b=0;"/";b));",";"/");1;1);c)
Vemos que los números están alineados a la izquierda, quiere decir que están en formato de texto, vamos a multiplicar por 1, para pasarlo a formato de número.
=LET(xx;A2:A28;yy;B2:B28;a;FILTRAR(xx;yy="");b;TRANSPONER(yy);c;EXCLUIR(DIVIDIRTEXTO(UNIRCADENAS(",";VERDADERO;SI(b=0;"/";b));",";"/");1;1)*1;c)
Antes de la funcion EXCLUIR, usamos la funcion SI.ERROR, como argumento valor es la expresión anterior, como argumento valor si error, ponemos blanco.
=LET(xx;A2:A28;yy;B2:B28;a;FILTRAR(xx;yy="");b;TRANSPONER(yy);c;SI.ERROR(EXCLUIR(DIVIDIRTEXTO(UNIRCADENAS(",";VERDADERO;SI(b=0;"/";b));",";"/");1;1)*1;"");c)
Usamos el argumento calculo de LET, ponemos la funcion APILARH, como argumento matriz1, ponemos la variable “a”, como argumento matriz2, usamos la funcion BYROW, como argumento array, ponemos la variable “c”, como argumento funcion, ponemos LAMBDA, declaramos una variable, como argumento calculo, sumamos la variable creada.
=LET(xx;A2:A28;yy;B2:B28;a;FILTRAR(xx;yy="");b;TRANSPONER(yy);c;SI.ERROR(EXCLUIR(DIVIDIRTEXTO(UNIRCADENAS(",";VERDADERO;SI(b=0;"/";b));",";"/");1;1)*1;"");APILARH(a;BYROW(c;LAMBDA(x;SUMA(x)))))
Aceptamos, y, ya lo tenemos.
Miguel Angel Franco
Comments