Macro para hacer tabla dinamica

31/07/2007 - 21:22 por jaraya | Informe spam
Hola Como puedp hacer para que una tabla dinamica funcione con un control de
boton, pero que al agregar datos a la base, la macro reconosca los nuevos
registros y los tome la tabla dinamica. Todo esto sin que queden celdas
vacias para poder filtrar y agrupar fechas. E intentado con tomar todas las
columnas de la base de datos, pero si quiero agrupar por mes, da error al
existir celdas vacias.
tambien quisiera poner algunos controles que me diseñen la tabla antes de
realizar la macro de tabla dinamica.
saludos jaraya

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
01/08/2007 - 04:58 | Informe spam
hola, !

=> puedes aclarar algunos detalles [que parecen]... *perdidos* ?

__ 1 __
... Como puedp hacer para que una tabla dinamica funcione con un control de boton


__ 2 __
pero que al agregar datos a la base, la macro reconosca los nuevos registros y los tome la tabla dinamica.


__ 3 __
Todo esto sin que queden celdas vacias para poder filtrar y agrupar fechas.


__ 4 __
E intentado con tomar todas las columnas de la base de datos
pero si quiero agrupar por mes, da error al existir celdas vacias.


__ 5 __
tambien quisiera poner algunos controles que me dise#en la tabla antes de realizar la macro de tabla dinamica.



1) que significa: => "... que una tabla dinamica *funcione con*... un control de boton" ?

2) que es lo que pretendes que haga la macro ?
a) el armado de UNA SOLA tabla dinamica [unica vez o cada vez] ?
b) la actualizacion de datos de origen de una tabla dinamica existente ?

3) te serviria si creas/asignas/estableces/... *nombres* con referencia a rangos dinamicos [o de/crecientes] ?

4) [hasta donde se]... no es recomendable incluir celdas vacias en el origen de una TD :-(
que y como es lo que estas haciendo que no te funciona ? [+/- exactamente]

5) que tipo de controles y en donde ?
necesitas sustituir/reemplazar/emular/... la funcionalidad del asistente de las tablas dinamicas ?

saludos,
hector.
Respuesta Responder a este mensaje
#2 jaraya
01/08/2007 - 14:32 | Informe spam
Gracias HM te aclaro para ver si me podes ayudar como siempre.Te respondo
abajo de cada pregunta que me haces.

"Héctor Miguel" escribió:

hola, !

=> puedes aclarar algunos detalles [que parecen]... *perdidos* ?

__ 1 __
> ... Como puedo hacer para que una tabla dinamica funcione con un control de boton.


Tengo una pantlla de carga de datos que me va poniendo los datos en una
hoja, que va formamdo con cada ingreso, la base de datos. La idea es crear en
la pantalla de carga una macro, que mediante un control, genere
automaticamente la Tabla dinamica de los datos ingresados. Despues que borre.

__ 2 __
> pero que al agregar datos a la base, la macro reconosca los nuevos registros y los tome la tabla dinamica.


Bueno es parte de lo explicado antes, como voy a generar permanentemente
nuevos registros, la macro que genere la TD, debiera tomar siempre la
totalidad de los registros.
__ 3 __
> Todo esto sin que queden celdas vacias para poder filtrar y agrupar fechas.


Esto ya lo solucine con un campo que me trasforma la fechas al " Mes"
correspondiente, asi que podria agrupar por mes ,aun con celdas Vacias en la
base de datos.
__ 4 __
> E intentado con tomar todas las columnas de la base de datos
> pero si quiero agrupar por mes, da error al existir celdas vacias.


Es lo mismo de la pregunta 4, al generar simultaneamente un campo de fecha
y que ste de origen a otro campo con el mes, y solucione el tema de que no
permita agrupar las fechas por mes, que es lo que me interesaba.
__ 5 __
> tambien quisiera poner algunos controles que me dise#en la tabla antes de realizar la macro de tabla dinamica.


Trato de ver si existiera la posibilidad de crear un menu, o controles que
al igual que el que posee la herramientas de diseño de las T.Dinamicas, me
permita diseñar antes ,segun los campos que yo quiera la tabla dinamica.Es
decir emular al asistente de la tabla dinamica.

desde ya infinitas gracias .

Jaraya



1) que significa: => "... que una tabla dinamica *funcione con*... un control de boton" ?

