sábado, 9 de mayo de 2015

La función DESREF en Excel

La función DESREF en Excel nos devuelve una referencia a un rango de celdas que ha sido desplazado respecto a otra referencia que hemos especificado ¿Suena complicado? Vaya que es complicado explicar, pero la función DESREF es uno de esos tesoros escondidos de Excel.

La función DESREF y los Boy Scouts

Después de pensar cómo explicar mejor la función DESREF he recordado un juego que teníamos en los “Boy Scouts” cuando estábamos aprendiendo a utilizar la brújula.  El juego consistía en encontrar el tesoro escondido siguiendo las instrucciones dadas:
  1. Colocarse en el árbol marcado con la banda amarilla
  2. Caminar 50 pasos hacia en Norte
  3. Caminar 35 pasos al Oeste
  4. Encontrarás el tesoro debajo de una piedra.
Si seguíamos las instrucciones correctamente entonces encontrábamos el tesoro escondido justamente en la ubicación indicada. Pero ¿qué tienen que ver los Boy Scouts con la función DESREF en Excel? Imagina que podemos dar a Excel un conjunto de instrucciones para que “encuentre el tesoro” dentro de una hoja:
  1. Colocarse en la celda B5
  2. Moverse 50 filas hacia abajo
  3. Moverse 35 columnas a la derecha
  4. Devolver la referencia de la celda donde te encuentres
Podemos hacer que Excel siga estos pasos utilizando la función DESREF. Los pasos anteriores serán  seguidos al utilizar la siguiente fórmula:
=DESREF(B5, 50, 35)
Con esta fórmula Excel nos devolverá la referencia a la celda AK55 ya que a partir de la celda B5 se moverá 50 filas hacia abajo y 35 columnas a la derecha.

Sintaxis de la función DESREF

Con la analogía previamente hecha será más sencillo explicar el detalle de la función DESREF en Excel y su sintaxis.
Sintaxis de la función DESREF
  • Ref (obligatorio): La referencia a la celda o rango donde se iniciará el desplazamiento.
  • Filas (obligatorio): El número de filas a moverse. Si el valor es positivo se moverá hacia abajo y si es negativo se moverá hacia arriba.
  • Columnas (obligatorio): El número de columnas a moverse. Si el valor es positivo se moverá hacia la derecha y si es negativo se moverá a la izquierda.
  • Alto (opcional): El número de filas que deseamos que nos devuelva como resultado.
  • Ancho (opcional): El número de columnas que deseamos que nos devuelva como resultado.
De esta manera, para indicar a la función DESREF que necesitamos desplazarnos 5 filas hacia abajo y 3 columnas a la derecha a partir de la celda A1 utilizaremos la siguiente fórmula:
=DESREF(A1, 5, 3)

Notas importantes sobre la función DESREF

Algo muy importante que debo decir sobre la función DESREF en Excel es que si el primer argumento de la función es una referencia a una sola celda entonces la función nos devolverá de manera la referencia a una sola celda. Observa la siguiente imagen:
Ejemplo de la función DESREF en Excel
Ya que la función DESREF nos devuelve la referencia a la celda C4 es posible mostrar su valor en la celda C7. Ahora considera lo siguiente, si en lugar de especificar una sola celda como el primer argumento de la función proporcionamos un rango, entonces nos daremos cuenta que la función DESREF devuelve una referencia a un rango y no podremos mostrar su resultado sino que obtendremos un error:
Error al mostrar el valor devuelto por la función DESREF en Excel
El error no está en la función DESREF sino al intentar desplegar su resultado en la celda C7 cuando en realidad nos está devolviendo una referencia a un rango. Para este ejemplo específico la función DESREF devuelve la referencia C3:C4 y lo puedo demostrar utilizando la función SUMA sobre el resultado de la función DESREF:
Sumando el rango devuelto por la función DESREF
Observa que no he cambiado la función DESREF sino que solamente apliqué la función SUMA al rango de celdas devuelto por la función. En este ejemplo la función SUMA hace la operación SUMA(C3:C4) que es precisamente el resultado mostrado en la celda C7. Por esta razón es que frecuentemente observarás que lafunción DESREF es utilizada en junto con otras funciones.
Ya te has dado cuenta también que si el primer argumento es una referencia a una sola celda, la función DESREF devolverá también una sola celda. Pero si el primer argumento es un rango de celdas entonces obtendremos también una referencia a un rango de celdas.

Ejemplos de la función DESREF

Ya hemos visto varios ejemplos de la función DESREF en Excel, solo mostraré algunos ejemplos adicionales para dejar más claro el uso de la función. En el siguiente ejemplo coloco en el segundo argumento de la función un número negativo que hará un desplazamiento de filas hacia arriba:
Desplazamiento superior con la función DESREF
Ahora quiero mostrarte otro ejemplo pero utilizando el cuarto y quinto argumento de la función DESREF. Ya sabemos que al indicar una referencia a una sola celda en el primer argumento de la función DESREF obtendremos como resultado la referencia a una sola celda. Este comportamiento lo puedes modificar si utilizas el cuarto y quinto argumento de la función. En la siguiente fórmula estoy indicando a la función DESREF iniciar en la celda A4 y desplazarse hacia arriba y a la derecha.
=SUMA(DESREF(A4, -2, 2, 3, 2))
Aunque he especificado una sola celda de inicio también estoy indicando a la función que a partir de la celda destino encontrada me devuelva en total 3 filas y dos columnas. En la siguiente imagen puedes observar el rango devuelto con un fondo de color rojo:
Ejemplo de la función DESREF

Usos prácticos de la función DESREF

A continuación mencionaré algunos usos prácticos de la función DESREF en Excel. Para cada uno de ellos podrás leer un artículo con información adicional sobre el uso de la función.
  • Crear un rango dinámico. Excel nos permite asignar un nombre a un rango de celdas para después hacer referencia a ellas. Sin embargo, si necesitamos aumentar o disminuir el tamaño de dicho rango necesitamos editar continuamente el nombre y su rango asociado. Este problema lo podemos solucionar utilizando la función DESREF. Consulta el artículo Nombres de rango dinámicos.
  • Actualizar una lista desplegable. Las listas desplegables, que forman parte de la validación de datos en Excel, se basan en un rango de datos. Si creamos un rango dinámico sobre el cual se base la lista desplegable, entonces lograremos que la lista se actualice automáticamente. Lee más al respecto en el artículo Cómo actualizar una lista desplegable en Excel.
  • Actualizar listas dependientes. Si tenemos dos listas y deseamos que las opciones de una dependan de la selección de otra entonces podemos utilizar la función DESREF para crear dicha dependencia. Lee más al respecto en el artículo Cambiar valores de una lista basados en la selección de otra lista.
Así como algunas otras funciones de Excel, la función DESREF no es de mucha utilidad si la usamos sola, pero si la combinamos con algunas otras funciones nos ayudará a implementar muy buenas soluciones en Excel.

No hay comentarios:

Publicar un comentario