Excel Filter mit oder ohne VBA
#11
Hallo Miteinander,
 
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:
  • stchwint2707
Antworten Top
#12
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.

Das geht vermutlich nur mit VBA.

Danke dir.

Richtig,

danke dir Uwe.
Antworten Top
#13
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


Angehängte Dateien
.xlsm   Excel_Filter.xlsm (Größe: 17,71 KB / Downloads: 3)
[-] Folgende(r) 1 Nutzer sagt Danke an Egon12 für diesen Beitrag:
  • stchwint2707
Antworten Top
#14
Hallo an alle

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


Angehängte Dateien
.xlsm   Excel_Filter.xlsm (Größe: 22,27 KB / Downloads: 2)
[-] Folgende(r) 1 Nutzer sagt Danke an Gast 123 für diesen Beitrag:
  • stchwint2707
Antworten Top
#15
Hallöchen,

das
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:
  • stchwint2707
Antworten Top
#16
Hallo

herzlichen Danke, wie man sieht gibt immer wieder noch mal was zu verbessern.
Auf Calculate kam ich einfach nicht!  Gute Team Arbeit, freut mich.

mfg Gast 123
[-] Folgende(r) 1 Nutzer sagt Danke an Gast 123 für diesen Beitrag:
  • stchwint2707
Antworten Top
#17
Wow danke euch alle für die tollen Lösungen das hat mir sehr geholfen.

Aber grundsätzlich möchte ich die Kalkulation auf automatisch anhaben.

Das heißt dieses Makro würde andauernd sich in einer Schleife befinden oder?
Antworten Top
#18
Hallo,

mit Application.Calculation = xlCalculationManual

und dann

Application.Calculation = xlCalculationAutomatic

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.


Gruß Uwe
Antworten Top
#19
Hallo

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!

mfg Gast 123
Antworten Top
#20
... wer schaltet denn die Calculation aus und welches Makro ist in Dauerschleife?
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste