AW: Pivottabelle, Berichtsfilter gewählte Elemente
07.08.2014 16:29:22
fcs
Hallo Johann,
es sind ja 2 Makros:
1.: Public Function fncBerichtsfilter(pvTable As ....
Dieses Makro musst du in einem allgemeinen Modul in deiner Datei einfügen.
2.: Ereignismakro
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
With Me
'in nächster Zeile _
- die Zelle (wo Filter eingetragen werden soll), _
- Name des Berichtsfeldes, _
- und ggf. den Trenntext zwischen den Filterwerten _
anpassen.
.Range("B2").Value = fncBerichtsfilter(pvTable:=Target, _
strFieldName:="Feld01", strSep:=";")
.Range("B3").Value = fncBerichtsfilter(pvTable:=Target, _
strFieldName:="Feld02", strSep:=";")
End With
End Sub
Dieses muss im VBA-Editor jeweils unter den Tabellenblättern mit den Pivot-Tabellenberichten eingefügt werden.
Das Makro schreibt dann alle Filterwerte zu dem unter strFieldName angegebenen Berichtsfeld in die Zelle.
Nachfolgend eine Variante. Diese arbeitet alle Felder im Seitenbereich ab und trägt die selektierten Elemente in die rechten Nachbarzellen ein. Für die Ausgabe der Werte kann man sich natürlich auch etwas anderes zusammenstellen.
Gruß
Franz
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
Dim pvField As PivotField, varFilterwerte As Variant, intV, intZeile As Integer, intSpalte As _
Integer
With Me
'Alle slektierten Elemente der >Berichtsfelder in den rechten nachbarzellen anzeigen
For Each pvField In Target.PageFields
pvField.LabelRange.Offset(0, 2).Resize(1, 10).ClearContents
varFilterwerte = fncBerichtsfilter(pvTable:=Target, _
strFieldName:=pvField.Name, strSep:=";")
If varFilterwerte <> "" Then
varFilterwerte = Split(varFilterwerte, ";")
intZeile = 0
intSpalte = 0
For intV = LBound(varFilterwerte) To UBound(varFilterwerte)
intSpalte = intSpalte + 1
pvField.LabelRange.Offset(0 + intZeile, 2 + intSpalte).Value = varFilterwerte(intV)
Next
End If
Next
End With
End Sub