VBA Pivot multiple Datumsfilter
#1
Guten Tag zusammen,

ich habe eine Herausforderung multiple Daten per VBA in einer Pivottabelle zu filtern.

Ich habe eine kleine Tabelle (Daten) erstellt in meiner Datei. In R0 habe ich eine Aufsummierung der Rechnungssummen, die ich diskreter Weise entfernt habe. In R0 will ich eine Schaltfläche, die mir im Tabellenblatt "R1" die Pivottabelle mit den eingetragenen Datumsangaben filtert. Für das Beispiel will ich also, dass ich die Datum, die in B1 - B7 stehen in R1 im PivotFeld Proforma gefiltert werden.

Leider kriege ich keine Lösung. Ich schaffe es lediglich mit einem einzigen Datum :(

Ungefähr so:
Code:
Sheets("R1").Select
    ActiveSheet.PivotTables("PivotTable1").PivotFields("Rechnung").ClearAllFilters
    ActiveSheet.PivotTables("PivotTable1").PivotFields("Rechnung").CurrentPage = _
        "(All)"
   
    ActiveSheet.PivotTables("PivotTable1").PivotFields("Proforma").ClearAllFilters
    ActiveSheet.PivotTables("PivotTable1").PivotFields("Proforma").CurrentPage = CDate([I1])

Ich hoffe mir kann jemand behilflich sein

Vielen Dank im Voraus
Beste Grüße
Antworten Top
#2
So... hier auch mit Anhang


Angehängte Dateien
.xlsx   Mappe4.xlsx (Größe: 15,15 KB / Downloads: 4)
Antworten Top
#3
Hi

Versuch es so.
Code:
Sub Makro1()
Dim a

With Sheets("R1").PivotTables("PivotTable1").PivotFields("Proforma")
  Sheets("R1").PivotTables("PivotTable1").RefreshTable
  .EnableMultiplePageItems = True
   For Each a In .PivotItems
     a.Visible = WorksheetFunction.CountIf(Range("B1:B7"), a) > 0
   Next a
End With
End Sub
Gruß Elex
[-] Folgende(r) 1 Nutzer sagt Danke an Elex für diesen Beitrag:
  • CHASiN1994
Antworten Top
#4
Hallo

Zum Filtern benötigst du kein VBA, nutze Datenschnitte.


Angehängte Dateien
.xlsx   Mappe4_CHASiN1994.xlsx (Größe: 21,38 KB / Downloads: 3)
Viele Grüße
PIVPQ
Antworten Top
#5
Erstelle ein Slicer:

Code:
Sub M_snb()
    With ActiveWorkbook.SlicerCaches("Slicer_Proforma")
      c00 = Join(Array(.SlicerItems(1).Name, .SlicerItems(2).Name, .SlicerItems(4).Name), "_")

      For Each it In .SlicerItems
          it.Selected = InStr(c00, it.Name)
        Next
    End With
End Sub
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#6
(02.04.2022, 14:42)Elex schrieb: Hi

Versuch es so.
Code:
Sub Makro1()
Dim a

With Sheets("R1").PivotTables("PivotTable1").PivotFields("Proforma")
  Sheets("R1").PivotTables("PivotTable1").RefreshTable
  .EnableMultiplePageItems = True
   For Each a In .PivotItems
     a.Visible = WorksheetFunction.CountIf(Range("B1:B7"), a) > 0
   Next a
End With
End Sub
Gruß Elex

funktioniert genau wie ich es mir vorgestellt habe

(02.04.2022, 16:56)PIVPQ schrieb: Hallo

Zum Filtern benötigst du kein VBA, nutze Datenschnitte.

hi,

ich wollte mit VBA, da ich im Anschluss noch Mails automatisch versende und die Vorgehensweise 5 mal hinternander mit 5 Tabellenblätter mache. 

Danke trotzdem für deine Mühe

(02.04.2022, 17:16)snb schrieb: Erstelle ein Slicer:

Code:
Sub M_snb()
    With ActiveWorkbook.SlicerCaches("Slicer_Proforma")
      c00 = Join(Array(.SlicerItems(1).Name, .SlicerItems(2).Name, .SlicerItems(4).Name), "_")

      For Each it In .SlicerItems
          it.Selected = InStr(c00, it.Name)
        Next
    End With
End Sub

nicht ausprobiert, da ich bereits die Lösung von Elex verwendet habe.

Danke trotzdem für deine Mühe
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste