Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1208to1212
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

ERKLÄRUNG: Pivottabellen Cache???

ERKLÄRUNG: Pivottabellen Cache?
Maris
Hi zusammen,
was ist den bitte eine PT-Cache? Und warum hab e ich auf einem Tabellenblatt mehr Pivottabellen als ich eigentlich sehen kann? Was sind führende Pivottabellen?
Hab mich immer schon gewundert warum manche Pivottabellen sich änderen obwohl ich garnicht auf aktualisieren gegangen bin...
Bin grad völlig verwirrt... Kann mir das jemand einfach erklären?
Gruß,
Maris

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: ERKLÄRUNG: Pivottabellen Cache?
26.04.2011 14:25:28
Rudi
Hallo,
imho ist das die zugrunde liegende Abfrage.
Wenn du eine 2. PT für die gleiche Tab. erstellen willst kommt ja die Abfrage, ob du als Datenquelle die erste PT nehmen willst.
Wenn ja, sind die PT nicht unabhängig voneinander, sondern wenn du eine aktualisierst, wird auch die andere aktualisiert. Dito, wenn du einfach das Blatt mit einer PT oder eine PT kopierst. Alle beruhen auf dem gleichen Cache.
Und warum hab e ich auf einem Tabellenblatt mehr Pivottabellen als ich eigentlich sehen kann?

Verstehe ich nicht.
Gruß
Rudi
Anzeige
Code gefunden :-) anpassen für bestimmte Mappen
26.04.2011 14:26:02
Maris
Hallö,
nach grundlegender Recherche, hab ichs jetzt geschnallt. Um speicherplatz zu sparen habe ich folgenden Code gefunden der die Datenquelle angleicht:
Option Explicit
Sub PivotCachesAnzeigen()
'Zählt alle Pivot-Tabelle und zeigt deren
'Datenquelle an
Dim p, anz, piv
For Each p In Worksheets
anz = anz + p.PivotTables.count
Next
For Each p In ActiveWorkbook.PivotCaches
piv = piv & p.SourceData & vbLf
Next
MsgBox "Mappe enthält " & anz & " Pivot-Tabellen und " & _
vbLf & ActiveWorkbook.PivotCaches.count & _
" Pivot-Datenquellen :" & vbLf & vbLf & piv
End Sub
Sub ChangePivotCache()
'Dimesionierung der Variablen
Dim pt                        As PivotTable
Dim wks                       As Worksheet
'Alle Tabellenblätter der Mappe durchlaufen
For Each wks In ActiveWorkbook.Worksheets
'Alle Pivot-Tabellen eines Tabellenblattes durchlaufen
For Each pt In wks.PivotTables
'jeser PT den Cache der ersten PT auf dem Tabellenblatt 'Pivot' zuweisen (Name des  _
Tabellenblattes anpassen)
pt.CacheIndex = Sheets("Pivot Revenue").PivotTables(1).CacheIndex
Next pt
Next wks
End Sub
Der code soll jetzt aber nicht alle Tabellenblätter durchlaufen sondern nur bestimmte... das müßte mann doch hier anpassen können oder?
    'Alle Pivot-Tabellen eines Tabellenblattes durchlaufen
For Each pt In wks.PivotTables
Letzte Frage wenn der Cache überall gleich eingestellt wurde, reicht es dann wenn ich 1 bei einer beliebigen Pivot auf aktualisieren gehe, doer muß ich weiterhin alle aktualisieren, wenn die Pivots auf verschiedenen Tabellenblättern sind?
Gruß,
Maris
Anzeige
AW: Code gefunden :-) anpassen für bestimmte Mappen
26.04.2011 14:32:36
Rudi
Hallo,
das musst du hier anpassen:
    'Alle Tabellenblätter der Mappe durchlaufen
For Each wks In ActiveWorkbook.Worksheets

Gruß
Rudi
AW: Code gefunden :-) anpassen für bestimmte Mappen
26.04.2011 15:15:18
Maris
So vielleicht?
For Each wks In ThisWorkbook.Worksheets
With wks
'Für alle Tabellennamen hinter "case is ="  (Namen.... Anpassen, erweitern)
Select Case .Name
Case "tabelle1"

Next wks

funktioniert leider so nicht...
26.04.2011 16:29:06
Maris
nimmt immer alle Tabellen her.
AW: funktioniert leider so nicht...
26.04.2011 18:32:06
fcs
Hallo Maris,
die Case-Prüfung unterscheidet zwischen Gross- und Kleinschreibung. Deshalb genau Schreibweise der Tabellennamen beachten.
Syntax im Code muss dann etwa wie folgt aussehen, wobei ich für den Namen des Tabellenblatts mit der Basis-PT und der Index-Nummer der Basis-PT Konstanten angelegt hab. Die zusätzliche If-Prüfung ist nur erforderlich, wenn das Blatt mit der Basis-PT mehr als eine PT enthält und auch deren Cache angepasst werden soll.
Gruß
Franz
Sub ChangePivotCache()
'Dimesionierung der Variablen
Dim pt                        As PivotTable
Dim wks                       As Worksheet
'Blattname und Index-Nummer in den Konstanten ggf. anpassen
Const sBasisPT As String = "Pivot Revenue" 'Name des Tabellenblatts mit der Basis- _
Pivottabelle
Const iBasisPT As Integer = 1 'Index-Nummer der Basis-Pivottabelle
'Alle Tabellenblätter der Mappe durchlaufen
For Each wks In ActiveWorkbook.Worksheets
With wks
Select Case .Name
Case "Tabelle1", "Tabelle3", sBasisPT 'in diese Blättern PT-Cache anpassen
'Alle Pivot-Tabellen des Tabellenblattes durchlaufen
For Each pt In wks.PivotTables
If .Name = sBasisPT And pt.Name  wks.PivotTables(iBasisPT).Name Then
'Für Basis-Pivottabelle den Cache nicht neu zuweisen
Else
'jeder PT den Cache der Basis-Pivottabelle zuweisen
pt.CacheIndex = Sheets(sBasisPT).PivotTables(iBasisPT).CacheIndex
End If
Next pt
Case Else
'do nothing
End Select
End With
Next wks
End Sub

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige