top of page

Total por centro

Para el siguiente ejemplo, vamos a trabajar con el modelo que suelo usar habitualmente, algo más corto, pero, vemos en la columna de centro, que hay centros iguales que se diferencian unos de otros por tener diferencias en letras.
















Por ejemplo, Supermercados MAS, aparece como sigue:








No tenemos que corregir nada de la columna centro, queremos elegir un centro y que nos devuelva el total.


El modelo esta en formato de rango.


En la celda I2, vamos a crear una lista desplegable, para ello, vamos a la pestaña de datos, dentro de herramientas de datos, hacemos clic en validación de datos.







Desplegamos permitir, seleccionamos lista, en la ventana origen, seleccionamos el rango O1:O10.













Aceptamos, seleccionamos un centro.






Vamos a extraer cada carácter del centro seleccionado, para ello, usamos la función EXTRAE, como argumento texto, seleccionamos la celda I2, como argumento posición inicial, ponemos la función SECUENCIA, omitimos el argumento filas, como argumento columnas, ponemos la función LARGO, como argumento de LARGO, seleccionamos la celda I2, como argumento numero de caracteres, ponemos 1.


Probamos variable.


=LET(a;EXTRAE(I2;SECUENCIA(;LARGO(I2));1);a)


Tenemos una matriz desbordada en horizontal con cada carácter de la celda I2.




Creamos otra variable, y, vamos a extraer cada carácter de cada centro de la columna centro, para ello, volvemos a usar la función EXTRAE, como argumento texto, seleccionamos el rango C2:C18.


=LET(a;EXTRAE(I2;SECUENCIA(;LARGO(I2));1);b;EXTRAE(C2:C18


Como argumento numero de caracteres, ponemos la función SECUENCIA, omitimos el argumento filas, como argumento columnas, usamos la función LARGO, como argumento de LARGO ponemos la celda I2, es decir, que extraiga el mismo numero de caracteres que el centro buscado, como argumento numero de caracteres, ponemos 1, probamos variable.


=LET(a;EXTRAE(I2;SECUENCIA(;LARGO(I2));1);b;EXTRAE(C2:C18;SECUENCIA(;LARGO(I2));1);b)


Obtenemos una matriz desbordada, en cada fila, tenemos cada carácter del centro.








Creamos otra variable, usamos la función ENCONTRAR, como argumento texto buscado, ponemos la variable “a”, como argumento dentro del texto, ponemos la variable “b”, probamos variable.


=LET(a;EXTRAE(I2;SECUENCIA(;LARGO(I2));1);b;EXTRAE(C2:C18;SECUENCIA(;LARGO(I2));1);c;ENCONTRAR(a;b);c)


Obtenemos una matriz desbordada con la posición de la primera letra donde hay coincidencia, y, error donde no la hay.









Quitamos el error con la función SI.ERROR, y, ponemos un texto en blanco.


=LET(a;EXTRAE(I2;SECUENCIA(;LARGO(I2));1);b;EXTRAE(C2:C18;SECUENCIA(;LARGO(I2));1);c;SI.ERROR(ENCONTRAR(a;b);"");c)


Ahora vamos a sumar los 1 de cada fila, pero de forma independiente, por lo que antes de SI.ERROR, ponemos la función BYROW, como argumento array, es la función SI.ERROR.


=LET(a;EXTRAE(I2;SECUENCIA(;LARGO(I2));1);b;EXTRAE(C2:C18;SECUENCIA(;LARGO(I2));1);c;BYROW(SI.ERROR(ENCONTRAR(a;b);"")


Como argumento función, ponemos LAMBDA, creamos una variable que almacena el argumento array.


=LET(a;EXTRAE(I2;SECUENCIA(;LARGO(I2));1);b;EXTRAE(C2:C18;SECUENCIA(;LARGO(I2));1);c;BYROW(SI.ERROR(ENCONTRAR(a;b);"");LAMBDA(x


Sumamos la variable “x”.


=LET(a;EXTRAE(I2;SECUENCIA(;LARGO(I2));1);b;EXTRAE(C2:C18;SECUENCIA(;LARGO(I2));1);c;BYROW(SI.ERROR(ENCONTRAR(a;b);"");LAMBDA(x;SUMA(x)));c)


Obtenemos una matriz desbordada con la suma de cada fila.













Creamos otra variable, donde preguntamos si la variable “c” es igual a la suma de la longitud de la variable “a”.


=LET(a;EXTRAE(I2;SECUENCIA(;LARGO(I2));1);b;EXTRAE(C2:C18;SECUENCIA(;LARGO(I2));1);c;BYROW(SI.ERROR(ENCONTRAR(a;b);"");LAMBDA(x;SUMA(x)));d;SI(c=SUMA(LARGO(a ))


En ese caso, que nos devuelva el rango G2:G18, en caso contrario, que nos devuelva un texto en blanco.


=LET(a;EXTRAE(I2;SECUENCIA(;LARGO(I2));1);b;EXTRAE(C2:C18;SECUENCIA(;LARGO(I2));1);c;BYROW(SI.ERROR(ENCONTRAR(a;b);"");LAMBDA(x;SUMA(x)));d;SI(c=SUMA(LARGO(a ));G2:G18;"")


Vamos a obtener una matriz desbordada con los totales del centro seleccionado, como argumento calculo de LET, sumamos la variable “d”.


=LET(a;EXTRAE(I2;SECUENCIA(;LARGO(I2));1);b;EXTRAE(C2:C18;SECUENCIA(;LARGO(I2));1);c;BYROW(SI.ERROR(ENCONTRAR(a;b);"");LAMBDA(x;SUMA(x)));d;SI(c=SUMA(LARGO(a ));G2:G18;"");SUMA(d))


Aceptamos, y, ya lo tenemos.





Podemos ver que el resultado obtenido corresponde al centro seleccionado.












Vamos a elegir otro centro, y, vemos que el total también coincide.














Pues, ya tenemos nuestro ejemplo resuelto.



Miguel Angel Franco

 
 
 

Comentarios


© 2019 Miguel Ángel Franco García

bottom of page