Pivot-Wertfeldeinstellung ändert sich automatisch
22.04.2026 11:41:57
{Boris}
ich habe eine umfangreiche Datei mit diversen Pivottabellen. Die Filter der Pivots werden in den Tabellen per VBA angesteuert / geändert.
Datenquelle ist eine intelligente Tabelle. Alle Wertfeldeinstellung der Pivottabellen stehen auf "Summe".
Jetzt kommt es aber ab und an vor, dass sich die Wertfeldeinstellungen in Teilen von selbst auf "Anzahl" ändern - das ist aber maximal unerwünscht.
Die KI erzählt mir dazu, dass das oft ein einer Aktualisierung der Datenquelle oder der Pivottabelle liegt, wodurch Excel auf den Standard zurücksetzt. Aber genau das möchte ich verhindern.
Habe mir dazu ein Makro geschrieben, was mir in einem separaten Blatt das jeweilige Arbeitsblatt, den Namen der Pivottabelle, die Bezeichnung des Feldnamens und dessen Funktion auflistet. Das hilft mir, die "Übeltäter" schnell zu identifizieren. Jedoch wäre es viel schöner, wenn man das von Grund auf her fixen könnte.
Habt ihr dazu eine Idee?
Hier der Vollständigkeit halber noch vorgenanntes Makro zur Überprüfung der Pivots.
'Listet in einem separaten Blatt alle Pivotfelder mit ihren Wertfeldeinstellung auf
Sub CheckPivotFieldFunctionsSheet()
Dim ws As Worksheet
Dim pT As PivotTable
Dim pf As PivotField
Dim outputWs As Worksheet
Dim row As Integer
' Neues Blatt für die Ausgabe erstellen
On Error Resume Next
Set outputWs = ThisWorkbook.Worksheets("Pivot-Check")
If outputWs Is Nothing Then
Set outputWs = ThisWorkbook.Worksheets.Add
outputWs.Name = "Pivot-Check"
Else
outputWs.Cells.Clear ' Vorhandene Daten löschen
End If
On Error GoTo 0
' Überschriften setzen
outputWs.Cells(1, 1).Value = "Arbeitsblatt"
outputWs.Cells(1, 2).Value = "PivotTable"
outputWs.Cells(1, 3).Value = "Feldname"
outputWs.Cells(1, 4).Value = "Funktion"
row = 2
' Durchlaufe alle Arbeitsblätter
For Each ws In ThisWorkbook.Worksheets
' Durchlaufe alle Pivottabellen im aktuellen Arbeitsblatt
For Each pT In ws.PivotTables
' Durchlaufe alle Wertfelder der aktuellen Pivottabelle
For Each pf In pT.DataFields
outputWs.Cells(row, 1).Value = ws.Name
outputWs.Cells(row, 2).Value = pT.Name
outputWs.Cells(row, 3).Value = pf.Name
outputWs.Cells(row, 4).Value = GetFunctionName(pf.Function)
row = row + 1
Next pf
Next pT
Next ws
' Spalten automatisch anpassen
outputWs.Columns.Autofit
End Sub
Danke vorab und viele Grüße,
Boris
Anzeige