Thema Datum  Von Nutzer Rating
Antwort
Rot Excel: Per VBA filtern, leere Zellen aber drinnen lassen
19.02.2017 22:50:58 Christian
NotSolved

Ansicht des Beitrags:
Von:
Christian
Datum:
19.02.2017 22:50:58
Views:
908
Rating: Antwort:
  Ja
Thema:
Excel: Per VBA filtern, leere Zellen aber drinnen lassen

Hallo zusammen,

ich nutze Excel 2016, bzgl. VBA bin ich noch eher Neuling, meine Frage bezieht sich auf eine Datenbank, die z.B.: 10 Überschriften über den Datensätzen hat und für jede Spalte gibt es ein Makro, welches mir die Spalte nach 5 verschiedenen (vom Anwender z.b. hier in Zelle B5 zu definierenden) Kriterien filtert. Beispiel:

In folgendem Code sind die 5 Filtermöglichkeiten für Spalte B ersichtlich (Standardfilter: größer als Mittelwert / 4 spezielle Filter (z.b. größer als Wert xy)):

Sub FilterA()
'
' FilterA Makro
'
'
Dim i
Dim k
Dim u
Dim o

k = Range("B5")
                    
    If k = "> MW" Then                                                                     'Standardfilter: >Mittelwert
            ActiveSheet.Range("$A$8:$I$100").AutoFilter Field:=2, Criteria1:= _
            xlFilterAboveAverage, Operator:=xlFilterDynamic
        
        Else
            If Range("B6").Value <> "" Then
                    i = Range("B6")
                                      
                        If k = "> x %" Then                                                 'Spezieller Filter: >x%
                            If i <= 98 And i >= 2 Then
                                    ActiveSheet.Range("$A$8:$I$100").AutoFilter Field:=2, Criteria1:=i, _
                                    Operator:=xlTop10Percent
                                Else
                                    MsgBox "Bitte eine Filtergrenze zwischen 2% und 98% eingeben!"
                                    Exit Sub
                            End If
                        End If
                        
                        If k = ">" Then                                                     'Spezieller Filter: >x
                            If i >= 0 And i <= 10000 Then
                                    ActiveSheet.Range("$A$8:$I$100").AutoFilter Field:=2, Criteria1:=">" & Replace(i, ",", "."), _
                                    Operator:=xlAnd
                                Else
                                    MsgBox "Bitte eine Filtergrenze zwischen 0 und 10000 eingeben!"
                                    Exit Sub
                            End If
                        End If

                        If k = "<" Then                                                     'Spezieller Filter: <x
                            If i >= 0 And i <= 10000 Then
                                    ActiveSheet.Range("$A$8:$I$100").AutoFilter Field:=2, Criteria1:="<" & Replace(i, ",", "."), _
                                    Operator:=xlAnd
                                Else
                                    MsgBox "Bitte eine Filtergrenze zwischen 0 und 10000 eingeben!"
                                    Exit Sub
                            End If
                        End If
                        
                        If k = "~" Then                                                     'Spezieller Filter: ~ (+/- 15%)
                            If i >= 0 And i <= 10000 Then
                                    u = 0.85 * i
                                    o = 1.15 * i
                                    ActiveSheet.Range("$A$8:$I$100").AutoFilter Field:=2, Criteria1:=">=" & Replace(u, ",", "."), _
                                    Operator:=xlAnd, Criteria2:="<=" & Replace(o, ",", ".")
                                Else
                                    MsgBox "Bitte eine Filtergrenze zwischen 0 und 10000 eingeben!"
                                    Exit Sub
                            End If
                        End If
                                                                                                        
                Else
                    MsgBox "Bitte eine Filtergrenze unter dem ausgewählten Filterkriterium eingeben!"
                    Exit Sub
            End If
    End If

 

Gezeigtes Makro gibt es für jede der 10 Spalten, um jede Spalte (auch additiv zueinander) nach den gezeigten 5 Kriterien filtern zu können.

Da nicht jede Zelle in den 10 Spalten befüllt ist, jedoch eine Zeile, in der sich eine leere Zelle in Spalte B befindet, allerdings trotzdem nach Anwendung des Filtermakros (also nachdem nach einem der 5 Kriterien im Makro gefiltert wurde) eingeblendet bleiben soll, wäre es für mich essentiell zu wissen, wie ich es im Code schaffe, dass die leeren Zellen beim Filtern drin bleiben.

Also Kurzfassung: Wie gebe ich jedem den 5 gezeigten Filtermöglichkeiten als jeweils zweites Filterkriterium, dass leere Zellen in der jeweiligen Spalte nicht rausgefiltert werden sollen (z.B.: Soll mir der >-Filter alle Werte größer 50 anzeigen, dann aber die leere Zellen auch eingeblendet lassen) ?

Bin bisher per Online-Recherche und rumprobieren noch nicht drauf gekommen.

Vielen Dank schon vorab für jegliche Art von Hilfe !

Christian


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Excel: Per VBA filtern, leere Zellen aber drinnen lassen
19.02.2017 22:50:58 Christian
NotSolved