Reporte de Tabla Dinamica

10 envíos / 0 nuevos
Último envío
Sandy
Imagen de Sandy
Offline
última acción: Hace 14 años 5 meses
alta: 26/10/2009 - 20:50
Puntos: 65
Reporte de Tabla Dinamica

Hola amigos ayudenme por favor
tengo una macro para hacer un reporte con una tabla dinámica, pero la misma naturaleza del reporte requiere que cambien los encabezados con fechas, tengo que meter fechas distintas en los enbabexados cada que hago el reporte  y al insertar esos valores en datos me da error por que la macro tiene grabados los encabezados, ejem 10/5/2009 y el nuevo encabezado es 27/10/2009
como puedo hacer para que meta valores por ubicación tomando los encabezados actuales?
O que puedo hacer?

Gracias por tomarse el tiempo para leer mi petición?

Saludos desde Mexico :-) Bay.

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 12 horas 32 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
Re: Reporte de Tabla Dinamica

Si los datos de los encabezados son pocos, puedes pedir al usuario que introduzca los valores al empezar la macro, por ejemplo mediante InputBox.

Si los datos están ya escritos en la hoja, haz que la macro los lea, por ejemplo recorriendo las celdas donde se encuentran estos encabezados escritos.

En cualquier caso, tendrás que modificar la macro para sustituir los valores de las fechas que están grabados, por unas variables, que en cada caso tomarán unos valores diferentes.

Si puedes adjuntar un ejemplo de la macro y de cómo están los encabezados, te podré ayudar mejor.


------
Ya sé Excel, pero necesito más
La potencia sin control no sirve de nada.
agradecimientos

 

------
Ya sé Excel, pero necesito más.

Sandy
Imagen de Sandy
Offline
última acción: Hace 14 años 5 meses
alta: 26/10/2009 - 20:50
Puntos: 65
Re: Reporte de Tabla Dinamica

Hola :-)

ahora coloco el link del archivo www.mediafire.com/file/j1iwgdzztzt/Tabla Dinamica.xls te explico nuevamente. mi problema es que el reporte lo hago cada semana pero cuando cambio la fecha inicial y corro la macro me da error por que los encabezados no coinciden.

muchas gracias por contestarme.

 

 

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 12 horas 32 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
Re: Reporte de Tabla Dinamica

Respecto de los encabezados de las fechas, como suponía, están escritos en la macro, lo que obligaría a corregir el código cada vez.

Aparte de que no coinciden los nombres de la hoja ni de los campos, he retocado la macro para poder leer las fechas de las celdas donde están escritas. de la siguiente manera:

   For contador = 1 To NumeroFechas
      ' leo la fecha
      FechaActual = CStr(Worksheets(NombreHoja).Cells(2, 3).Offset(0, contador))
      With ActiveSheet.PivotTables("TD1").PivotFields(FechaActual)
          .Orientation = xlDataField
          .Caption = "Suma de " & FechaActual
          .Position = 1
          .Function = xlSum
          .NumberFormat = "#,##0.00"
      End With
   Next

 el bucle contador se repite tantas veces como le definamos en NumeroFechas. en tu caso será 4
Guardo en FechaActual el valor de la celda que se encuentra en el encabezado de la hoja de los datos.
definición de las fechas en tu hoja de datos
Utilizo el contedor del bucle para desplazarme a la derecha de la celda C2 Cells(2,3), mediante Offset

Como se trata de fechas, lo convierto a texto, para que no dé problemas al interpretar los meses y los días, mediante Cstr.
He empleado también una variable NombreHoja para especificar el nombre de la hoja donde están los datos

Utilizo la variable FechaActual para identificar el campo de la tabla dinámica (PivotFields), y para el encabezado, caption, que tendrá


------
Ya sé Excel, pero necesito más
La potencia sin control no sirve de nada.
agradecimientos

AdjuntoTamaño
Image icon macroTabladinamica02.gif4.32 KB

 

------
Ya sé Excel, pero necesito más.

Sandy
Imagen de Sandy
Offline
última acción: Hace 14 años 5 meses
alta: 26/10/2009 - 20:50
Puntos: 65
Re: Reporte de Tabla Dinamica

Hola Hola.

Que crees que me da error. copio el codigo me dices si me equivoque en algo.

 

Sub Tabla()

    NombreHoja = ActiveSheet.Name
    ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:="Hoja1!R2C1:R31C7"). CreatePivotTable TableDestination:="", TableName:="TD1"
    ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
   
    ActiveSheet.PivotTables("TD1").AddFields RowFields:=Array("Companies", "Users", "Localidad", "Datos")
   
   
   For contador = 1 To 4 'NumeroFechas
      ' leo la fecha
      FechaActual = CStr(Worksheets(NombreHoja).Cells(2, 3).Offset(0, contador))
      With ActiveSheet.PivotTables("TD1").PivotFields(FechaActual) 'El error me lo marca en esta linea
          .Orientation = xlDataField
          .Caption = "Suma de " & FechaActual
          .Position = 1
          .Function = xlSum
          .NumberFormat = "#,##0.00"
      End With
   Next
   
   ActiveSheet.PivotTables("TD1").PivotFields("Companies").Subtotals = Array(False, False, False, False, False, False, False, False, False, False, False, False)
   ActiveSheet.PivotTables("TD1").PivotFields("Users").Subtotals = Array(False, False, False, False, False, False, False, False, False, False, False, False)
   With ActiveSheet.PivotTables("TD1").DataPivotField
        .Orientation = xlColumnField
        .Position = 1
    End With
   
 End Sub
 

Estoy desesperada.

:-(

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 12 horas 32 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
nombres de los campos

Te lo comentaba antes, no coinciden los nombres de los campos. En la macro te refieres a companies, users, pero en tu hoja tienes companias, usuarios. También en la macro haces referencia a un campo datos que no existe.

prueba a cambiar los nombres de los campos. Los puedes leer de la hoja, como hicimos con las fechas, por si acaso cambian en el futuro.
Elimina el campo datos en ActiveSheet.PivotTables("TD1").AddFields RowFields:=Array("Companies", "Users", "Localidad", "Datos")

a ver qué tal



------
Ya sé Excel, pero necesito más
La potencia sin control no sirve de nada.
agradecimientos

 

------
Ya sé Excel, pero necesito más.

Sandy
Imagen de Sandy
Offline
última acción: Hace 14 años 5 meses
alta: 26/10/2009 - 20:50
Puntos: 65
Re: nombres de los campos

Hola hola.

disculpas por tardarme tanto pero soy una mujer muy ocupada.

te anexo nuevamente el link con la tabla ahora si sirve sorry. www.mediafire.com/file/rgkyj0mmimo/Tabla Dinamica.xls

elimine el campo Datos con el ejemplo que me diste pero igual no funciono me dices en que me equivoque. Muchas Gracias.

Bay. :-)

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 12 horas 32 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
Re: nombres de los campos

El nombre del campo, Excel lo interpreta como un texto, así que no es lo mismo 10/10/09 que 10/10/2009. Esto se solventa leyendo de las celdas, para que coincidan.

Te adjunto  tu ejemplo modificado, que funciona, al menos en mi equipo. Pruébalo a ver qué tal.

Una pregunta. ¿siempre va a haber los mismos datos, o puede haber más? lo digo porque la macro genera la tabla dinámica con los datos hasta la fila 31. tal vez sería bueno tomar todos los datos que haya. Si tu modelo se basa en una macro, has de prever más posibilidades que puedan darse en el futuro.

 


------
Ya sé Excel, pero necesito más
La potencia sin control no sirve de nada.
agradecimientos

 

AdjuntoTamaño
Office spreadsheet icon Tabla Dinamica.xls40.5 KB

 

------
Ya sé Excel, pero necesito más.

Sandy
Imagen de Sandy
Offline
última acción: Hace 14 años 5 meses
alta: 26/10/2009 - 20:50
Puntos: 65
Re: nombres de los campos


Hola nuevamente.

si mi reporte necesita mas datos, pero hay si le cambio donde dice source data y listo.

Me sigue saliendo un error. 1004

   For contador = 1 To 4 'NumeroFechas
      ' leo la fecha
      FechaActual = CStr(Worksheets(NombreHoja).Cells(2, 3).Offset(0, contador))
      With ActiveSheet.PivotTables("TD1").PivotFields(FechaActual)   '< Esta linea es la que se sombrea pongo el mause arriba y dice FechaActual=0
          .Orientation = xlDataField
          .Caption = "Suma de " & FechaActual
          .Position = 1
          .Function = xlSum
          .NumberFormat = "#,##0.00"
      End With
   Next

muchas gracias.  BAy ;-)

 

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 12 horas 32 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
Re: nombres de los campos

La idea es que no haya que entrar en el código para retocarlo cada vez que lo necesites.

Respecto del error, comprueba la fila de arriba, donde se establece el valor de FechaActual. Comprueba si está leyende de la celda correcta. en concreto fíjate en Cells(2, 3), por si acaso no está en esa celda.

igual queda más claro si empleas Range("C2") o la celda que sea.

------
Ya sé Excel, pero necesito más
La potencia sin control no sirve de nada.
agradecimientos

 

------
Ya sé Excel, pero necesito más.