Microsoft Excel

Herbers Excel/VBA-Archiv

Pivottabelle mit dynamischer Sortierung

Betrifft: Pivottabelle mit dynamischer Sortierung von: Philipp
Geschrieben am: 17.11.2014 17:16:40

Hallo Excel-Cracks,

nachdem dieses Forum mir in vielen VBA-Problemen aus der Patsche geholfen hat, konnte ich zu meinem aktuellen Problem leider keinen Beitrag finden.

Ich habe eine Auswertung, die unter anderem Einnahmen und Stückzahlen beinhaltet. Diese Auswertung ist Basis für eine Pivottabelle.

Jetzt habe ich mir einen Bericht gestrickt, der die Top 20 Kunden aus der Pivottabelle übernehmen soll. Daraus ergeben sich 2 Fragen:

1) Kann ich auch mit der Funktion PIVOTDATENZUORDNEN eine Sortierung vornehmen oder muss ich den Pivotbericht sortieren und kann dann aber nur mit Verweisen auf die ersten 20 Zeilen des Berichts arbeiten?
2) Je nachdem ob ich nach "Einnahmen" oder "Stückzahl" sortiere, ergeben sich andere Top 20 Kunden. Gibt es die Möglichkeit, in meinem Bericht eine Zelle z.B. mit einem Dropdown-Menu zu versehen, welches das Sortierkriterium der Pivottabelle beinhaltet? Die Pivot würde dann also automatisch umsortiert (und damit auch die Kunden in meinem Bericht), wenn ich von "Einnahmen" auf "Stückzahl" umstelle.

Freue mich auf eure Rückmeldungen.

Viele Grüße,
Philipp

  

Betrifft: AW: Pivottabelle mit dynamischer Sortierung von: fcs
Geschrieben am: 18.11.2014 14:38:19

Hallo Philipp,

zu 1)
Mit Funktion PIVOTDATENZUORDNEN kann man nicht sortieren.

zu 2)
Man kann das Ereignis "Änderung des Wertes in einer Zelle" im Berichtsblatt nutzen, um den Filter und die Sortierung des Pivotberichtes per Makro entsprechend zu ändern.

Gruß
Franz

'Code im VBA-Editor unter dem Tabellenblatt mit dem Bericht
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim strPivotField As String, strDataField As String
  Dim pvTab As PivotTable
  
  If Target.Address(False, False) = "C4" Then 'Zelle ggf. anpassen
  'C4 = Zelle mit Datengültigkeitsprüfung Liste/Dropdown - Umsatz;Stück
'In Pivotbericht TOP 20 für Einnahmen/Stückzahl berechnen und Tabelle sortieren.
      
      'Pivotbericht setzen - Tabellennamen / IndexNr der Pivottabelle - ggf. anpassen
      Set pvTab = Worksheets("Tabelle2").PivotTables(1)
      'Name des Pivot-Felds - ggf. anpassen
      strPivotField = "Kunde"
      
      'Name des Daten-Felds setzen - ggf. anpassen
      Select Case Target.Value
          Case "Einnahmen"
            strDataField = "Summe von Einnahmen"
          Case "Stückzahl"
            strDataField = "Summe von Stückzahl"
      End Select
      
      If strDataField <> "" Then
        With pvTab.PivotFields(strPivotField)
          .ClearAllFilters
          .PivotFilters.Add Type:=xlTopCount, _
              DataField:=pvTab.PivotFields(strDataField), _
              Value1:=20
          .AutoSort xlDescending, strDataField
        End With
      End If
  End If
End Sub



 

Beiträge aus den Excel-Beispielen zum Thema "Pivottabelle mit dynamischer Sortierung"