berndvorwerk
Goto Top

VBA: nach ausgewählten Kriterien filtern

Hallo an alle.
Auch auf die Gefahr hin, dass ich euch so langsam auf die Nerven gehe, aber ich bräuchte wieder einmal Hilfe.
In einem Tabellenblatt "Übersicht" wähle ich Kriterien aus, indem ich sie in Spalte B mit einem "X" (ausgewählt) oder einem "-" (nicht ausgewählt) markiere.
Nach den Kriterien, die mit einem "X" gekennzeichnet sind (bis zu 15 möglich) möchte ich dann im Tabellenblatt "Auswertung" die Spalte F filtern.
In dem angehängten Beispiel also nach Dicke, Länge, Oberfläche und Kante. Breite und Radius sollen also "weggefiltert" werden.
Blatt Übersicht:
AB
1DickeX
2LängeX
3Breite-
4OberflächeX
5Radius-
6KanteX
7...-

Blatt Auswertung:
...EF
1...2Dicke
2...3Dicke
3...1Länge
4...2Breite
5...3Breite
6...1Oberfläche
7...2Oberfläche
8...4Radiu
9...5Kante
10...6Kante

Bei Änderung der Auswahl auf "Übersicht" und Ausführung des Makros soll die Filterung dann auch wieder angepasst werden.
Gibt es für so etwas eine Lösung?
Noch einmal vielen Dank!
Gruß,
Bernd

Content-ID: 246351

Url: https://administrator.de/contentid/246351

Ausgedruckt am: 17.11.2024 um 01:11 Uhr

colinardo
colinardo 13.08.2014 aktualisiert um 10:49:51 Uhr
Goto Top
Moin Bernd,
mal wieder da face-smile
Beispiel für den Fall das nur Werte aus der Liste in der Übersicht im Sheet Auswertung stehen: FilterRange_246351.xlsm

Grüße Uwe
BerndVorwerk
BerndVorwerk 13.08.2014 um 13:26:29 Uhr
Goto Top
Funtioniert das auch, wenn in der Auswahlliste in der Übersicht mehr Werte vorhanden sind als in der Auswertungsliste? Dann sollen natürlich nur die berücksichtigt werden, die auch vorhanden sind.
colinardo
colinardo 13.08.2014 aktualisiert um 13:29:24 Uhr
Goto Top
Zitat von @BerndVorwerk:
Funtioniert das auch, wenn in der Auswahlliste in der Übersicht mehr Werte vorhanden sind als in der Auswertungsliste? Dann sollen natürlich nur die berücksichtigt werden, die auch vorhanden sind.
ja soweit ich dich richtig interpretiere.
BerndVorwerk
BerndVorwerk 13.08.2014 um 14:02:00 Uhr
Goto Top
Ja, geht super.
Jetzt hoffentlich nur eine Kleinigkeit.
Kann ich das auch ohne worksheet_change machen. Also einfach mit Sub_name().
Das Makro müsste jetzt doch über ein bereits vorhandenes worksheet_calculate() aufgerufen werden.
Noch mal danke!
Gruß,
Bernd
colinardo
colinardo 13.08.2014 aktualisiert um 14:04:46 Uhr
Goto Top
Zitat von @BerndVorwerk:
Kann ich das auch ohne worksheet_change machen. Also einfach mit Sub_name().
Sicher, kein Problem
Sub Test()
    Dim wsAuswertung As Worksheet, wsUebersicht As Worksheet, cell As Range, arrFilter() As String
    
    Set wsUebersicht = Worksheets("Übersicht")  
    Set wsAuswertung = Worksheets("Auswertung")  
    cnt = 0
    For Each cell In wsUebersicht.Range("B1:B15")  
         If cell.Value <> "X" Then  
            ReDim Preserve arrFilter(cnt)
            arrFilter(cnt) = cell.Offset(0, -1).Value
            cnt = cnt + 1
         End If
     Next
     wsAuswertung.Range("E:F").AutoFilter Field:=2, Criteria1:=arrFilter, Operator:=xlFilterValues  
End Sub
BerndVorwerk
BerndVorwerk 13.08.2014 um 15:30:37 Uhr
Goto Top
Hallo Uwe,
das funktioniert super. Danke schonmal. Leider fällt mir jetzt während der Anwendung auf, dass ich das Problem unterschätzt und bestimmte Faktoren vergessen habe.
Und zwar:
Die gleiche Auswahl im Blatt "Übersicht" gibt es 2mal. Zum einen die, mit der du/ich gerade arbeite (Spalte A für Text und Spalte B für X oder -). Das gleiche gibt es auch noch mal in den Spalten D und E (gleicher Text, aber evtl. Auswahl anderer Kriterien). Es müssen also nicht zwingend auf beiden Seiten die gleichen Sachen ausgewählt sein.
Jetzt ergeben sich für mich plötzlich zwei unterschiedliche Aufgaben:

Ein Makro, ähnlich wie das bereits vorgestellte. Es soll jetzt aber nur "weggefiltert" werden, wenn das entsprechende Kriterium weder auf der linken noch auf der rechten Seite ausgewählt wurde.
Zur Erklärung:
Im Blatt "Auswertung" habe ich die Auswertungen für die rechte und linke Seite nebeneinander platziert. D.h. wenn ich filtern würde, obwohl nur eine Seite nicht markiert ist, würde ich die andere Seite direkt mit wegfiltern obwohl sie gebraucht wird. Daher soll nur weggefiltert werden, wenn sowohl in Spalte B als auch in Spalte E ein "-" steht.

Zusätzlich bräuchte ich noch ein weiteres Makro um einen Datensatz in einem weiteren Tabellenblatt "Grafiken" zu filtern.
Auch zur Erklärung:
Hier habe ich die grafischen Auswertungen. Aber alles untereinander, also erst alle Grafiken für die linke Seite untereinander, danach folgend alle der rechten Seite.
Hier soll jetzt wirklich einzelnd gefiltert werden.

Ich hoffe das war einigermaßen verständlich... Gäbe es hier sonst die Möglichkeit Beispieldateien zu posten?
Danke und Gruß,
Bernd
colinardo
colinardo 13.08.2014 aktualisiert um 16:09:01 Uhr
Goto Top
Zitat von @BerndVorwerk:
Ich hoffe das war einigermaßen verständlich... Gäbe es hier sonst die Möglichkeit Beispieldateien zu posten?
schick mir dein Sheet am besten via Mail, ich schicke dir meine Mailadresse via Personal Message ...

Es soll jetzt aber nur "weggefiltert"
was jetzt wegfiltern ?? was soll behalten werden ? wenn da ein "-" steht oder ein 'X' ? Vorher wolltest du das alle bei einem X weggefiltert werden ??

wäre es langsam nicht mal angebracht sich etwas mehr in VBA einzuarbeiten ?!
back-to-topVBA/VBS/WSH/Office Developer Referenzen