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

Filtern
28.06.2020 07:33:19
Nicolai
Liebe VBA Profis,
ich möchte folgende Filterfunktion umsetzen und komme alleine nicht weiter.
1. Alle bestehenden Filter schließen (alles anzeigen)
2. In Spalte B einen Filter setzen, beginnend in Zeile 8. Es sollen alle Zeilen in Spalte B gefiltert werden die "a" enthalten. Der Filter soll jedoch nur auf die Spalten B bis R angewandt werden. Alle Spalten hinter R sollen nicht beeinflusst werden.
3. Die Dropdown Pfeile sollen nicht angezeigt werden.
4. Der Cursor soll danach in Zelle B6 enden.
Vielen Dank schon mal für alle hilfreichen Kommentare.
Liebe Grüße
Nic

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Zu Deiner Nr. 2
28.06.2020 08:03:33
lupo1
Das ist beim Autofilter nicht möglich, da dort Zeilen ausgeblendet werden.
Auch sonst ist es nur möglich, wenn ein Filter nicht am Platze geschieht, sondern in einer neuen Ausgabe (denn sonst wären die Ursprungsdaten ja weg):
=FILTER()
Spezialfilter
Durch VBA erzeugte Bereiche über Individualprogrammierung
AW: Zu Deiner Nr. 2
28.06.2020 08:33:23
Nicolai
Hallo Lupo,
danke für die Antwort.
Gibt es keine andere Möglichkeit als AutoFilter? Falls nicht könnte ich auf die Funktion, dass nur die Spalten B bis R gefiltert werden verzichten.
Meine VBA Kenntnisse sind bescheiden. Hast du einen Vorschlag wie ich die restlichen Funktionen mit VBA umsetzten könnte?
Gruß und Dank
Nic
Anzeige
Drücke Dich bitte etwas genauer aus
28.06.2020 08:43:06
lupo1
Wenn Du "am Platze" (also dort, wo auch die Daten gepflegt werden) filtern willst, bleibt Dir nur der Autofilter oder ein anderes, dann händisches, Ausblenden von Zeilen. Denn sonst sind Deine Daten weg.
Wenn jedoch gleichzeitig daneben stehende Zeilen durch das Ausblenden nicht verschwinden sollen, müsstest Du im gleichen Zuge diese Zeilen auseinanderreißen.
Vielleicht erzählst Du einfach etwas über Deine Anwendung oder Dein inhaltliches Gebiet. Klar kannst Du darüber die Unwahrheit sagen, wenn das Gesagte technisch genauso gut erklärend wirkt.
AW: Drücke Dich bitte etwas genauer aus
28.06.2020 09:18:42
Nicolai
Hallo Lupo,
gut dann lassen wir das mit dieser Funktion, dass nur die Spalten B bis R gefiltert werden. Die Werte in den dahinterliegenden Spalten kann ich auch woanders darstellen. Zurück zu meinem Vorhaben:
Ich erstelle eine neue Wartungsliste. Jede Zeile ist ein Wartungsauftrag. In den Spalten B bis R werden diverse Angaben zu jedem Auftrag getätigt. Am Kopf der Tabelle habe ich diverse Schaltflächen eingebaut die Filtermakros auslösen sollen. Hier ein Screenshot (ich hoffe einer der Links funktioniert):
https://www.herber.de/bbs/user/138604.png
Userbild
In Spalte B steht z.B. immer ein "a" für aktiv oder ein "i" für inaktiv. Es gibt hierzu drei Schaltflächen: 1. Filter nach a, 2. Filtern nach i, 3. beides anzeigen.
In Spalte Q steht z.B. das Datum wann die Rechnung abgegeben wurde. Es gibt hierzu drei Schaltflächen: 1. Filter alle die ein Datum enthalten, 2. Filter alle die leer sind, 3. beides anzeigen.
Gruß Nic
Anzeige
AW: Drücke Dich bitte etwas genauer aus
28.06.2020 09:44:22
Werner
Hallo,
hier mit Ausblenden der entsprechenden Zeilen, ohne den Autofilter.
Sub Schaltfläche1_Klicken()
Dim i As Long, raWeg As Range
Application.ScreenUpdating = False
With Worksheets("Tabelle1")
If .AutoFilterMode = True Then .AutoFilterMode = False
For i = 8 To .Cells(.Rows.Count, "B").End(xlUp).Row
If UCase(Cells(i, "B"))  "A" Then
If raWeg Is Nothing Then
Set raWeg = .Cells(i, "B")
Else
Set raWeg = Union(raWeg, .Cells(i, "B"))
End If
End If
Next i
If Not raWeg Is Nothing Then
raWeg.EntireRow.Hidden = True
End If
.Range("B6").Select
End With
Set raWeg = Nothing
End Sub
Gruß Werner
Anzeige
AW: Drücke Dich bitte etwas genauer aus
28.06.2020 13:14:45
Nicolai
Hallo Lupo,
Hallo Werner,
ich habe es jetzt doch mit Autofilter gemacht. Der Code von Werner passt bestimmt super, war mir aber etwas zu komplex. Danke trotzdem.
Ich habe alle Filter wie folgt eingerichtet und es funktioniert sehr gut:

Sub Filter_Status_aktiv()
Range("B8:B2000").Select
Selection.AutoFilter
ActiveSheet.Range("$B$8:$B$2000").AutoFilter Field:=1, Criteria1:="a", VisibleDropDown:= _
False
Range("B6:B7").Select
End Sub
Was allerdings noch nicht klappt, ist dass zwei Filter gleichzeitig gesetzt werden können. Anders gesagt: Ich setze Filter Nr. 1, ein Teil der Zeilen wird gefiltert (ausgeblendet). Dann möchte ich Filter Nr. 2 setzen, allerdings nur für die bereits gefilterten Zeilen (sichtbare).
Aktuell wird der erste Filter durch den zweiten überschrieben.
Danke falls jemand eine Idee hat.
Gruß Nic
Anzeige
AW: Drücke Dich bitte etwas genauer aus
28.06.2020 14:04:32
Daniel
Hi
es gibt auf einem Tabellenblatt immer nur einen einzigen Autofilter.
dieser kann zwar einen größeren Tabellenbereich mit mehreren Spalten umfassen, aber es muss immer ein lückenloser rechteckiger Zellbereich sein und es kann nur einen geben.
(bei zwei unabhängigen Autofiltern auf dem Blatt wäre dann ja nicht eindeutig, wie eine Zeile angezeigt werden soll, wenn die beiden Autofilter für diese Zeile zu einem unterschiedlichen Ergebnis kommen, da ja immer nur die Zeile als ganzes ein- oder ausgeblendet werden kann)
dh wenn du einen Filter in einer anderen Spalte additiv dazu bringen willst, musst du das mit dem gleichen Autofilter machen und der Zellbereich des Filters muss alle Spalten enthalten, nach denen gefiltert werden soll:
dh wenn in Spalte B und D gefiltert werden soll, muss das so aussehen:
With Range("B8:D2000")
.Autofilter Field:=1, Criteria1:="a", visibledropdown:=false
.Autofilter Field:=3, Criteria1:="b"
end with
die Anzeige der Dropdowns kannst du über das VisibleDropdown steueren.
dabei gilt folgendes:
- gibst du diese Option nur für eine einzige Filterspalte, so gilt diese Einstellung für alle Spalten des Filters
- gibst du das für 2 oder mehr spalten an, so gilt die Einstellung nur für die jeweilige Spalte und für die anderen Spalten gilt die Standardeinstellung (hier TRUE)
diese Einstellung bleibt auch erhalten, wenn der Anwender nächträglich die Filtereinstellungen ändert, er kann das dann aber nur für die Spalten tun, für die Der DropDown angezeigt wird.
(solange, bis der Filter entfernt wird)
dh wenn du das DropDown nur für die Spalten B und D anzeigen willst und nicht für C, dann müsste dein Code so aussehen:
With Range("B8:D2000")
.Autofilter Field:=1, Criteria1:="a", visibledropdown:=true
.Autofilter Field:=3, Criteria1:="b", visibledropdown:=true
.Autofilter Field:=2, visibledropdown:=False
end with

Gruß Daniel
Anzeige
Somit nichts besonderes
28.06.2020 09:45:23
lupo1
Spalten hinter R sind also verzichtbar.
Wir sind also bei einer Liste, außer der nichts auf dem Blatt steht, und die daher gefahrlos autogefiltert werden kann. Genau so ist es richtig.
Filtern (auch: Spezial- statt autofiltern am Platze) kann man nun z.B. über das Menü oder über eine VBA-Aufzeichung, die man dann etwas aufhübscht und den Schaltflächen zuweist.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige