AW: Multiselect aus Pivot auslesen
25.11.2013 15:38:04
fcs
Hallo David,
hier entsprechende Makros für beide Varianten.
Gruß
Franz
'Code unter dem Tabellenblatt mit dem Pivottabellenbericht
Option Explicit
'Variante 1: Alle Filter in eine Zelle schreiben
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
Dim pvField As PivotField, pvItem As PivotItem
Dim Startzelle As Range
Set Startzelle = Me.Range("F1") 'Zelle in die Filterwerte eingetragen werden sollen
Set pvField = Target.PageFields("Jahr")
'Alte Einträge löschen
Startzelle.ClearContents
If pvField.EnableMultiplePageItems = True Then
If pvField.LabelRange.Offset(0, 1).Text = "(Mehrere Elemente)" Then
For Each pvItem In pvField.PivotItems
If pvItem.Visible = True Then
If Startzelle = "" Then
Startzelle.Value = "'" & pvItem.Value
Else
Startzelle.Value = "'" & Startzelle.Value & "; " & pvItem.Value
End If
End If
Next
End If
End If
End Sub
'Variante 2: Filter ab Startzelle in Zellen untereinander
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
Dim pvField As PivotField, pvItem As PivotItem, intOffset As Integer
Dim Startzelle As Range
Set Startzelle = Me.Range("F1") 'Zelle ab der Filterwerte eingetragen werden sollen
Set pvField = Target.PageFields("Jahr")
'Alte Einträge löschen
Do While Startzelle.Offset(intOffset, 0) ""
Startzelle.Offset(intOffset, 0).ClearContents
intOffset = intOffset + 1
Loop
intOffset = 0
If pvField.EnableMultiplePageItems = True Then
If pvField.LabelRange.Offset(0, 1).Text = "(Mehrere Elemente)" Then
For Each pvItem In pvField.PivotItems
If pvItem.Visible = True Then
Startzelle.Offset(intOffset, 0).Value = pvItem.Value
intOffset = intOffset + 1
End If
Next
End If
End If
End Sub