lunes, 1 de abril de 2013

La función FILA de Excel en una ordenación.

Días atrás, mediante un comentario, un lector planteaba cómo lograr una ordenación directa e inversa desde el valor máximo de un rango
La cuestión planteada por un lector fue:

...Necesito que me rellene datos en una columna pero a partir de la celda que sea 0 y 0 es cuando sea el máximo equivalente de otra columna, pongo un ejemplo:

Tengo una columna con 1,2,3,5,3,2,1 y otra columna al lado vacía, entonces en la columna de al lado, necesitaría que en la casilla correspondiente al máximo de la otra columna se pusiera un 0 y se rellenara hacia arriba y hacia abajo, en este caso se tendría que quedar algo así: 3,2,1,0,-1,-2,-3...

Me pareció interesante el reto, por lo particular de la ordenación, en un conteo desde la celda con valor máximo. Esto sería lo que indicaba y lo que buscamos:

La función FILA de Excel en una ordenación.


La fórmula buscada es:
=FILA(INDIRECTO("$A$"&COINCIDIR(K.ESIMO.MAYOR($A$1:$A$7;1);$A$1:$A$7;0)))-FILA()

Si bien habrá que indicar que sólo es válida en caso de un valor máximo único!!!.


Detallemos y desgranemos nuestra fórmula.
En primer lugar averigüamos el valor máximo del rango con la función
K.ESIMO.MAYOR($A$1:$A$7;1)
valdría también
MAX($A$1:$A$7)
con ellas conocemos, en nuestro ejemplo, que el valor máximo es 5.

El siguiente paso es encontrar la posición dentro del rango de estudio $A$1:$A$7 de este valor máximo, lo que hacemos con la función COINCIDIR:
COINCIDIR(K.ESIMO.MAYOR($A$1:$A$7;1);$A$1:$A$7;0)
En nuestro ejemplo, coincide posición con fila de la celda, en otros casos habría que sumar alguna cantidad por la diferencia...
Al concatenar Fila obtenida al texto "$A$"&fila, tenemos una referencia (una celda). Para convertirla en algo entendible por Excel, anidamos el resultado en la función INDIRECTO.

El siguiente paso es obtener la fila de esa referencia en cuestión, por lo que nuestra referencia la utilizamos como argumento de la función FILA.
Finalizamos el cálculo restando la fila del valor máximo a la fila de cada uno de los elementos del rango, lo que devuelve precisamente la ordenación buscada.


Una manera, similar, pero más sencilla sería directamente:
=COINCIDIR(K.ESIMO.MAYOR($A$2:$A$9;1);$A$2:$A$9;0)+1-FILA()
Como vemos en este otro ejemplo, con filas de cabecera de por medio:

La función FILA de Excel en una ordenación.

No hay comentarios:

Publicar un comentario en la entrada