miércoles, 4 de febrero de 2015

Un rango variable con la función INDICE.

Explicaré en el post del día como utilizar la función INDICE para construir un rango variable, que en este ejemplo utilizaremos para configurar una Validación de datos.
Con esto trataré de dar respuesta a la cuestión planteada por un lector:
...Como seleccionar un Rango Variable según dos celdas:
En una hoja POR tengo una columna con datos de fecha y en otra hoja (Hoja Y) quiero seleccionar un rango variable de la columna de datos con fecha de la hoja POR, asignarle un nombre a dicho rango seleccionado (Para luego insertar una lista desplegable), pero este rango de fechas de la hoja POR tiene que empezar según una fecha seleccecionada en la otra hojas Y (Celda b1) y terminar según la fecha seleccionada en la celda B2 de la hoja Y, Osea yo elijo el inicio y el final del rango mediante dos celdas que tienen una lista desplegable (B1 y B2 de la hoja Y)...


Partimos de las siguiente información:

Un rango variable con la función INDICE.



la idea es, por tanto, clara. A partir de las fechas dadas en las celdas B1 y B2, deberá aparecer en la celda validada D2 los valores correspondientes al intervalo de fechas dadas.

Antes de desplegar la fórmula construida, deberé recordar la característica de la función INDICE que permite tomar como referencia el dato devuelto!!.

El trabajo consiste, entonces, en construir la siguiente fórmula:
=DESREF((INDICE(Hoja1!$F:$F;COINCIDIR(Hoja1!$B$1;Hoja1!$F:$F;0)):INDICE(Hoja1!$F:$F;COINCIDIR(Hoja1!$B$2;Hoja1!$F:$F;0)));0;1)

que he asignado a un Nombre Definido (le he llamado: fechas_V).
precisamente este nombre definido es el que emplearemos al generar la validación de datos sobre la celda D2:

Un rango variable con la función INDICE.



Una vez mostrados los pasos a seguir, explicaremos la fórmula en cuestión:
=DESREF((INDICE(Hoja1!$F:$F;COINCIDIR(Hoja1!$B$1;Hoja1!$F:$F;0)):INDICE(Hoja1!$F:$F;COINCIDIR(Hoja1!$B$2;Hoja1!$F:$F;0)));0;1)
Lo importante es la primera parte, o el ancla de la función DESREF:
INDICE(Hoja1!$F:$F;COINCIDIR(Hoja1!$B$1;Hoja1!$F:$F;0)):INDICE(Hoja1!$F:$F;COINCIDIR(Hoja1!$B$2;Hoja1!$F:$F;0))
el primer INDICE, por si solo, devuelve el día coincidente con B1; de igual forma el segundo INDICE devuelve el del día que aparece en B2... lo interesante es que además de devolver el día correspondiente, internamente devuelve la referencia concreta.
Para nuestro ejemplo, para B1 (día 05/01/2015) sería la celda/referencia: F7
y para B2 (día 12/01/2015) sería la referencia: F14
finalmente construimos el rango que necesitábamos uniendo ambas referencias por los dos puntos, esto es, consiguiendo el rango F7:F14.

Para conseguir no las fechas si no los valores asociados, empleamos la función DESREF(rango;0;1), que no retorna los valores de una columna a la derecha (es decir, de G7:G14).

No hay comentarios:

Publicar un comentario en la entrada