Tabla dinámina a partir de un rango

26/08/2003 - 10:33 por Juan | Informe spam
Hola a todos,

tengo un libro Excel con tres hojas:

- la primera solo es un formulario que recoge una serie de datos (una fecha,
un importe, un concepto de gasto...). La macro asociada añade los datos
recogidos en el formulario a un listado, que esta en la segunda hoja.

- la segunda hoja recoge el listado. Al final es una lista de unos 300
registros (por ahora) y a la que se añaden filas desde el formulario de la
primera hoja. Cada columna de esta tabla se corresponde con los campos
recogidos en el formulario (fecha, importe...)

- y en la tercera tengo una serie de tablas dinámicas, que aunque no
controlo casi nada, con el asistente he conseguido mas o menos lo que
quiero.

Mi problema es que cada vez que añado registros al listado, tengo que
rehacer la tabla dinámica porque el rango de datos ahora es otro (con mas
registros). Imagino que se puede hacer algo para que la tabla dinamica se de
cuenta de que he añadido mas registros a la tabla, pero no se como hacerlo.

¿Alguna idea?

Gracias y un saludo

Juan Magaña
 

Leer las respuestas

#1 Fernando Arroyo
26/08/2003 - 12:21 | Informe spam
Tienes varias posibilidades. Sin recurrir a VBA, puedes crear un rango dinámico con los "datos origen" para las tablas dinámicas. Esto lo podrás hacer siempre que la primera columna (o la última) del rango de dichos datos no tenga celdas vacías. Suponiendo que el rango comenzará en la celda A1 de Hoja1 y que la columna sin celdas vacías fuera la A, tendrías que hacer Insertar->Nombre->Definir, teclear un nombre para el rango (por ejemplo, DatosTablaDinámica), y en "Se refiere a:" poner:

ÞSREF(Hoja1!$A$1;0;0;CONTARA(Hoja1!$A:$A);3)

(Dependiendo de tu separador de listas, podrías tener que cambiar los ; por ,)
Es importante usar el signo $ para convertir en absolutas todas las referencias porque si no se hace así el rango con nombre no será admitido por el asistente para tablas dinámicas.

Ahora tendrías que seleccionar cada una de las tablas dinámicas, entrar en el asistente para tablas dinámicas, volver al primer paso del mismo, y poner como rango DatosTablaDinámica. Con esto conseguirás que el rango "crezca" según se vayan añadiendo filas (siempre que no queden filas vacías entre medias, insisto), pero las tablas no se actualizarán automáticamente según se vayan añadiendo dichas filas: tendrías que actualizarlas a mano. Sería posible que se actualizaran automáticamente al entrar en la hoja donde están, pero habría que recurrir a VBA:

Private Sub Worksheet_Activate()
Dim ptP As PivotTable

For Each ptP In ActiveSheet.PivotTables
ptP.RefreshTable
Next ptP

Set ptP = Nothing
End Sub

El código anterior iría en el módulo de la hoja donde estén las tablas dinámicas (click derecho sobre su etiqueta->Ver código).
Un saludo.


Fernando Arroyo
MS MVP - Excel



"Juan" escribió en el mensaje news:bif612$8iijp$
Hola a todos,

tengo un libro Excel con tres hojas:

- la primera solo es un formulario que recoge una serie de datos (una fecha,
un importe, un concepto de gasto...). La macro asociada añade los datos
recogidos en el formulario a un listado, que esta en la segunda hoja.

- la segunda hoja recoge el listado. Al final es una lista de unos 300
registros (por ahora) y a la que se añaden filas desde el formulario de la
primera hoja. Cada columna de esta tabla se corresponde con los campos
recogidos en el formulario (fecha, importe...)

- y en la tercera tengo una serie de tablas dinámicas, que aunque no
controlo casi nada, con el asistente he conseguido mas o menos lo que
quiero.

Mi problema es que cada vez que añado registros al listado, tengo que
rehacer la tabla dinámica porque el rango de datos ahora es otro (con mas
registros). Imagino que se puede hacer algo para que la tabla dinamica se de
cuenta de que he añadido mas registros a la tabla, pero no se como hacerlo.

¿Alguna idea?

Gracias y un saludo

Juan Magaña


Preguntas similares