Microsoft Excel

Herbers Excel/VBA-Archiv

Mehrere Filter einander nicht ausschliessend


Betrifft: Mehrere Filter einander nicht ausschliessend
von: Andy
Geschrieben am: 17.10.2018 15:40:11

Hallo zusammen

Ich habe ein Problem, bei dem ich nicht wirklich weiterkomme und offensichtlich die falschen Suchbegriffe bei Google benütze, da ich mir nicht vorstellen kann, dass dieses Problem noch nie jemand hatte.

Aber erst einmal die Excel Version. Leider fehlen hier die Mac-Versionen. Daher Office 2011 Mac.

Nun zum Problem: Ich habe ein Blatt mit Einträgen in Tabellenform, jedoch keine Tabelle an sich und kann vermutlich auch keine Tabelle daraus erstellen, da die Basisdatei von einem Mitarbeiter mit mässigen Excelkenntnissen entworfen wurde und unter anderem mit Makros bestückt (absolute bezüge). Ich möchte hier nun ein wenig nachrüsten und habe mir ein UserForm mit 4 Checkboxen und eine ListBox gebastelt. Anhand der Checkboxen werden 1-4 Filter aktiviert, welche die "Tabelle" nach jeweils dem gleichen Kriterium filtern. Soweit klappt alles.

Nun meine Frage: Gibt es einen Weg, dass sich die einzelnen Filter nicht gegenseitig ausschliessen? Kurzes Beispiel: Ich habe in der Tabelle folgende Werte: A2=1, A3=2, A4=2 und B2=1, B3=2, B4=1. Wenn ich nun durch die Checkboxen die Filter A:A und B:B aktiviere und in der Listbox 1 auswähle, wird logischerweise nur noch 2:2 angezeigt, da nur hier der Filterwert jeweils in beiden Filtern vorkommt. Ich bräuchte aber fast das Gegenteil. Ich hätte gerne alle Zeilen, in welchen die jeweiligen Filter aktiv sind und eine 1 zu finden ist, angezeigt. Im Beispiel also die Zeilen 2 und 4.

Gibt es hier eine Möglichkeit, die am Ende auch via meinem UserForm steuerbar ist?

Ich hoffe, meine Erklärung ist in etwa verständlich.

Freundliche Grüsse

Andy

  

Betrifft: AW: Mehrere Filter einander nicht ausschliessend
von: Klexy
Geschrieben am: 17.10.2018 16:00:53

Es würde eine Befassung mit dem Problem und eine Antwort stark vereinfachen, wenn du die Datei hier hochlädst.
Eine Lösung per Hilfsspalte in Textform zu beschreiben ist viel zu aufwendig.
Stichworte: Hilfsspalte, Referenzfeld, Zählenwenn


  

Betrifft: AW: Mehrere Filter einander nicht ausschliessend
von: fcs
Geschrieben am: 17.10.2018 16:02:29

Hallo Andy,

eine Möglichkeit:
Eine zusätztliche Spalte mit einer Formel wie

=ODER(A2=1;B2=1)

Hier hast du dann WAHR oder FALSCH als Filter-Auswahlwerte
oder
=ODER(A2=1;B2=1) * 1

Hier hast du dann 1 oder 0 als Filter-Auswahlwerte

Andere Möglichkeit:
Du kannst natürlich die Prüfung der Werte auch per Makro machen und in der Hilfsspalte einen Wert eintragen, nach dem du filterst.

LG
Franz


  

Betrifft: AW: Mehrere Filter einander nicht ausschliessend
von: Andy
Geschrieben am: 17.10.2018 16:24:49

Hallo zusammen

Vielen Dank schon einmal für den Vorschlag. Leider kann ich keine Dateien auswählen im File-upload. Weder vom Server, noch von meiner Festplatte aus. Daher habe ich es über WeTransfer hochgeladen, falls dies in Ordnung geht. Hier der Link: https://we.tl/t-8pMr9jgf75

Zum gemachten Vorschlag: Mein Fehler, hier Zahlen als Beispiel zu wählen war sehr unüberlegt. In der Tat sind es jeweils zwei Buchstaben, welche in den Feldern stehen. Wenn ich das richtig verstehe, würde ich dann 4 Hilfsspalten benötigen (es sind nicht immer alle 4 Filter aktiv) und würde danach ein Makro ausführen, welche sämtliche Zeilen ausblendet, welche in keiner der Hilfsspalten den Wert "Wahr" enthalten würden? Ergo wäre es ein Weg ganz ohne AutoFilter-Funktion. Quasi ein Makrobasierter Filter. Diese Möglichkeit kam mir noch nicht in den Sinn. Wäre aber wohl sicher machbar.

Freundliche Grüsse

Andy


  

Betrifft: AW: Mehrere Filter einander nicht ausschliessend
von: Daniel
Geschrieben am: 17.10.2018 16:36:43

Hi
naja, irgendwie haben es bisher die meisten geschafft, hier eine Datei hochzuladen.
es würde ein sehr schlechtes Bild von dir ergeben, wenn du das nicht schaffst.

Prinzipiell müsste eine Hilfsspalte reichen, wenn du die Checkboxzustände (Wahr = Spalte Relevant) und den Listboxwert in Zellen ausgibst (ControlSource)

=Oder(Und(SpalteA_aktiv;A2=Suchwert);Und(SpalteB_Aktiv;B2=Suchwert);Und(SpalteC_Aktiv;C2=Suchwert); Und(SpalteD_Aktiv;D2=Suchwert)) 
dann kannst du in dieser Hilfsspalte nach WAHR filtern.

gruß Daniel


  

Betrifft: AW: Mehrere Filter einander nicht ausschliessend
von: Andy
Geschrieben am: 17.10.2018 17:05:46

Hallo Daniel

Ich würde fast behaupten, dass dies kein schlechtes Licht auf mich wirft. Anscheinend bin ich nicht der Erste, der Probleme mit Mac und dem file upload hat. Das Problem war, dass es bei der file Auswahl erst gar keine möglichkeit gab, auch nur eine Datei auszuwählen. Ich gehe schwer davon aus, dass es daran liegt, dass wir iOS Sierra am laufen haben und teilweise gezwungen sind, nicht mit den neuesten updates auf den unterschiedlichen Systemen zu arbeiten.

Ich habe aber gerade auf den einzigen Windows Laptop gewechselt und siehe da: http://www.herber.de/bbs/user/124700.xlsm. Es hat geklappt.

Trotzdem danke für deinen Vorschlag. Ich werde diesen morgen gerne mal testen und schauen, ob ich damit weiterkomme.

Freundliche Grüsse

Andy


  

Betrifft: AW: Mehrere Filter einander nicht ausschliessend
von: fcs
Geschrieben am: 18.10.2018 08:25:33

Hallo Andy,

hier ein entsprechendes Makro für eine weitere Schaltfläche im Userform.
Da es beim Hin-und Her zwischen Windows- und Mac-Welt Probleme mit Sonderzeichen gibt hab ich den Code-Namen verwendet statt Worksheets("Blattname")

LG
Franz

Private Sub CommandButton3_Click()
    'ODER-Filter setzen
    Dim Zeile As Long, Zeile_L As Long
    Dim wks As Worksheet
    Dim SpaKuerzel(), iSK As Integer
    Dim SpaFilter As Long
    Dim bolTreffer As Boolean
    
    If Me.ListBox1.ListIndex = -1 Then
        MsgBox "Bitte erst einen Namenskuerzel in der Listbox waehlen"
        Exit Sub
    End If
    
    Set wks = ActiveSheet 'oder Blatt1 'Blatt "Überwachung Messprotokolle"
    
    With wks
        If .AutoFilterMode = True Then
            If .FilterMode = True Then .ShowAllData
            .AutoFilterMode = False
        End If
        'Letzte Zeile mit Inhalt in Spalte A - Auftrag-Nr
        Zeile_L = .Cells(.Rows.Count, 2).End(xlUp).Row
        'Spalte für Hilfsfilter
        SpaFilter = .Range("W12").Column
        
        'Spalten in Array einsetzen, wenn Checkbox markiert
        If Messung = True Then
            iSK = iSK + 1
            ReDim Preserve SpaKuerzel(1 To iSK)
            SpaKuerzel(iSK) = Range("H12").Column
        End If

        If Protokoll1 = True Then
            iSK = iSK + 1
            ReDim Preserve SpaKuerzel(1 To iSK)
            SpaKuerzel(iSK) = Range("L12").Column
        End If
        
        If Schlussbericht = True Then
            iSK = iSK + 1
            ReDim Preserve SpaKuerzel(1 To iSK)
            SpaKuerzel(iSK) = Range("O12").Column
        End If
        
        If Protokoll2 = True Then
            iSK = iSK + 1
            ReDim Preserve SpaKuerzel(1 To iSK)
            SpaKuerzel(iSK) = Range("R12").Column
        End If
        'Inhalte in Hilfsspalte löschen
        .Columns(SpaFilter).ClearContents
        'Markierung "x" in Hilfsspalte eintragen, wenn in Listbox gewählter _
            Name in einer der gewählten Spalten vorkommt.
        If iSK = 0 Then
            MsgBox "Es wurde keine der Checkboxen gewählt"
        Else
            For Zeile = 13 To Zeile_L
                bolTreffer = False
                For iSK = 1 To UBound(SpaKuerzel)
                    If LCase(.Cells(Zeile, SpaKuerzel(iSK))) _
                            = LCase(Me.ListBox1.Value) Then
                        bolTreffer = True
                        Exit For
                    End If
                Next
                If bolTreffer = True Then .Cells(Zeile, SpaFilter).Value = "x"
            Next
            .Range(.Cells(12, SpaFilter), .Cells(Zeile_L, SpaFilter)).AutoFilter Field:=1, _
                Criteria1:="x", VisibleDropDown:=False
            Me.Hide
'            ActiveWindow.ScrollColumn = 1
            ActiveWindow.ScrollColumn = Range("H12").Column
            ActiveWindow.ScrollRow = 12
        End If
        
    End With 'wks
End Sub



  

Betrifft: AW: Mehrere Filter einander nicht ausschliessend
von: onur
Geschrieben am: 17.10.2018 21:39:56

Brauchst keine Hilfsspalte - so einfach geht das:
http://www.herber.de/bbs/user/124708.xlsm
Autofilter tut nix anderes, als Zeilen ein- und auszublenden. Das kannst du genauso gut per Makro ohne Autofilter erreichen.


  

Betrifft: AW: Mehrere Filter einander nicht ausschliessend
von: Andy
Geschrieben am: 18.10.2018 08:27:00

Hallo Onur

Beinahe perfekt. Vielen Dank. Ich muss noch deine ActivX Elemente raus nehmen (Office 2011 Mac unterstützt die nicht), aber das krieg ich noch hin. Ich war wohl zu sehr auf die AutoFilter fokusiert. Danke für deine Hilfe und auch die Hilfe der anderen Ratgeber. Ich glaube, diese Lösung dürfte am besten passen.

Mit freundlichen Grüssen

Andy