Tres países con mas bronce
- Jaime Franco Jimenez

- 25 ago 2023
- 3 Min. de lectura
Para el siguiente ejemplo, tenemos los siguientes datos.

Nos solicitan crear un reporte con los tres países que tengan mas cantidad de bronce, que oro y plata, por ejemplo, China, tienen de oro 275. De plata 227, y, de bronce 194, la suma de las tres cantidades es de 696, si calculamos la diferencia porcentual, debemos de dividir la cantidad de bronce entre la suma total para China, 696 entre 194, nos devuelve un 28%, lo mismo debemos de realizar para el resto de los países, y, extraer los tres países con más cantidad de bronce.
En la celda F2, ponemos la función LET, creamos una variable, y, almacenamos la columna de bronce.
=LET(a;D2:D10;a)
Obtenemos una matriz desbordada con la columna de bronce.

Creamos otra variable donde vamos a calcular la diferencia porcentual de cada fila, ponemos la variable “a”, y, dividimos entre la función BYROW, como argumento array, ponemos el rango B2:D10, como argumento función, ponemos LAMBDA, como argumento calculo de LAMBDA, creamos una variable, sumamos variable.
Probamos variable.
=LET(a;D2:D10;b;a/BYROW(B2:D10;LAMBDA(x;SUMA(x)));b)
Obtenemos la diferencia porcentual de la cantidad de bronce respecto a la suma de oro, plata, y, bronce, de cada fila.

Creamos otra variable, donde nos vamos a traer los tres valores mayores, para ello, usamos la función K.ESIMO.MAYOR, como argumento matriz, ponemos la variable “b”, como argumento K, usamos una constante de matriz, abrimos unas llaves, ponemos los valores 1,2, y, 3, separados por punto y coma, porque solicitamos valores en vertical, probamos variable.
=LET(a;D2:D10;b;a/BYROW(B2:D10;LAMBDA(x;SUMA(x)));c;K.ESIMO.MAYOR(b;{1;2;3});c)
Tenemos los res valores mayores.

Ponemos la variable “b”, y, “c” en formato de porcentaje.
La variable “b” tiene los siguientes porcentajes.

La variable “c” tiene los siguientes porcentajes.

Podemos ver que el porcentaje 36%, que es el tercer valor mayor, aparece dos veces, quiere decir que deben de aparecer dos países con dicho porcentaje.
Creamos otra variable, usamos la función APILARH, como argumento matriz1, seleccionamos el rango A2:D10, como argumento matriz2, usamos la función BYROW, como argumento array, seleccionamos el rango B2:D10, como argumento función, ponemos LAMBDA, como argumento calculo de LAMBDA, creamos una variable, sumamos la variable, como argumento matriz3, ponemos la variable “b”, cerramos paréntesis, probamos variable.
=LET(a;D2:D10;b;a/BYROW(B2:D10;LAMBDA(x;SUMA(x)));c;K.ESIMO.MAYOR(b;{1;2;3});d;APILARH(A2:D10;BYROW(B2:D10;LAMBDA(x;SUMA(x)));b);d)
Obtenemos el modelo con los países, la cantidad de oro, plata, bronce, el total por fila, y, el porcentaje de cada país.

Creamos otra variable, la llamaremos resultado, usamos la función FILTRAR, como argumento array, ponemos la variable “d”, como argumento include, usamos la función BYROW, como argumento array, usamos la función INDICE, como argumento matriz, ponemos la variable “d”, omitimos el argumento numero de fila, como argumento numero de columna, ponemos 6, cerramos paréntesis, como argumento función ponemos LAMBDA, creamos una variable, ponemos el operador lógico O, como argumento valor logico1, ponemos la variable “x”, igualamos a la función INDICE, como argumento matriz, ponemos la variable “c”, como argumento numero de fila, ponemos 1, como argumento valor logico2, volvemos a poner la variable “x”, igualamos a la función INDICE, como argumento matriz, ponemos la variable “c”, como argumento numero de fila, ponemos 3, cerramos paréntesis.
Vamos a filtrar la variable “d”, siempre que la columna de porcentajes sea igual al primer valor menor, segundo valor menor, o, tercer valor menor.
Probamos variable.
=LET(a;D2:D10;b;a/BYROW(B2:D10;LAMBDA(x;SUMA(x)));c;K.ESIMO.MAYOR(b;{1;2;3});d;APILARH(A2:D10;BYROW(B2:D10;LAMBDA(x;SUMA(x)));b);resultado;FILTRAR(d;BYROW(INDICE(d;;6);LAMBDA(x;O(x=INDICE(c;1);x=INDICE(c;2);x=INDICE(c;3)))));resultado)
Obtenemos el modelo con los países que tienen mayor cantidad de bronce que oro, y, plata.
Podemos ver aparece Suecia, y, Japon que ambos tienen el 36%.

Como argumento calculo de LET, usamos la función APILARH, como argumento matriz1, usamos la función SECUENCIA, como argumento filas, usamos la función CONTARA, como argumento de CONTARA, ponemos la variable resultado y dividimos entre 6, de esta manera, obtenemos el recuento de filas de una sola columna, como argumento matriz2, ponemos la función ORDENAR, y, ordenamos la variable resultado por la sexta columna.
=LET(a;D2:D10;b;a/BYROW(B2:D10;LAMBDA(x;SUMA(x)));c;K.ESIMO.MAYOR(b;{1;2;3});d;APILARH(A2:D10;BYROW(B2:D10;LAMBDA(x;SUMA(x)));b);resultado;FILTRAR(d;BYROW(INDICE(d;;6);LAMBDA(x;O(x=INDICE(c;1);x=INDICE(c;2);x=INDICE(c;3)))));APILARH(SECUENCIA(CONTARA(resultado)/6);ORDENAR(resultado;6)))
Tenemos el modelo ordenado de menor a mayor.

Copiamos el encabezado, y, damos un formato.

Miguel Angel Franco




Comentarios