Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1248to1252
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA - Sortieren

VBA - Sortieren
WalterK
Hallo,
der folgendem Codeteil zum Sortieren wird ausgeführt wenn die Überschrift (Zeile 2) in Spalte A "FAMILIENNAME" und in Spalte C "BEZEICHNUNG" lautet.

If Cells(2, 1) = "FAMILIENNAME" And Cells(2, 3) = "BEZEICHNUNG" Then
Range(Cells(3, 1), Cells(Lz, LCol)).Sort Key1:=Range("A3"), Order1:=xlAscending, Key2:= _
Range("C3"), Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
End If

Allerdings ist es jetzt so, dass diese beiden Überschriften auch in anderen Spalten sein können.
Was muss ich ändern, damit im Code zuerst nach den Überschriften FAMILIENNAME und BEZEICHNUNG in Zeile 2 gesucht wird und dann diese beiden Spalten ab Zeile 3 sortiert werden?
Besten Dank für die Hilfe und Servus, Walter

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
VBA : Flexibles sortieren nach Suchbegriffen
31.01.2012 14:49:58
Herrmann
Hallo Walter,
ich habe dir mal auf die Schnelle ein funktionierendes flexibles Beispiel "gebastelt" :
Sub SortierenNachSuchbegriffen()
Dim rngC1 As Range, rngC2 As Range
Dim lZ As Long, lCol As Long
Dim strSort1 As String, strSort2 As String
strSort1 = "Bezeichnung"    '1. Sortierbegriff (Überschrift)
strSort2 = "Familienname"   '2. Sortierbegriff (Überschrift)
lZ = [A1].CurrentRegion.Rows.Count      'Zeilenanzahl des Bereiches um A1
lCol = [A1].CurrentRegion.Columns.Count 'Spaltenanzahl des Bereiches um A1
'Zunächst prüfen, ob die beiden Suchbegriffe in Zeile 2 enthalten sind :
If Application.CountIf([2:2], strSort1) > 0 And _
Application.CountIf([2:2], strSort2) > 0 Then
Set rngC1 = [2:2].Find(strSort1) 'Sucht in Zeile 2 nach 1. Suchbegriff
Set rngC2 = [2:2].Find(strSort2) 'Sucht in Zeile 2 nach 2. Suchbegriff
Range(Cells(2, 1), Cells(lZ, lCol)).Sort Key1:=rngC1, Order1:=xlAscending, _
Key2:=rngC2, Header:=xlYes, OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
End If
End Sub
Zunächst wird überprüft, ob BEIDE Suchbegriffe in Zeile 2 enthalten sind, falls ja : die Beiden Zellen werden in rngC1 und rngC2 gespeichert und damit sortiert.
Evtl. musst Du die Ermittlung der Zeilen-/Spaltenanzahl (lZ und lCol) noch anpassen.
Gruß, NoNet
Anzeige
Nicht Herrmann oder Reinhard, sondern NoNet _oT
31.01.2012 14:58:34
NoNet
_oT = "ohne Text"
Perfekt, Danke Nonet! Servus, Walter_oT
31.01.2012 15:01:03
WalterK
AW: VBA - Sortieren
31.01.2012 14:59:13
Tino
Hallo,
kannst mal so versuchen.
Tabelle im Code noch anpassen, evtl. noch die letzte Zeile (Lz) und Spalte (LCol) anpassen.
Sub Test()
Dim varColFAMILIENNAME, varColBEZEICHNUNG
Dim Lz&, LCol&

With Tabelle1 'Tabelle anpassen 
    varColFAMILIENNAME = Application.Match("FAMILIENNAME", .Rows(2), 0)
    varColBEZEICHNUNG = Application.Match("BEZEICHNUNG", .Rows(2), 0)
    
    If IsNumeric(varColBEZEICHNUNG) And IsNumeric(varColFAMILIENNAME) Then
        Lz = .UsedRange.Rows(.UsedRange.Rows.Count).Row
        LCol = .UsedRange.Columns(.UsedRange.Columns.Count).Column
        
        If Lz > 2 Then
            .Range(.Cells(3, 1), .Cells(Lz, LCol)).Sort _
            Key1:=.Cells(3, varColFAMILIENNAME), Order1:=xlAscending, Key2:=.Cells(3, varColBEZEICHNUNG), Order2:=xlAscending, _
            Header:=xlNo, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
        End If
    End If
End With

End Sub
Gruß Tino
Anzeige
Passt natürlich auch, Danke Tino! Servus Walter
31.01.2012 15:07:30
WalterK

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige