Total y total alternativo por animales
- Jaime Franco Jimenez

- 3 nov 2023
- 2 Min. de lectura
Tenemos una serie de animales, cada animal tiene asignada una cantidad.

Debemos de crear una columna con los animales únicos, en otra columna debe de aparecer la cantidad por centro, y, en la tercera columna, debe aparecer una suma alternativa, es decir, si tenemos las siguientes cantidades para un centro, 1,2,3,4,5, pues, ponemos en negativo cada dos cantidades, 1, -2, 3, -4, y 5, y, realizamos la suma de dichas cantidades.
En la celda D2, usamos LET, creamos una variable, ordenamos el rango A2:B21, usamos el argumento ordenar índice, y, ponemos 1, es decir, ordenar por la primera columna, probamos variable.
=LET(xx;ORDENAR(A2:B21;1);xx)
Obtenemos el modelo ordenado en una matriz desbordada.

Creamos otra variable, usamos la función FILAS, como argumento matriz, ponemos la variable “xx”.
=LET(xx;ORDENAR(A2:B21;1);a;FILAS(xx);a)
Obtenemos 20.
Usamos la función SECUENCIA, como argumento filas, es la función FILAS.
=LET(xx;ORDENAR(A2:B21;1);a;SECUENCIA(FILAS(xx));a)
Obtenemos una matriz desbordada en vertical desde el numero 1 al número 20.
Usamos la función ES.PAR, como argumento número es la función SECUENCIA.
=LET(xx;ORDENAR(A2:B21;1);a;ES.PAR(SECUENCIA(FILAS(xx)));a)
Obtenemos VERDADERO donde la fila es par, y, FALSO donde no lo es.

Usamos el condicional SI, como argumento prueba lógica, es la función ES.PAR, como argumento valor si verdadero, ponemos -1, multiplicamos por la función TOMAR, como argumento matriz, ponemos la variable “xx”, omitimos el argumento filas, como argumento columnas, ponemos -1, es decir, obtenemos la columna de cantidades.
=LET(xx;ORDENAR(A2:B21;1);a;SI(ES.PAR(SECUENCIA(FILAS(xx)));-1*TOMAR(xx;;-1)
Como argumento valor si falso, volvemos a usar la función TOMAR, como argumento matriz, es la variable “xx”, omitimos el argumento filas, como argumento columnas, ponemos -1.
Con esta expresión, vamos a conseguir una cantidad positiva, otra negativa, hasta la última cantidad.
=LET(xx;ORDENAR(A2:B21;1);a;SI(ES.PAR(SECUENCIA(FILAS(xx)));-1*TOMAR(xx;;-1);TOMAR(xx;;-1));a)

Creamos otra variable, usamos la función APILARH, como argumento matriz1, ponemos la variable “xx”, como argumento matriz2, ponemos la variable “a”, vamos a obtener el modelo ordenado con las cantidades todas positivas, y, otra columna con las cantidades positivas, y, negativas.
=LET(xx;ORDENAR(A2:B21;1);a;SI(ES.PAR(SECUENCIA(FILAS(xx)));-1*TOMAR(xx;;-1);TOMAR(xx;;-1));aa;APILARH(xx;a);aa)

Creamos otra variable, usamos la función UNICOS, como argumento matriz, usamos la función TOMAR, omitimos el argumento filas, como argumento columnas, ponemos 1.
Vamos a obtener los centros únicos.

Creamos otra variable, usamos MAP, como argumento array, ponemos la variable “b”, como argumento función, ponemos LAMBDA, y, declaramos una variable.
=LET(xx;ORDENAR(A2:B21;1);a;SI(ES.PAR(SECUENCIA(FILAS(xx)));-1*TOMAR(xx;;-1);TOMAR(xx;;-1));aa;APILARH(xx;a);b;UNICOS(TOMAR(xx;;1));c;MAP(b;LAMBDA(x
Como argumento calculo de LAMBDA, ponemos la función SUMA, como argumento numero1, ponemos el condicional SI, como argumento prueba lógica, ponemos la variable “x” e igualamos a la función TOMAR, como argumento matriz es la variable “xx”, omitimos el argumento filas, como argumento columnas, ponemos 1.
=LET(xx;ORDENAR(A2:B21;1);a;SI(ES.PAR(SECUENCIA(FILAS(xx)));-1*TOMAR(xx;;-1);TOMAR(xx;;-1));aa;APILARH(xx;a);b;UNICOS(TOMAR(xx;;1));c;MAP(b;LAMBDA(x;SUMA(SI(x=TOMAR(xx;;1)
Como argumento valor si verdadero, volvemos a usar la función TOMAR, como argumento matriz, ponemos la variable “xx”, omitimos el argumento filas, como argumento columnas, ponemos -1, omitimos el argumento valor si falso.
=LET(xx;ORDENAR(A2:B21;1);a;SI(ES.PAR(SECUENCIA(FILAS(xx)));-1*TOMAR(xx;;-1);TOMAR(xx;;-1));aa;APILARH(xx;a);b;UNICOS(TOMAR(xx;;1));c;MAP(b;LAMBDA(x;SUMA(SI(x=TOMAR(xx;;1);TOMAR(xx;;-1)))));c)
Obtenemos el total de las cantidades positivas para cada centro.

Creamos otra variable, la función MAP es la misma que para la variable “c”, debemos de cambiar el argumento valor si verdadero por la variable “a”.
=LET(xx;ORDENAR(A2:B21;1);a;SI(ES.PAR(SECUENCIA(FILAS(xx)));-1*TOMAR(xx;;-1);TOMAR(xx;;-1));aa;APILARH(xx;a);b;UNICOS(TOMAR(xx;;1));c;MAP(b;LAMBDA(x;SUMA(SI(x=TOMAR(xx;;1);TOMAR(xx;;-1)))));d;MAP(b;LAMBDA(x;SUMA(SI(x=TOMAR(xx;;1);a))));d)
Obtenemos la suma de las cantidades positivas y negativas.

Usamos el argumento calculo de LET, usamos APILARH, como argumento matriz1, ponemos la variable “b”, como argumento matriz2, ponemos la variable “c”, como argumento matriz3, ponemos la variable “d”.
=LET(xx;ORDENAR(A2:B21;1);a;SI(ES.PAR(SECUENCIA(FILAS(xx)));-1*TOMAR(xx;;-1);TOMAR(xx;;-1));aa;APILARH(xx;a);b;UNICOS(TOMAR(xx;;1));c;MAP(b;LAMBDA(x;SUMA(SI(x=TOMAR(xx;;1);TOMAR(xx;;-1)))));d;MAP(b;LAMBDA(x;SUMA(SI(x=TOMAR(xx;;1);a))));APILARH(b;c;d))
Aceptamos, y, ya lo tenemos.

Miguel Angel Franco




Comentarios