sábado, 31 de diciembre de 2011

Rangos dinamicos utilizando la funcion DESREF y CONTARA

Que son Rangos dinámicos?
Son rangos que van creciendo a medida que crecen los registros en mi hoja de excel automaticamente sin tener que redifinir estos manualmente.
podemos nombrar los rangos que utilizamos, pero lo habitual es que estos rangos no sean fijos, es decir, no tenga siempre la misma dimensión,el mismo número de registros. Es en este punto es cuando Excel nos proporciona la posibilidad de crear un rango dinámico. Y lo haremos utilizando la función DESREF, anidando otra función importante como CONTARA en ella.

Supongamos un listado de nombres, que no tenemos aún finalizado,se incrementa (o decrece) con el tiempo. Lo primero que tenemos que realizar es el crear un nombre, al que llamaremos Nombres y asignaremos la característica de dinámico mediante la función:
=DESREF(Hoja1!$A$2;0;0;CONTARA(Hoja1!$A:$A)-1;1)

La sintaxis de esta fórmula es la siguiente; DESREF(referencia ;filas;columnas;alto;ancho) donde:

referencia: la celda en el ángulo superior derecho de la lista (en nuestro caso será A2);
filas: para nuestro uso será siempre 0
columnas: para nuestro uso será siempre 0
alto: la cantidad de filas en nuestra lista(en nuestro caso la funcion CONTARA)
ancho: la cantidad de columnas en nuestra lista.(en nuestro caso 1)

Para convertir esta fórmula en dinámica, usaremos la función CONTARA para determinar los valores de los parámetros alto.
Ahora nos vamos al menu de excel Insertar-Nombre-Definir y damos el nombre a nuestro rango:Nombres y escribimos la funcion donde dice se refiere a:
=Desref(Hoja1!$A$2;0;0;contara(Hoja1!$A:$A)-1;1) y damos aceptar.



En esta ocasión empleamos DESREF para determinar un rango que empieza en la celda A2 y que tendrá un alto dado por la función CONTARA(A:A)-1, es decir, cuenta todas las celdas no vacias de la columna A, y le resta Uno para discriminar el encabezado de la columna.
Una vez generado el nombre 'Nombres', ya podemos emplearlo como por ejemplo en una validacion con la caracteristica lista.

Ahora nos paramos en la celda D2, vamos al menu de excel Datos-Validacion-Definir y en permitir selecionamos lista y en origen colocamos el nombre del rango dinámico que creamos:Nombres


Ahora al dar click en la celda D2 nos aparece una lista de los Nombres del rango dinámico.


La verdadera ventaja de esta función es visible cuando incrementamos el listado de nombres; situación por la que no nos tendremos que procupar a la hora de redefinir rangos ni funciones, ya que tal cual quedó configurada reconocerá los nuevos elementos del listado.
Si agregamos mas registros a nuestra columna, el rango dinámico se ajustará.


Cuenta el número de registros existentes en la columna A (le resta uno),el resultado es la altura del rango dinámico a contar desde la celda de inicio A2.
Nuestra función DESREF, aplicada en esta forma, es igualmente válida si pretendiéramos ampliar dinámicamente tanto el alto como el ancho de nuestro rango, ya que los argumentos de la función son:
=DESREF(celda inicio rango;num filas; num columnas; alto; ancho)
Ampliaremos en posteriores entradas otros usos de la función DESREF. Bajar archivo ejemplo Aquí.