wenn ich es richtig verstanden habe möchte der TO im Filter einen Wert eingeben. Dabei soll der Filter aber alle Zeilen sichtbar lassen und stattdessen in den Treffern ein X in den Zelle(n) der Spalte davorsetzen. Dies ist so natürlich nicht möglich. Das kann man nur mit VBA via Eingabe in eine Zelle beispielsweise mit .Find oder wie auch immer noch die Treffer mit .Offset(,-1) das x in die Zellen schreiben. Beispiele dafür gibt es im Netz massenweise.
Gruß Uwe
Folgende(r) 1 Nutzer sagt Danke an Egon12 für diesen Beitrag:1 Nutzer sagt Danke an Egon12 für diesen Beitrag 28 • stchwint2707
24.01.2025, 12:25 (Dieser Beitrag wurde zuletzt bearbeitet: 24.01.2025, 12:25 von stchwint2707.)
Halllo Schauan,
vielen dank für deine gute Idee.
Aber nein ich meinte es so wie der Kollege Egon es beschrieben hatte. Also einen normalen Filter nur als Input für die X-Markierungen verwenden. Die Herkömmliche Filterfunktion soll nicht verwendet werden.
24.01.2025, 13:36 (Dieser Beitrag wurde zuletzt bearbeitet: 24.01.2025, 13:39 von Egon12.)
Hallo,
ins Modul des Tabellenblattes:
Code:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range) Dim i&, var$ If Not Intersect(Target, Range("B1")) Is Nothing Then Application.EnableEvents = False If Target <> "" Then Range("D2:D" & Cells(Rows.Count, 5).End(xlUp).Row).ClearContents For i = 2 To Cells(Rows.Count, 5).End(xlUp).Row If Cells(i, 5) = Target Then Cells(i, 4) = "x" Next i End If Application.EnableEvents = True End If End Sub
Die Zelle B2 dient als Eingabezelle.
Gruß Uwe
Folgende(r) 1 Nutzer sagt Danke an Egon12 für diesen Beitrag:1 Nutzer sagt Danke an Egon12 für diesen Beitrag 28 • stchwint2707
wie ich sehe gibt es eine interessante VBA Lösung von Egon 12, eine interessante Variante. Ich bin einen anderen Weg gegangen! Mal sehen was der TA zu unseren Lösungen sagt??
Mein Makro setzt ein x in den Zellen die gefiltert wurden, und setze den Autofilter zurück! Dazu muss man nach dem Filtern die Zelle E1 anklicken. Das löst das Selection Makro aus! Der Button dient nur zum Testen, kann später gelöscht werden.
mfg Gast 123
Folgende(r) 1 Nutzer sagt Danke an Gast 123 für diesen Beitrag:1 Nutzer sagt Danke an Gast 123 für diesen Beitrag 28 • stchwint2707
Zitat:Also einen normalen Filter nur als Input für die X-Markierungen verwenden
hätte ich jetzt so verstanden: Also, ich öffne den Filter, wähle da einen oder mehrere Einträge und dann soll da ein x daneben, aber eben nicht gefiltert werden...
@Gast, eine kleine Verbesserung hätte ich. Der Filter löst ja kein Ereignis aus. Ich würde das dann in ein Calculate-Ereignis packen und damit das ausgelöst wird, irgendwo mit TEILERGEBNIS die sichtbaren Zellen zählen. =TEILERGEBNIS(103;Tabelle1!$E$2:$E$23)
Die Variable cnt wäre da auch nicht nötig. Interessant wäre noch, ob bei erneutem Filtern eventuell schon vorhandene x entfernt werden sollen.
Code:
Dim AC As Range, Rng As String, cnt As Long Private Sub Worksheet_Calculate() Application.EnableEvents = False 'Vorprüfung ob Autofilter gefiltert ist. ' cnt = Range("E2", [e2].End(xlDown)).SpecialCells(xlCellTypeVisible).Count Rng = Range("E2", [e2].End(xlDown)).SpecialCells(xlCellTypeVisible).Address ' If cnt = Range(Rng).Rows.Count Then Exit Sub If ActiveSheet.AutoFilterMode = True Then For Each AC In Range("E2", [e2].End(xlDown)) If AC.EntireRow.Hidden = False Then AC.Offset(0, -1).Value = "x" End If Next AC 'Autofilter zurücksetzen Range("$E$1:$E$23").AutoFilter Field:=1 End If Application.EnableEvents = True End Sub
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:1 Nutzer sagt Danke an schauan für diesen Beitrag 28 • stchwint2707
wird das nicht klappen da mit dem Einschalten ein Event ausgelöst wir (Formeln werden neu berechnet). Dies hat dann eine Dauerschleife zur Folge. Man kann dies aber mit Application.EnableEvents=False die Dauerschleife verhindern. Man muss am Ender Prozedur aber wieder die Eventreaktion mit Application.EnableEvents=True einschalten.
Ich halte von der Verbiegerei des Spezialfilters nichts. Daher hatte ich dir den Weg via Zelleingabe gezeigt. Man kann mit der Methode .Instr() oder .Find auch eine Teilstring Suche machen.
beim Calculate Makro weiß ich nicht ob das ständig aktiviert wird? Bei meiner 1. Lösung gibt es KEINE Schleife! Das -SelectionChange- Makro wird erst ausgelöst, wenn du die Zelle E1 gezielt anklickst. Sonst ist Ruhe!