Anzeige
Archiv - Navigation
1224to1228
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

Pivot Datenbereich

Pivot Datenbereich
Michael
Hallo Leute,
ich habe eine Pivottabelle, deren Datenbereich auf einem extra sheet ist. Diese habe ich gelöscht und war erstaunt, dass ich die Pivottabelle trotzdem noch verwenden kann. Muss wohl irgendwo im Hintergrund gespeichert werden. Klicke ich einzelne Felder an, erhalte ich auch wieder die dazugehörigen Datensätze; soweit so gut.
Hier meine Frage:
Ich würde den kompletten (versteckten) Datenbereich der Pivottabelle gerne per VBA auslesen, um ihn dann für eine neue Auswertung zu benutzen.
Hat jemand eine Idee wie mir das gelingen könnte?
Besten Dank,
Michael

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

Betreff
Benutzer
Anzeige
AW: Pivot Datenbereich
20.08.2011 02:40:21
fcs
Hallo Michael,
Kopiere das Tabellenblatt mit dem Pivottabellenbereich.
Dann kannst du in dem kopierten Blatt den Pivotbericht anders zusammenstellen.
Die beiden Pivottabellen benutzen den gleichen PivotCache.
Die PivotCache-Daten bleiben erhalten solange die Pivottabellen-Option "Quelldaten mit Datei speichern" nicht deaktiviert wird.
Gruß
Franz
AW: Pivot Datenbereich
22.08.2011 16:47:59
Michael
Hallo Franz,
vielen Dank für den Hinweis. Das hilft mir in 90% meiner Fälle weiter und lässt sich auch gut mit VBA automatisieren.
Ich habe jedoch auch zwei Pivottabellen, deren Datensheet gelöscht wurde, die ich gerne in einer PT zusammenfügen würde. Ich dachte dafür muss es doch eine Möglichkeit geben, diesen "Cache" der beiden PT auszulesen und im Anschluss zu einem Flatfile zusammenzufügen. Danach kann ich darauf dann eine neue PT legen.
Hast du eine Idee wie ich das mit VBA hinbekomme?
Grüße,
Michael
Anzeige
AW: Pivot Datenbereich
23.08.2011 08:49:59
fcs
Hallo Michael,
ich hab keine Ahnung, wie man den Datencache direkt auslesen kann,
Evtl. kann man einen Pivot-Bericht so erstellen, das alle Pivot-Felder als Reihenfelder angezeigt werden und zusätzlich ein Feld mit der Funktion Anzahl.
Danach kann man dann die Daten wieder herstellen, indem man die Pivotdaten kopiert und als Werte einfügt.
Danach die Leerzellen in den Reihen wieder auffüllen mit Wert aus Zeile darüber und dann noch alle Zeilen, die Als Anzahl mehr als 1 anzeigen entsprechend oft kopiert. Wird aber zemlich kompliziert.
Gruß
Franz
AW: Pivot Datenbereich
23.08.2011 13:31:34
Michael
Hallo Franz,
ja, das wird dann ziemlich kompliziert. Mal sehen wie ich das löse. Trotzdem vielen Dank für deine Mühe.
Gruß
Michael
Anzeige
AW: Pivot Cache-Daten auslesen
24.08.2011 01:48:42
fcs
Hallo Michael,
wenn die Originaldatenquelle nicht mehr verfügbar ist, dann kannst du mit folgendem Makro die im Pivot-Cache vorhandenen Daten in eine Tabelle einlesen.
Getestet hab ich mit einer relativ kleinen Tabelle. Die Quelle des Pivotberichts war ursprünglich eine Exceltabelle.
Gruß
Franz
Sub getDatafromPivotCache()
Call PivotCacheDaten(pvCache:=ActiveWorkbook.Worksheets("Tabelle2").PivotTables(1).PivotCache) _
End Sub
Sub PivotCacheDaten(pvCache As PivotCache, Optional wksData As Worksheet)
Dim pvTab As PivotTable, pvField As PivotField
Dim sName As String
Dim ZeileCopy As Long, AnzZeilen As Long, SpErgebnis As Long, Zeile As Long, Spalte As Long
Application.ScreenUpdating = False
'Zieltabelle anlegen, wenn kein Ziel als Parameter angegeben wurde
If wksData Is Nothing Then
Worksheets.Add after:=ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count)
Set wksData = ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count)
End If
Set pvTab = pvCache.CreatePivotTable(Tabledestination:=wksData.Range("A1"))
With pvTab
'Alle Spaltentitel als Reihenfelder
For Each pvField In .PivotFields
If Not pvField.IsCalculated Then .AddFields RowFields:=pvField.Name, addtotable:=True
Next
'Alle Reihenfelder ohne Zwischenergebnisse anzeigen
For Each pvField In .RowFields
pvField.Subtotals = Array(False, False, False, False, False, False, _
False, False, False, False, False, False)
Next
.ColumnGrand = False
.RowGrand = False
sName = .RowFields(.RowFields.Count).Name
.AddDataField .PivotFields(sName), Caption:=sName & "Test", Function:=xlCount
'nächste Zeile erforderlich da das Reihenfeld in den Datenbereich verschoben wurde
.AddFields RowFields:=sName, addtotable:=True
End With
wksData.Activate
With pvTab
'Werte im Pivotbericht kopieren und unterhalb einfügen
AnzZeilen = .TableRange1.Rows.Count
SpErgebnis = .TableRange1.Columns.Count
.TableRange1.EntireRow.Copy
wksData.Cells(AnzZeilen + 1, 1).PasteSpecial Paste:=xlPasteValues
'Zeilen des Pivot berichts löschen
.TableRange1.EntireRow.Delete
End With
With wksData
'Zeile mit Datenbereichsname löschen
.Rows(1).Delete
'Alle leeren Zellen mit Daten aus Zeile oberhalb auffüllen
For Zeile = 3 To AnzZeilen - 1
For Spalte = 1 To SpErgebnis - 1
If IsEmpty(.Cells(Zeile, Spalte)) Then .Cells(Zeile, Spalte) = .Cells(Zeile - 1, Spalte) _
If .Cells(Zeile, Spalte) = "(Leer)" Then .Cells(Zeile, Spalte).ClearContents
Next
Next
'Alle Zeilen mit Anzahl > 1 entsprechend oft kopieren
ZeileCopy = AnzZeilen - 1
For Zeile = 2 To AnzZeilen - 1
AnzZeilen = .Cells(Zeile, SpErgebnis)
If AnzZeilen > 1 Then
.Cells(Zeile, SpErgebnis) = 1
Do Until AnzZeilen = 1
ZeileCopy = ZeileCopy + 1
.Rows(Zeile).Copy Destination:=.Cells(ZeileCopy, 1)
AnzZeilen = AnzZeilen - 1
Loop
End If
Next
'Ergebnisspalte löschen
.Columns(SpErgebnis).Delete
.Columns.AutoFit
End With
Application.ScreenUpdating = True
Range("A2").Select
ActiveWindow.FreezePanes = True
End Sub

Anzeige
Pivot Datenbereich aus Cache wiederherstellen
23.08.2011 13:55:44
NoNet
Hallo Michael,
wenn der PIVOT-Cache aus einer gewöhnlichen Excel-Liste erzeugt wurde und die Pivot-Tabelle nicht zu komplex ist, kann man den Datenbereich mit folgendem Makro wieder herstellen :
Sub PivotDatenWiederherstellen()
'Stellt für die erste (einfache) PIVOT-Tabelle die relevanten Daten
'aus dem Datencache auf einem neuen Blatt wieder her.
'23.08.2011, NoNet - www.excelei.de
With ActiveSheet.PivotTables(1)
.RowGrand = True
.ColumnGrand = True
.TableRange1.SpecialCells(xlCellTypeLastCell).ShowDetail = True
End With
End Sub
Gruß, NoNet
Exceltreffen 28.-30.10.2011 in Chemnitz
Ein Treffen für alle Excel-Freunde und Besucher deutschsprachiger Excel-Foren.
Alle Infos - Programm - Anmeldung - Teilnehmerliste etc. gibt es auf
http://www.exceltreffen.de/index.php?page=211
Wir freuen uns auf euch...

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige