Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1808to1812
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Autofilter in Pivot setzen

Autofilter in Pivot setzen
28.01.2021 17:58:01
JoeBaiano
Hallo liebes Forum!
Ich habe ein Excel-Datei die aus drei Tabellen besteht:
1) eine Pivot-Tabelle --> Tabellenname "Pivot"
2) eine Tabelle mit Kundennamen--> Tabellenname "Kunden"
3) eine Tabelle mit Rohdaten --> nicht weiter relevant
Ich möchte in der Tabelle "Pivot" durch Drücken eines Buttons, dass in der Spalte "Kundennamen"
ein Mehrfachfiltergesetzt wird. Der Mehrfachfilter soll dabei auf die Namen aus der Tabelle "Kunden"
zurückgreifen und dann filtern.
In der mehrspaltigen Tabelle "Pivot" (Spalten von A ... F) fangen die Daten ab Zeile 13 an. Hierbei steht der betreffende Spaltenname in der Zelle B13 und darunter (B14 ... Bxx) dann die jeweligen Werte.
In der einspaltigen Tabelle "Kunden" fangen die Daten ab Zeile 2 an. Hierbei steht der Spaltenname in der Zelle C2 und darunter (C3 ... Bxx) dann die jeweligen Werte.
Hierzu hatte ich den folgenden Code erzeugt:

Sub Button1_Click()
With Worksheets("Pivot").Range("B13").CurrentRegion
myarray = Worksheets("Kunden").Range("C3:C20").Value
' ideal wäre, wenn die letzte Zeile (in dem Falle C20) selbst ermittelt werden würde
Filterwert = Application.WorksheetFunction.Transpose(myarray)
.AutoFilter Field:=1, Criteria1:=Filterwert
End With
End Sub

Leider geht das so nicht, da hier nur auf den letzten Wert C20 aus der Tabelle "Kunden" filtert.
Es wäre super, wenn Ihr hier weiterhelefn könnt.

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Beispieldatei wird benötigt
28.01.2021 20:58:40
Yal
Hallo Joe,
Du erwähnst "Pivot": warum keine Pivottabelle?
Vielleicht lässt sich die Antwort dazu erkennen, wenn man die (abgespeckte) Datei sieht. Ohne wird es schwierig.
VG
Yal
AW: Beispieldatei wird benötigt
29.01.2021 11:10:13
Yal
Hallo Joe,
Sub Kunden_setzen()
Dim PI As PivotItem
Dim Z
Dim KdListe As String
For Each Z In Worksheets("Kunden").Range("C3:C100")
If Z = "" Then Exit For
KdListe = KdListe & ";" & Z
Next
Worksheets("Pivot").PivotTables("PivotTable2").PivotFields("Kunde").ClearAllFilters
For Each PI In Worksheets("Pivot").PivotTables("PivotTable2").PivotFields("Kunde"). _
PivotItems
PI.Visible = InStr(1, KdListe, ";" & PI.Caption, vbTextCompare) > 0
Next
End Sub
VG
Yal
Anzeige
AW: Beispieldatei wird benötigt
29.01.2021 13:50:11
JoeBaiano
Hallo Yal,
super vielen Dank!!!
Ich habe den Code noch ein ewnig angepasst:
Sub CustomerSelect_Click()
On Error GoTo Error_Handler
Dim PI As PivotItem
Dim Z As Variant
Dim k As Long
Dim FirstCustomerCellLine As Single
Dim FirstCustomerCell As String
Dim LastCustomerCell As String
Dim CustomerSheet As Worksheet
Set CustomerSheet = ThisWorkbook.Worksheets("Kunden")
Dim PivotSheet As Worksheet
Set PivotSheet = ThisWorkbook.Worksheets("Pivot")
Dim CustomerList As String
FirstCustomerCell = "D6" ' Kundenspalte muss im Bereich "A...Z" sein
NumberOfCustomers = CustomerSheet.Range(FirstCustomerCell, CustomerSheet.Range( _
FirstCustomerCell).End(xlDown).End(xlDown).End(xlUp)).Rows.Count
FirstCustomerCellLine = CInt(Right(FirstCustomerCell, Len(FirstCustomerCell) - 1))
LastCustomerCell = Left(FirstCustomerCell, 1) & CStr(FirstCustomerCellLine +  _
NumberOfCustomers - 1)
rangeStr = FirstCustomerCell & ":" & LastCustomerCell
For Each Z In CustomerSheet.Range(FirstCustomerCell & ":" & LastCustomerCell)
If Z = "" Then Exit For
CustomerList = CustomerList & ";" & Z
Next
PivotSheet.PivotTables("PivotTable2").PivotFields("Kunde").ClearAllFilters
For Each PI In PivotSheet.PivotTables("PivotTable2").PivotFields("Kunde").PivotItems
PI.Visible = InStr(1, CustomerList, ";" & PI.Caption, vbTextCompare) > 0
Next
Exit_Handler:
On Error Resume Next
Exit Sub
Error_Handler:
strMsg = "Error " & Err.Number & ": " & vbCrLf & Err.Description
MsgBox strMsg, vbCritical
Resume Exit_Handler
End Sub

Anzeige

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige