Empresas crecimiento anual
- Jaime Franco Jimenez

- 13 ene 2024
- 3 Min. de lectura
Tenemos una columna con años, otra columna con compañías, y, una última columna con las ventas.
Debemos de enumerar las empresas que tienen una tasa de crecimiento anual positiva durante los 3 años del período y su tasa de crecimiento anual promedio (AAGR).
3 años = 2018-2017, 2019-2018, 2020-2019
Tasa de crecimiento anual (AGR) = Venta en el año en curso/Venta en el año anterior – 1.
Tasa de crecimiento anual promedio (AAGR) para 3 años de período = (AGR1 + AGR2 + AGR3)/3
Nota = B y C no tienen un crecimiento positivo en cada período anual. Por lo tanto, descartado.
En la celda E3, usamos LET, creamos una variable, y, nos traemos los valores únicos del rango B2:B17.
=LET(a;UNICOS(B2:B17);a)
Tenemos la columna de compañías.
Creamos otra variable, si nos fijamos en el modelo, podemos que son los mismos años para cada compañía, creamos otra variable, y, nos traemos los valores únicos del rango A2:A17.
=LET(a;UNICOS(B2:B17);b;UNICOS(A2:A17);b)
Debemos de emparejar el año en curso con el año anterior, es decir, 2018-2017, 2019-2018, y, 2020-2019, vamos a crear otra variable, y, contamos la variable “b”.
=LET(a;UNICOS(B2:B17);b;UNICOS(A2:A17);c; CONTAR(b);c)
Nos devuelve 4.
Creamos otra variable, usamos la función SECUENCIA, como argumento filas, ponemos la variable “c”, omitimos el argumento columnas, como argumento inicio, ponemos la variable “c”, y, como argumento paso ponemos -1, vamos a tener una matriz desbordada en vertical desde el numero 4 al número 1.
Creamos otra variable, y, excluimos la última fila.
=LET(a;UNICOS(B2:B17);b;UNICOS(A2:A17);c;CONTAR(b);d;SECUENCIA(c;;c;-1);e;EXCLUIR(d;-1);e)
Tenemos una matriz desbordada desde el numero 4 al número 2.
Creamos otra variable, y, excluimos la primera fila.
=LET(a;UNICOS(B2:B17);b;UNICOS(A2:A17);c;CONTAR(b);d;SECUENCIA(c;;c;-1);e;EXCLUIR(d;-1);f;EXCLUIR(d;1);f)
Tenemos una matriz desbordada desde el numero 3 al número 1.
Creamos otra variable, usamos la función APILARH, como argumento matriz1, usamos la función INDICE, como argumento matriz, ponemos la variable “b”, como argumento numero de fila, ponemos la variable “e”, como argumento matriz2, volvemos a usar la función INDICE, como argumento matriz, ponemos la variable “b”, como argumento numero de fila, ponemos la variable “f”.
=LET(a;UNICOS(B2:B17);b;UNICOS(A2:A17);c;CONTAR(b);d;SECUENCIA(c;;c;-1);e;EXCLUIR(d;-1);f;EXCLUIR(d;1);g;APILARH(INDICE(b;e);INDICE(b;f));g)
Vamos a obtener la combinación de años.
Nos falta ordenar los años, para ello, usamos la función ORDENAR, como argumento matriz es la función APILARH, como argumento ordenar índice, ponemos 1.
=LET(a;UNICOS(B2:B17);b;UNICOS(A2:A17);c;CONTAR(b);d;SECUENCIA(c;;c;-1);e;EXCLUIR(d;-1);f;EXCLUIR(d;1);g;ORDENAR(APILARH(INDICE(b;e);INDICE(b;f));1);g)
Creamos otra variable, usamos la función REDUCE, como argumento valor inicial, ponemos blanco, como argumento array, ponemos la variable “g”, como argumento función, ponemos LAMBDA, y, declaramos dos variables.
=LET(a;UNICOS(B2:B17);b;UNICOS(A2:A17);c;CONTAR(b);d;SECUENCIA(c;;c;-1);e;EXCLUIR(d;-1);f;EXCLUIR(d;1);g;ORDENAR(APILARH(INDICE(b;e);INDICE(b;f));1);h;REDUCE("";g;LAMBDA(x;y
Como argumento calculo de LAMBDA, usamos la función APILARH, como argumento matriz1, ponemos la variable “x”, como argumento matriz2, usamos la función FILTRAR, como argumento array, seleccionamos el rango C2:C17, como argumento include, seleccionamos el rango A2:A17 e igualamos a la variable “y”, vamos a obtener la venta del año en curso y del año anterior para cada compañía, teniendo la primera columna de más.
Excluimos la primera columna.
=LET(a;UNICOS(B2:B17);b;UNICOS(A2:A17);c;CONTAR(b);d;SECUENCIA(c;;c;-1);e;EXCLUIR(d;-1);f;EXCLUIR(d;1);g;ORDENAR(APILARH(INDICE(b;e);INDICE(b;f));1);h;EXCLUIR(REDUCE("";g;LAMBDA(x;y;APILARH(x;FILTRAR(C2:C17;A2:A17=y))));;1);h)
Tenemos que restar la primera cantidad con la segunda de cada par de años, y, restar 1, para ello, creamos otra variable, usamos la función ELERGICOLS, como argumento matriz, ponemos la variable “h”, como argumento numero de columna1, ponemos 1, como numero de columna2, ponemos 3, y, como numero de columna3, ponemos 5, es decir, vamos a tomar las ventas de los años en curso.
=LET(a;UNICOS(B2:B17);b;UNICOS(A2:A17);c;CONTAR(b);d;SECUENCIA(c;;c;-1);e;EXCLUIR(d;-1);f;EXCLUIR(d;1);g;ORDENAR(APILARH(INDICE(b;e);INDICE(b;f));1);h;EXCLUIR(REDUCE("";g;LAMBDA(x;y;APILARH(x;FILTRAR(C2:C17;A2:A17=y))));;1);i;ELEGIRCOLS(h;1;3;5)
Dividimos entre ELERGICOLS, como argumento matriz, ponemos la variable “h”, como argumento número de columna1, ponemos 2, como numero de columna2, ponemos 4, y, como numero de columna3, ponemos 6, y, restamos 1.
=LET(a;UNICOS(B2:B17);b;UNICOS(A2:A17);c;CONTAR(b);d;SECUENCIA(c;;c;-1);e;EXCLUIR(d;-1);f;EXCLUIR(d;1);g;ORDENAR(APILARH(INDICE(b;e);INDICE(b;f));1);h;EXCLUIR(REDUCE("";g;LAMBDA(x;y;APILARH(x;FILTRAR(C2:C17;A2:A17=y))));;1);i;ELEGIRCOLS(h;1;3;5)/ELEGIRCOLS(h;2;4;6)-1;i)
Creamos otra variable, usamos la función BYROW, como argumento array, ponemos la variable “i”, como argumento función, ponemos LAMBDA, declaramos una variable, como argumento calculo de LAMBDA, usamos la función SUMA, como argumento usamos el condicional SI, preguntamos si la variable “x” es mayor a 0, es ese caso, que ponga 1, en caso contrario, que ponga 0.
=LET(a;UNICOS(B2:B17);b;UNICOS(A2:A17);c;CONTAR(b);d;SECUENCIA(c;;c;-1);e;EXCLUIR(d;-1);f;EXCLUIR(d;1);g;ORDENAR(APILARH(INDICE(b;e);INDICE(b;f));1);h;EXCLUIR(REDUCE("";g;LAMBDA(x;y;APILARH(x;FILTRAR(C2:C17;A2:A17=y))));;1);i;ELEGIRCOLS(h;1;3;5)/ELEGIRCOLS(h;2;4;6)-1;j;BYROW(i;LAMBDA(x;SUMA(SI(x>0;1;0))));j)
Tenemos una matriz desbordada en vertical con el recuento de ventas positivas para cada fila.
Como debemos de descartar aquellas filas que contengan cantidades negativas, creamos otra variable, usamos el condicional SI, preguntamos que, si la variable “j” es igual a 3, que devuelva la variable “i”, en caso contrario, que devuelva blanco.
=LET(a;UNICOS(B2:B17);b;UNICOS(A2:A17);c;CONTAR(b);d;SECUENCIA(c;;c;-1);e;EXCLUIR(d;-1);f;EXCLUIR(d;1);g;ORDENAR(APILARH(INDICE(b;e);INDICE(b;f));1);h;EXCLUIR(REDUCE("";g;LAMBDA(x;y;APILARH(x;FILTRAR(C2:C17;A2:A17=y))));;1);i;ELEGIRCOLS(h;1;3;5)/ELEGIRCOLS(h;2;4;6)-1;j;BYROW(i;LAMBDA(x;SUMA(SI(x>0;1;0))));k;SI(j=3;i;"");k)
Creamos otra variable, usamos la función APILARH, como argumento matriz1, ponemos la variable “a”, como argumento matriz2, ponemos la variable “k”.
=LET(a;UNICOS(B2:B17);b;UNICOS(A2:A17);c;CONTAR(b);d;SECUENCIA(c;;c;-1);e;EXCLUIR(d;-1);f;EXCLUIR(d;1);g;ORDENAR(APILARH(INDICE(b;e);INDICE(b;f));1);h;EXCLUIR(REDUCE("";g;LAMBDA(x;y;APILARH(x;FILTRAR(C2:C17;A2:A17=y))));;1);i;ELEGIRCOLS(h;1;3;5)/ELEGIRCOLS(h;2;4;6)-1;j;BYROW(i;LAMBDA(x;SUMA(SI(x>0;1;0))));k;SI(j=3;i;"");l;APILARH(a;k);l)
Tenemos la compañía junto con su división.
Creamos otra variable, usamos la función FILTRAR, como argumento array, ponemos la variable “l”, como argumento include, tomamos la segunda columna, para ello, usamos la función ELEGIRCOLS, como argumento matriz, ponemos la variable “l”, como argumento numero de columna1, ponemos 2 y comparamos con distinto a blanco.
=LET(a;UNICOS(B2:B17);b;UNICOS(A2:A17);c;CONTAR(b);d;SECUENCIA(c;;c;-1);e;EXCLUIR(d;-1);f;EXCLUIR(d;1);g;ORDENAR(APILARH(INDICE(b;e);INDICE(b;f));1);h;EXCLUIR(REDUCE("";g;LAMBDA(x;y;APILARH(x;FILTRAR(C2:C17;A2:A17=y))));;1);i;ELEGIRCOLS(h;1;3;5)/ELEGIRCOLS(h;2;4;6)-1;j;BYROW(i;LAMBDA(x;SUMA(SI(x>0;1;0))));k;SI(j=3;i;"");l;APILARH(a;k);m;FILTRAR(l;ELEGIRCOLS(l;2)<>"");m)
Tenemos las compañías cuya división menos 1 es positivo.
Creamos otra variable, usamos la función BYROW, como argumento array, ponemos la variable “m”, como argumento función, ponemos LAMBDA, declaramos una variable, sumamos la variable “x” y dividimos por 3.
=LET(a;UNICOS(B2:B17);b;UNICOS(A2:A17);c;CONTAR(b);d;SECUENCIA(c;;c;-1);e;EXCLUIR(d;-1);f;EXCLUIR(d;1);g;ORDENAR(APILARH(INDICE(b;e);INDICE(b;f));1);h;EXCLUIR(REDUCE("";g;LAMBDA(x;y;APILARH(x;FILTRAR(C2:C17;A2:A17=y))));;1);i;ELEGIRCOLS(h;1;3;5)/ELEGIRCOLS(h;2;4;6)-1;j;BYROW(i;LAMBDA(x;SUMA(SI(x>0;1;0))));k;SI(j=3;i;"");l;APILARH(a;k);m;FILTRAR(l;ELEGIRCOLS(l;2)<>"");n;BYROW(m;LAMBDA(x;SUMA(x)/3));n)
Usamos el argumento cálculo de LET, usamos la función APILARH, como argumento matriz1, usamos la función TOMAR, como argumento matriz, ponemos la variable “m”, omitimos el argumento filas, como argumento columnas, ponemos 1, como argumento matriz2, ponemos la variable “n”.
=LET(a;UNICOS(B2:B17);b;UNICOS(A2:A17);c;CONTAR(b);d;SECUENCIA(c;;c;-1);e;EXCLUIR(d;-1);f;EXCLUIR(d;1);g;ORDENAR(APILARH(INDICE(b;e);INDICE(b;f));1);h;EXCLUIR(REDUCE("";g;LAMBDA(x;y;APILARH(x;FILTRAR(C2:C17;A2:A17=y))));;1);i;ELEGIRCOLS(h;1;3;5)/ELEGIRCOLS(h;2;4;6)-1;j;BYROW(i;LAMBDA(x;SUMA(SI(x>0;1;0))));k;SI(j=3;i;"");l;APILARH(a;k);m;FILTRAR(l;ELEGIRCOLS(l;2)<>"");n;BYROW(m;LAMBDA(x;SUMA(x)/3));APILARH(TOMAR(m;;1);n))
Aceptamos, y, ya lo tenemos.
Miguel Angel Franco



















Comentarios