Excel-Pivot-Tabelle - So behalten Sie Filter und Sortierung bei der Aktualisierung der Daten bei

Excel-Pivot-Tabelle - So behalten Sie Filter und Sortierung bei der Aktualisierung der Daten bei

Ich habe eine Pivot-Tabelle (Excel 2010). Jedes Mal, wenn ich die Daten aktualisiere und eine Aktualisierung durchführe, gehen die Sortierung und Filter der Pivot-Tabelle verloren bzw. ich muss den Filter explizit ändern (alle auswählen und die nicht benötigten entfernen).

Irgendeine Lösung dafür?

  • Wie kann ich den Filter über VBA ändern, wenn die Pivot-Tabelle aktualisiert wird?
  • Wie kann ich die Sortierung per VBA ändern, wenn die Pivot-Tabelle aktualisiert wird?
  • Wie kann ich eine Aktualisierung der Pivot-Tabelle auslösen, wenn sich die Daten ändern?

Vielen Dank im Voraus Grüße Mark

Antwort1

Ich konnte erreichen, was ich wollte. Ich habe einfach zuerst ein Makro aufgezeichnet, um die Details zu sehen, auf welche Objekte wie zugegriffen werden muss. Anschließend habe ich die Sache mit einigen Optimierungen abgeschlossen. Bitte sehen Sie sich unten den Codeauszug an, vielleicht ist er für andere hilfreich.

Bezüglich der Sortierung habe ich in einem Forum den Tipp gefunden, dass man in der Ursprungsdatentabelle eine weitere Spalte "Sortierreihenfolge" anlegen und diese als versteckte Spalte in der Pivot-Tabelle verwenden sollte, damit man über dieses Feld die Sortierreihenfolge festlegen kann. Diese geht auch dann nicht verloren, wenn man die Daten später ändert.

Sub Macro1()
On Error GoTo Fehler
Application.ScreenUpdating = False
With ActiveWorkbook.Sheets("Rating").PivotTables(1)
.PivotFields("OWASP 2010").ClearAllFilters
With .PivotFields("OWASP 2010")

    If .PivotItems("(blank)").Visible = True Then
        .PivotItems("(blank)").Visible = False
    End If
    ' uncomment this sectin in case you liek to change the sorting via vba
    ' 1. sort first the stuff automatically A-Z
    '.AutoSort xlAscending, "OWASP 2010"
    ' 2. move empty values to the end
    'If .PivotItems(" ").Position <> .PivotItems.Count - 1 Then
    '    .PivotItems(" ").Position = .PivotItems.Count - 1
    'End If
 End With
.PivotFields("Categories").ClearAllFilters
With .PivotFields("Fortify Categories")
     If .PivotItems("0").Visible = True Then
        .PivotItems("0").Visible = False
     End If
     If .PivotItems("(blank)").Visible = True Then
        .PivotItems("(blank)").Visible = False
    End If
End With
End With
Application.ScreenUpdating = True
Exit Sub
Fehler:
Application.ScreenUpdating = True
End Sub

Grüße Mark

verwandte Informationen