Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Pivottabelle: Berichtsfilter gleich andere Zelle

Forumthread: Pivottabelle: Berichtsfilter gleich andere Zelle

Pivottabelle: Berichtsfilter gleich andere Zelle
19.11.2014 17:43:24
Dennis
Hallo zusammen,
ich stehe vor folgendem Problem:
Nachdem ich eine Pivottabelle (Tabellenblatt "pivot") erzeugt habe, möchte ich gerne einen Berichtsfilter setzen. Dieser soll jedoch nicht manuell gesetzt werden sondern sich lediglich auf eine andere Zelle aus dem Datenblatt (Zelle "A1" Tabellenblatt "Daten") beziehen.
Über eure Hilfe würde ich mich sehr freuen!
Besten Dank im Voraus,
Gruß,
Dennis

Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Pivottabelle: Berichtsfilter gleich andere Zelle
20.11.2014 16:08:28
fcs
Hallo Dennis,
das funktioniert nur per Makro.
Wenn es automatisch erfolgen soll, dann muss man ein Ereignismakro verwenden (z.B. Zelleingabe, Neuberechnung eines Tabellenblatts, Aktivieren eines Tabellenblatts)
Nachfolgend erfolgt die Aktualissierung, wenn das Blatt mit der Pivottabelle aktiviert/selektiet wird.
Wichtig ist, dass der Wert in der Zelle ein Wert ist, der für das Feld in der Auswahlliste auch vorhanden ist. Sonst gibt es Ärger und ggf. ungewollte Überraschungen; im Extremfall werden die Items in der Auswahlliste des Berichtsfeldes umbenannt.
Gruß
Franz
'Code im VBA-Editor unter einem allgemeinen Modul oder dem Tabellenblatt "Pivot"
Public Sub PivotBerichtsfeldSetzen(varWert, pvField As PivotField)
Dim pvTab As PivotTable
On Error GoTo Fehler
Set pvTab = pvField.Parent
With pvTab
pvField.ClearAllFilters
.RefreshTable
'Pivot-Berichtsfeld anpassen
pvField.CurrentPage = varWert
End With
Fehler:
With Err
Select Case .Number
Case 0 'alles ok
Case 5, 1004
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description & vbLf & vbLf _
& "Wert für Berichtsfilter: " & varWert & vbLf _
& "unzulässige Eingabe Wert im Berichtsfilter", vbOKOnly, _
"Berichtsfeld - Blatt " & pvTab.Parent.Name & " - " & pvTab.Name
Case Else
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description, vbOKOnly, _
"Berichtsfeld - Blatt " & pvTab.Parent.Name & " - " & pvTab.Name
End Select
End With
End Sub
'Code für Ereignismakro im VBA-Editor unter dem Tabellenblatt "Pivot"
Private Sub Worksheet_Activate()
Call PivotBerichtsfeldSetzen(varWert:=Worksheets("Daten").Range("A1").Value, _
pvField:=Me.PivotTables(1).PageFields("Feld01"))
End Sub
.
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Pivottabelle: Berichtsfilter automatisch anpassen


Schritt-für-Schritt-Anleitung

Um einen Berichtsfilter in einer Pivottabelle automatisch auf eine andere Zelle zu setzen, musst du ein Ereignismakro verwenden. Folge diesen Schritten:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (dein Arbeitsblattname)" und wähle Einfügen > Modul.

  3. Füge den folgenden Code ein:

    Public Sub PivotBerichtsfeldSetzen(varWert, pvField As PivotField)
        Dim pvTab As PivotTable
        On Error GoTo Fehler
        Set pvTab = pvField.Parent
        With pvTab
            pvField.ClearAllFilters
            .RefreshTable
            'Pivot-Berichtsfeld anpassen
            pvField.CurrentPage = varWert
        End With
    Fehler:
        With Err
            Select Case .Number
                Case 0 'alles ok
                Case 5, 1004
                    MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description & vbLf & vbLf _
                    & "Wert für Berichtsfilter: " & varWert & vbLf _
                    & "unzulässige Eingabe Wert im Berichtsfilter", vbOKOnly, _
                    "Berichtsfeld - Blatt " & pvTab.Parent.Name & " - " & pvTab.Name
                Case Else
                    MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description, vbOKOnly, _
                    "Berichtsfeld - Blatt " & pvTab.Parent.Name & " - " & pvTab.Name
            End Select
        End With
    End Sub
  4. Ereignismakro einfügen: Klicke doppelt auf das Tabellenblatt "Pivot" im VBA-Editor und füge den folgenden Code ein:

    Private Sub Worksheet_Activate()
        Call PivotBerichtsfeldSetzen(varWert:=Worksheets("Daten").Range("A1").Value, _
        pvField:=Me.PivotTables(1).PageFields("Feld01"))
    End Sub
  5. Schließe den VBA-Editor: Speichere deine Änderungen und schließe den Editor.

  6. Aktiviere das Tabellenblatt: Wechsle zu deinem Tabellenblatt "Pivot", um das Ereignismakro auszulösen.


Häufige Fehler und Lösungen

  • Fehler: Ungültiger Wert im Berichtsfilter: Stelle sicher, dass der Wert in Zelle "A1" tatsächlich im Berichtsfeld vorhanden ist. Andernfalls wird der Filter nicht angewendet.
  • Makro funktioniert nicht: Überprüfe, ob Makros in deiner Excel-Anwendung aktiviert sind. Gehe zu Datei > Optionen > Trust Center > Einstellungen für das Trust Center > Makroeinstellungen und aktiviere die Option.

Alternative Methoden

Falls du keine Makros verwenden möchtest, könntest du den Berichtsfilter manuell setzen. Dies ist jedoch nicht so flexibel wie die Automatisierung mit einem Ereignismakro.

  1. Klicke auf das Dropdown-Menü des Berichtsfilters in deiner Pivottabelle.
  2. Wähle den gewünschten Wert aus der Liste.

Praktische Beispiele

Angenommen, du hast eine Pivottabelle, die Verkaufsdaten anzeigt. Wenn du in Zelle "A1" den Namen eines Mitarbeiters eingibst, wird der Berichtsfilter automatisch auf diesen Mitarbeiter gesetzt, wenn du das Tabellenblatt "Pivot" aktivierst.

Zelle A1: Max Mustermann
Berichtsfilter: Mitarbeiter = Max Mustermann

Die Pivottabelle zeigt dann nur die Verkaufsdaten von Max Mustermann an.


Tipps für Profis

  • Verwende dynamische Bereiche: Stelle sicher, dass deine Datenquelle für die Pivottabelle dynamisch ist, damit neue Daten automatisch berücksichtigt werden.
  • Nutze benannte Bereiche: Erstelle benannte Bereiche für deine Daten, um die Lesbarkeit und Wartbarkeit deines Codes zu erhöhen.

FAQ: Häufige Fragen

1. Kann ich mehrere Berichtsfilter gleichzeitig setzen?
Ja, du kannst das Makro anpassen, um mehrere Berichtsfilter gleichzeitig zu setzen, indem du zusätzliche Parameter hinzufügst.

2. Funktioniert das auch in älteren Excel-Versionen?
Ja, das beschriebene Verfahren funktioniert in Excel 2010 und neueren Versionen. Bei älteren Versionen kann es Unterschiede im VBA-Editor geben.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige