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