2) que es lo que pretendes que haga la macro ?
a) el armado de UNA SOLA tabla dinamica [unica vez o cada vez] ?
b) la actualizacion de datos de origen de una tabla dinamica existente ?

3) te serviria si creas/asignas/estableces/... *nombres* con referencia a rangos dinamicos [o de/crecientes] ?

4) [hasta donde se]... no es recomendable incluir celdas vacias en el origen de una TD :-(
que y como es lo que estas haciendo que no te funciona ? [+/- exactamente]

5) que tipo de controles y en donde ?
necesitas sustituir/reemplazar/emular/... la funcionalidad del asistente de las tablas dinamicas ?

saludos,
hector.



Respuesta Responder a este mensaje
#3 Héctor Miguel
01/08/2007 - 19:22 | Informe spam
hola, !

... pantlla de carga... que me va poniendo los datos en una hoja, que va formamdo con cada ingreso, la base de datos.
... crear en la pantalla de carga una macro, que mediante un control, genere automaticamente la Tabla dinamica [...]



=> [aparentemente] lo unico que se necesita hacer, es que una vez *probaba* alguna macro, la asignes a algun boton
para el asunto de como seria la macro... [probablemente] faltaria que expongas lo que ya has desarrollado -?-

... es parte de lo explicado antes, como voy a generar permanentemente nuevos registros, la macro que genere la TD
debiera tomar siempre la totalidad de los registros.



=> esta parte tapoco expone los detalles necesarios [rangos, columnas/titulos, filas/registros, etc.]
probablemente te serviria probar con instrucciones del tipo:
a) range("a4").currentregion
b) range(range("a4), range("a4").end(xltoright).end(xldown))
c) hay mas variantes, segun formas y costumbres, posibilidad de celdas vacias intermedias, etc.

Trato de ver si existiera la posibilidad de crear un menu, o controles que
al igual que el que posee la herramientas de dise#o de las T.Dinamicas
me permita dise#ar antes, segun los campos que yo quiera la tabla dinamica.
Es decir emular al asistente de la tabla dinamica.



=> [creo que] te saldria mas *barato* si muestras al asistente de las TD por macro -?-
[en caso contrario]... lograr una *emulacion* [con toda la funcionalidad del asistente]... :-(

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#4 jaraya
01/08/2007 - 20:20 | Informe spam
Es complicado explicar sin ver las hojas o libro de excel.Intento nuevamnente:
En la "Hoja 1", tengo celdas, con validaciones y formulas, que llenan una
columna de la A7 hsata la A17.
Con una macro, copio y traspongo estos datos a la "hoja2" , quedan estos
datos pegados como valores en una fila. Esta operacion se repite cada vez que
recalculo los datos en la "Hoja1", y se van pegando en las Filas consecutivas
al dato anterior en la "hoja2". Todos estos datos van formando mi base de
datos. Una macro en la "hoja1" asignada a un boton, copia y pega en la
"Hoja2" buscando siempre la primera fila libre
Para realisar consultas, tengo que crear una tabla dianamica, que tome la
totalidad de los datos, desde la columna "A2" hasta la Colunma "J2" ( en al
Fila 1 estan los nombres de los campos) y que sea capaz de reconocer las
celdas con texto o numeros para que al hacer la TDinamica, no de error al
"agrupar" datos como fechas.
Esta tabla se crea cada vez que deseo una consulta, y se va eliminando la
hoja en la que se crea.
Con cada grupo de datos o filas con datos, al realizar la macro se debiera
generar una TDinamica que recosnosca las filas con datos y cree una tabla
actualizada.
Por ahora para salvar el "Error" al agrupar fechas dentro de la TD, creeun
campo que me toma de la "fecha" la informacion para que extraiga solo el mes,
entonces tengo campo "fecha", y campo "Mes". Con ello puedo agrupar la
informacion por mes.
Para hacer la TD, asigne o inserte un nombre a todas las columnas que van a
contener los datos incluyendo la "fila 1" que tiene los nombres de los campos
: Datos = $A:$J. Este es el rango que usa la TD .

Necesitaria que me expliques si es posible como " muestro elasistente de
Tablas dinamicas con una macro", por favor u algun otro sistema para
prediseñar la TD con una macro.

saludos Jaraya

"Héctor Miguel" escribió:

hola, !

> ... pantlla de carga... que me va poniendo los datos en una hoja, que va formamdo con cada ingreso, la base de datos.
> ... crear en la pantalla de carga una macro, que mediante un control, genere automaticamente la Tabla dinamica [...]

=> [aparentemente] lo unico que se necesita hacer, es que una vez *probaba* alguna macro, la asignes a algun boton
para el asunto de como seria la macro... [probablemente] faltaria que expongas lo que ya has desarrollado -?-

> ... es parte de lo explicado antes, como voy a generar permanentemente nuevos registros, la macro que genere la TD
> debiera tomar siempre la totalidad de los registros.

=> esta parte tapoco expone los detalles necesarios [rangos, columnas/titulos, filas/registros, etc.]
probablemente te serviria probar con instrucciones del tipo:
a) range("a4").currentregion
b) range(range("a4), range("a4").end(xltoright).end(xldown))
c) hay mas variantes, segun formas y costumbres, posibilidad de celdas vacias intermedias, etc.

> Trato de ver si existiera la posibilidad de crear un menu, o controles que
> al igual que el que posee la herramientas de dise#o de las T.Dinamicas
> me permita dise#ar antes, segun los campos que yo quiera la tabla dinamica.
> Es decir emular al asistente de la tabla dinamica.

=> [creo que] te saldria mas *barato* si muestras al asistente de las TD por macro -?-
[en caso contrario]... lograr una *emulacion* [con toda la funcionalidad del asistente]... :-(

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.



Respuesta Responder a este mensaje
#5 Héctor Miguel
02/08/2007 - 01:18 | Informe spam
hola, !

si no me equivoco [al menos... *demasiado*]...
creo que tu problema se puede sintetizar con la siguiente seccion de esta consulta:

Para hacer la TD, asigne o inserte un nombre a todas las columnas que van a contener los datos incluyendo la "fila 1"
que tiene los nombres de los campos: Datos = $A:$J. Este es el rango que usa la TD .



para esta parte del problema, podrias definir un nombre con referencia a rangos dinamicos [o de/crecientes]...
-> visita: Excel - Pivot Tables - Dynamic Data Source
http://www.contextures.com/xlPivot01.html#Dynamic

para esta segunda parte...

Necesitaria que me expliques si es posible como " muestro elasistente de Tablas dinamicas con una macro"
por favor u algun otro sistema para predise#ar la TD con una macro.



op1: puedes consultar otras secciones en la pagina de Degra Dalgleish
[existe una seccion con vinculos o otros sitios con informacion relativa a las TD y VBA]

op2: te paso algunos ejemplos/detalles/tips/... al final del presente :D

si cualquier duda [o informacion adiciona]... comentas ?
saludos,
hector.

si quieres presentar el asistente de TD's y modificar 'inter-actuando' [?] una TD existente [p.e.]
-> el metodo 'PivotTableWizard'... -> CREA una TD [nueva] -> NO 'presenta' el asistente :((
[en este caso] se necesita 'activar' el rango [de la TD 'en concreto'] y 'mostrar' el [dialogo del] asistente de TD's
el siguiente ejemplo 'supone' que tienes activa una seleccion [de varias celdas] y quieres -despues- 'regresar' ahi...
Sub Modificar_TD_x_Asistente()
Dim Volver_A As String, Activa As String
Volver_A = Selection.Address
Activa = ActiveCell.Address
ActiveSheet.PivotTables(1).TableRange1.Activate
Application.Dialogs(xlDialogPivotTableWizard).Show
Range(Volver_A).Activate
Range(Activa).Activate
End Sub

si quieres modificar el rango de origen de todas las TD de la hoja1 hacia la hoja2
el siguiente ejemplo modifica los rangos de origen de todas las TD de la hoja1
Sub Modificar_TD_Source()
Dim Sig As Byte
With Worksheets("hoja1")
For Sig = 1 To .PivotTables.Count
.PivotTables(Sig).SourceData = _
Worksheets("hoja2").Range("a1").CurrentRegion.Address(1, 1, xlR1C1, 1)
Next
End With
End Sub

o puedes cambiar la instruccion de currentregion al usedrange [p.e.]
Worksheets("hoja2").UsedRange.Address(1, 1, xlR1C1, 1)
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida