
El gráfico al pie de la tabla muestra las ventas por año del Departamento 1.
Nuestro objetivo es convertir este gráfico en un gráfico interactivo, de manera que cuando seleccionamos una celda del rango A3:A12, el gráfico muestre las ventas del departamento seleccionado.
Para lograr esto usaremos las siguientes técnicas:
1 - Uso de nombres en la fórmula SERIES del gráfico, como mostramos en la nota sobre gráficos Excel dinámicos;
2 - Programación de eventos de la hoja que contiene la tabla de datos y el gráfico. Quien no esté familiarizado con la programación de eventos en Excel puede leer mis notas sobre el tema en mi blog sobre Excel.
Empezamos por definir los nombres
Departamento =DESREF(Hoja1!$A3;0;0)
Datos =DESREF(Hoja1!$A3;0;1;1;4)
Al definir los nombres, la celda activa tiene que ser la celda A3 (en nuestro ejemplo, por supuesto). Además debemos prestar atención al hecho que la dirección de la celda es semi-variable (absoluta para la columna y variable para la fila).

Una vez definidos los nombres, reemplazamos el rango del título y el rango de los datos con los nombre. Antes de reemplazar los rango, la fórmula SERIES se ve así

Para reemplazar los rangos, seleccionamos la series de datos en el gráfico y abrimos el diálogo de Datos de origen

En la casilla Nombre, dejamos la referencia Hoja1! Y reemplazamos A3 por el nombre "Departamento". En la casilla Valores hacemos lo mismo con "Datos"

Ahora, si seleccionamos un departamento en el rango A3:A12 y apretamos F9 para forzar a Excel a recalcular la hoja, veremos que el gráfico muestra los datos del departamento elegido.
Nuestro gráfico, si bien es interactivo, es "semiautomático" ya que debemos apretar F9 para que se produzcan los cambios.
Para automatizar completamente nuestro gráfico programamos un evento para la Hoja1 (en nuestro ejemplo).
En la pestaña de la hoja apretamos el botón derecho del mouse y elegimos la opción "ver código"

Esto nos lleva al módulo de la hoja en el editor de Visual Basic. Aquí ponemos este código
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Union(Range("A3:A12"), Target).Address = Range("A3:A12").Address _
Then ActiveSheet.Calculate
End Sub
Este código programa el evento SelectionChange, es decir, cada vez que seleccionamos una celda, si ésta está dentro del rango A3:A12, la hoja será recalculada.
Con esto nuestro gráfico es totalmente automático y cada vez que seleccionemos un departamento, los datos relevantes aparecerán representados en el gráfico.
El archivo con el ejemplo se puede descargar aquí.