Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1764to1768
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

Filtern nach mehreren Bedingungen in 1 Zelle

Filtern nach mehreren Bedingungen in 1 Zelle
15.06.2020 11:11:55
Daniel
Hallo zusammen,
ich habe folgendes kleines Problem, welches ich ohne euch aktuell nicht lösen kann.
In dem folgenden Code wird ein Reiter kopiert. Dieser enthält Daten zur Verarbeitung. Dieser muss kopiert werden, damit die Rohdaten bleiben. In Spalte D wird nach 3 Bereichen (A, B und C) unterschieden. Ich möchte nun in dem Makro mir die Bereiche anzeigen lassen, welche für den weiteren Verlauf gelöscht werden sollen. In Tabelle1 (Sheet1) trage ich dies alles in einer einzigen Zelle (27,3) entsprechend ein. Bsp. B, C d.h. es soll nach B und C gefiltert werden. Vllt. habe ich den falschen Ansatz, da meine VBA-Kenntnisse nur das Basiswissen beinhalten. Bei dem Code wird in dem Beispiel nur nach C gefiltert und nicht nach B und C. Wo liegt der Fehler?
Das Deklarieren mache ich bereits vorher mit dem Befehl Public vardat as variant
Viele Grüße und Danke vorab.
Sub PrepareSheet()
Application.DisplayAlerts = False
Worksheets("Plan").Delete
Application.DisplayAlerts = True
Worksheets("Daten").Copy After:=Worksheets("Daten")
ActiveSheet.Name = "Plan"
Set tp = Worksheets("Plan")
Vardat = Split(Sheet1.Cells(27, 3).Value, ",")
tp.Range("A1:AK1000").AutoFilter Field:=4, Criteria1:=Array(Vardat)
Application.DisplayAlerts = False
EndRow = tp.Cells(tp.Rows.Count, 35).End(xlUp).Row
tp.Range(Cells(2, 1), Cells(EndRow, 38)).SpecialCells(xlCellTypeVisible).Delete
Application.DisplayAlerts = True
ResetAutoFilter
End Sub

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Filtern nach mehreren Bedingungen in 1 Zelle
15.06.2020 12:52:33
Klexy
Mit Filter geht das nicht.
Da wirst du sie Spalte durchlaufen müssen (For each Zelle in Spalte) und in jeder Zelle nach For each Element in Vardat suchen. Bei Treffer die Spalte löschen.
Aber Achtung: Wenn eine Zeile gelöscht wird, hat die nächste zu durchsuchende Zelle die gleiche Zeilennummer wie die bereits gelöschte; du kannst also nicht zur nächsten Zeile übergehen, weil du sonst die aufgerückte Zeile auslassen würdest. Da musst du eine entsprechende Prüfschleife einbauen.
AW: Filtern nach mehreren Bedingungen in 1 Zelle
16.06.2020 11:20:09
Daniel
Hallo Klexy,
danke für deine Hilfe. Hatte gerade angefangen eine Schleife zu bauen. Aber mit der Lösung von Werner geht es.
Grüße
Anzeige
AW: Filtern nach mehreren Bedingungen in 1 Zelle
15.06.2020 14:36:40
Werner
Hallo,
schau dir mal die Beispielmappe an.
Das hier:
Sheet1.Cells(27, 3).Value

geht nicht. Sheet1 gibt es nicht
Entweder verwendest du den Codenamen der Tabelle (Siehe hierzu im Objektbaum im VBA-Editor. Die Bezeichnung vor der Klammer ist der Codename der Tabelle)
Dann so:
Tabelle1.Cells(27, 3).value....

Oder du verwendest den Blattnamen (im Projektbaum die Bezeichnung in der Klammer).
Dann so:
Worksheets("DerBlattname").Cells(27, 3)....
https://www.herber.de/bbs/user/138312.xlsm
Gruß Werner
Anzeige
AW: Filtern nach mehreren Bedingungen in 1 Zelle
16.06.2020 11:19:04
Daniel
Hallo Werner,
vielen Dank. Habe deinen Code in meine Datei eingefügt und angepasst. Läuft einwandfrei :)
Grüße
Gerne u. Danke für die Rückmeldung. o.w.T.
16.06.2020 11:31:39
Werner

312 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige