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

GetPivotData

GetPivotData
windalf
Hallo,
angenommen man will in einer großen Schleife in VBA GetPivotData nutzen...
Nun ist es so, dass nicht immer alle Felder angesprochen werden sollen...
ALso Beispiel... Einmal sollen die Kosten für jede einzelne Materialnummer gebildelt werden und ein anderes mal über all Materialnummern...
Kann man dem GetPivotData irgendwie beibringen, dass ein Filter "nicht selektiv ist" oder muss man da zwangsweise mit if then else arbeiten?
Vereinfachtes Beispiel: pivKosten sei ein Pivotable...
pivKosten.GetPivotData("Summe von Kosten", "MatNr", Filter(i))
Kann ich irgendwie dem Parameter Filter auch sagen, dass dort kein Wert drin stehen soll und der dann "alles" nimmt (also nicht auf MatNr filtert?)
Danke Gruß Windi...

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: GetPivotData
09.04.2011 16:03:38
fcs
Hallo Windi,
mit "GetPivotData" kannst du "nur" die Daten abfragen, die aktuell in der Pivot-Tabelle angezeigt/bereichnet sind.
Um eine Auswertung über alle Materialnumern machen zu können muss du vor der Ermittlung der Daten die Filter des Feldes zurücksetzen. Wenn du innerhalb des Pivotberichtes Zwischen- und/oder Gesamtergebnisse anzeigen läßt, dann kannst du mit GetPivotData diese auch direkt abfragen. Ansonsten muss du halt die Einzelergebnisse in Schleifen summieren, wobei die Verwendung der VisibleItems sinvoll ist.
Gruß
Franz
Beispielmakros:
Sub aaPivottestEinzeln()
Dim Wert As Double, pivKosten As PivotTable, i As Integer
Dim ptField As PivotField
Set pivKosten = Worksheets("Tabelle3").PivotTables(1)
Set ptField = pivKosten.RowFields("MatNr")
'Einzelwerte der sichtbaren Items
For i = 1 To ptField.VisibleItems.Count
Wert = pivKosten.GetPivotData("Summe von Kosten", "MatNr", _
IIf(ptField.VisibleItems(i) = "(blank)", "(Leer)", ptField.VisibleItems(i)))
MsgBox ptField.Name & ": " & ptField.VisibleItems(i) & vbLf & _
"Summe Kosten: " & Wert
Next
End Sub
Sub aaPivottestAlle()
Dim SumWert As Double, pivKosten As PivotTable, i As Integer
Dim ptField As PivotField
Set pivKosten = Worksheets("Tabelle3").PivotTables(1)
Set ptField = pivKosten.RowFields("MatNr")
SumWert = 0
'Filter zurücksetzen
ptField.ClearAllFilters
'Einzelwerte der sichtbaren Items summieren
For i = 1 To ptField.VisibleItems.Count
SumWert = SumWert + pivKosten.GetPivotData("Summe von Kosten", "MatNr", _
IIf(ptField.VisibleItems(i) = "(blank)", "(Leer)", ptField.VisibleItems(i)))
Next
'Summe der sichtbaren Werte
MsgBox ptField.Name & vbLf & _
"Gesamtergebnis Kosten: " & pivKosten.GetPivotData("Summe von Kosten") & vbLf & _
"Gesamtergebnis Kosten (Summe Einzelwerte): " & SumWert
End Sub

Beispieldatei: https://www.herber.de/bbs/user/74325.xls
Anzeige
AW: GetPivotData
11.04.2011 18:15:22
windalf
Hallo Franz,
danke für die Antwort...
das war mir vorher auch schon bewusst... Meine Frage war, wie bzw ob man mit einen Paramter auch mit ner "Wildcard" füttern kann oder das immer mit IF Then Else abfangen muss...
Kurz gesagt will ich also nur einemal GetPivotData im Quellcode schreiben und das obwohl ich manchmal nur einen Filter oder mehrere Filter verwende (je nachdem was so eingestellt ist)...
Die Filter sollen alle nicht gleichzeitig selektiv sein. Die Frage ist also konkreter formuliert, ist es möglich einen Filter anzugeben und ihm dann per Parameter zu sagen "Hey beachte mich nicht"...
In meinem Beispiel dann wenn ich erstmal MatNr geschrieben habe, kann ich dann bei Filter(i) was übergeben, was ihn dazu bringt MatNr "zu ignorieren"...
Gruß Windi...
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige