Filtern und Sortieren
Befehl / Beispiele Beschreibung
Range(<Adresse>).AutoFilter Field:=<Spalte>, Criteria1:= <FilterKriterium> Filtern über den Autofilter
Sub FilterTest()
    AutoFilter "A11", 5, "dep"
End Sub

Sub AutoFilter(ErsteZelle, Spalte, FilterKriterium)
'+--------------------------------------------------------------------------------------------------+
'|  Filtern über die Autifilter-Option.                                                             |
'+--------------------------------------------------------------------------------------------------+
'|  ErsteZelle      = 1. Zelle der zu filternden Datenbank.                                         |
'|  Spalte          = Spaltennummer der Datenbank, in welchem sich das Filterkriterium befindet.    |
'|  FilterKriterium = Filterkriterium nach welcher in der angegebenen Spalte gefiltert werden soll  |
'+--------------------------------------------------------------------------------------------------+
    Range(ErsteZelle).AutoFilter Field:=Spalte, _
                                 Criteria1:=FilterKriterium
End Sub
ActiveSheet.ShowAllData Alle Daten anzeigen
Sub AlleDatenAnzeigen()
'+------------------------------------------------------------------+
'|  Anzeigen aller Daten, falls eine Tabelle gefiltert worden ist.  |
'+------------------------------------------------------------------+
    ActiveSheet.ShowAllData
End Sub
Cells.AutoFilter Autofilter ausschalten
Sub AutoFilterAusschalten()
'+-------------------------------------------------------+
'|  Auschalten des Autofilters, falls dieser aktiv ist.  |
'+-------------------------------------------------------+
    If ActiveSheet.AutoFilterMode Then Cells.AutoFilter
End Sub

 
Range(<DatenBereich>).AdvancedFilter ... Filtern über den Spezialfilter
Sub SpezialFilter(DatenBereich As String, Kriterienbereich As String, _
                  KeineDublikate As Boolean, Optional NeuerOrt)
'+------------------------------------------------------------------------------------+
'|  Spezialfilter anwenden                                                            |
'+------------------------------------------------------------------------------------+
'|      DatenBereich = Hier befindet sich die Datenbank                               |
'|                     Beispiel: "A5:A500"                                            |
'|  Kriterienbereich = Hier stehen die Filterkriterien                                |
'|                     Beispiel: "A1:A5" ( Spaltenkopf nicht vergessen !! )           |
'|    KeineDublikate = Es werden keine Dublikate ausgegeben                           |
'|          NeuerOrt = Wenn angegeben, werden die gefilterten Daten dort ausgegeben.  |
'|                     Beispiel: "C5"                                                 |
'+------------------------------------------------------------------------------------+
    If IsMissing(NeuerOrt) = False Then
       Range(DatenBereich).AdvancedFilter Action:=xlFilterCopy, _
                                   CriteriaRange:=Range(Kriterienbereich), _
                                     CopyToRange:=Range(NeuerOrt), _
                                          Unique:=KeineDublikate
    Else
       Range(DatenBereich).AdvancedFilter Action:=xlFilterInPlace, _
                                   CriteriaRange:=Range(Kriterienbereich), _
                                          Unique:=KeineDublikate
    End If
End Sub

Sub SpezialFilter_Test()
'+----------------------------+
'|  Testen des Spezialfilters |
'+----------------------------+
    Dim Bereich    As String
    Dim Kriterien  As String

    Bereich = Range("A5").CurrentRegion.Address
    Kriterien = Range("A1").CurrentRegion.Address
    SpezialFilter Bereich, Kriterien, True, "C5"
End Sub
Range(<Bereich>).Sort ... Tabelle sortieren ( Zeilen )
Sub ZeilenSortierungEinfach(Bereich As String, Spalte As Integer, Aufwärts As Boolean)
'+---------------------------------------------------------------------------------------------+
'|  Sortiert eine Tabelle Zeilenweise                                                          |
'|  ACHTUNG: Es wird davon ausgegangen, dass der übergebene Bereich eine Spaltenkopf besitzt.  |
'+---------------------------------------------------------------------------------------------+
'|  Bereich = Der zu sortierende Bereich                                                       |
'|  Spalte  = Spalte, nach welcher die Tabelle sortiert werden soll.                           |
'|  ACHTUNG: Bezieht sich auf die Spalte der Excel-Tabellenblatt-Spalten-Beschriftung.         |
'+---------------------------------------------------------------------------------------------+
    Dim SortierRichtung As Integer

    SortierRichtung = IIf(Aufwärts = True, xlAscending, xlDescending)
    Range(Bereich).Sort Key1:=Columns(Spalte), _
                      Order1:=SortierRichtung, _
                      Header:=xlYes, _
                 OrderCustom:=1, _
                   MatchCase:=True, _
                 Orientation:=xlTopToBottom, _
                 DataOption1:=xlSortNormal
End Sub

Sub Test()
    Dim Bereich As String
    Bereich = Range("F6").CurrentRegion.Address

    ZeilenSortierungEinfach Bereich, 10, True
End Sub
Range(<Bereich>).Sort ... Tabelle sortieren ( Spalten )
Sub SpaltenSortierung(Bereich As String, Zeile As Integer, LinksRechts As Boolean)
'+---------------------------------------------------------------------------------------------+
'|  Sortiert eine Tabelle Spaltenweise                                                         |
'|  ACHTUNG: Es wird davon ausgegangen, dass die Zeilen keine Überschrift enthalten            |
'+---------------------------------------------------------------------------------------------+
'|  Bereich = Der zu sortierende Bereich                                                       |
'|  Zeile   = Tabellenzeile, welche sortiert werden soll.                                      |
'|  ACHTUNG: Bezieht sich auf die Zeile der Excel-Tabellenblatt-Zeilen-Beschriftung.           |
'+---------------------------------------------------------------------------------------------+
    Dim SortierRichtung As Integer

    SortierRichtung = IIf(LinksRechts = True, xlAscending, xlDescending)
    Range(Bereich).Sort Key1:=Rows(Zeile), _
                      Order1:=SortierRichtung, _
                      Header:=xlNo, _
                 OrderCustom:=1, _
                   MatchCase:=True, _
                 Orientation:=xlLeftToRight, _
                 DataOption1:=xlSortNormal
End Sub

Sub Test()
    Dim Bereich As String
    Bereich = Range("F6").CurrentRegion.Address

    SpaltenSortierung Bereich, 10, True
End Sub