Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Makro für aufsteigend sortieren

Makro für aufsteigend sortieren
27.04.2009 09:32:45
Jeron
Hallo zusammen,
ich würde gerne die Spalte B, nach Lagerartikelnummer = Überschrift in B2 absteigend sortieren.
Das Makro soll generell immer die gesamte Spalte B bearbeiten.
Ich habe es mit dem Makro-Recorder ausprobiert. Aber mir zerschießt es die Tabelle bei erneutem Versuch.
Kann mir bitte jemand helfen?
Vielen Dank.

Sub Sortieren ()
Range("B2").Select
Range("A1:N266").Sort Key1:=Range("B3"), Order1:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
End Sub


Viele Grüße aus München
Jeron Bitto

Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro für aufsteigend sortieren
27.04.2009 09:39:21
Tino
Hallo,
versuche es mal so.
Wenn in Zeile 2 die Überschrift ist so
Range("A2:N266").Sort Range("B2"), xlAscending, , , , , , xlYes
Wenn in Zeile 2 nicht die Überschrift ist
Range("A2:N266").Sort Range("B2"), xlAscending, , , , , , xlNo
Gruß Tino
AW: Makro für aufsteigend sortieren
27.04.2009 10:31:19
Jeron
Hallo Tino,
aus deinen Angaben kann ich leider nicht alles umsetzen. Das Problem ist auch, dass unterschiedliche Längen der Spalten mit berücksichtigt weren müssen. Ich also nicht immer von A1:N266 ausgehen kann.
Ich habe es mit nachfolgenden Makro probiert und es zerschießt mir wieder die Tabelle. hast du einen weiteren Tip für mich?

Sub Sortieren()
' Makro1 Makro
' Makro am 27.04.2009 von Jeron Bitto aufgezeichnet
If Worksheets(1).Cells(2, 2).Value = "Lagerartikelnummer" Then
Range("B2").Select
Range("A1:N258").Sort Key1:=Range("B3"), Order1:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Else: Worksheets(1).Cells(1, 2).Value = "nichtmöglich"
End If
End Sub


Anzeige
AW: Makro für aufsteigend sortieren
27.04.2009 10:55:14
Tino
Hallo,
versuche es mal so.
Im Beispiel gehe ich davon aus, dass die Überschrift sich in Zeile 2 befindet.
Sub Sortieren()
Dim SortSpalte As Range

With Worksheets(1)
    'in Zeile 2 befindet sich die Überschrift !!!!! 
    'Suche nach Lagerartikelnummer in Zeile 2, Groß u. Kleinschreibung wird beachtet 
    Set SortSpalte = .Rows(2).Find("Lagerartikelnummer", , xlValues, 1, 1, 1, True, False)
    
    If Not SortSpalte Is Nothing Then
     .Range("A2:N" & .Rows.Count).Sort SortSpalte, xlAscending, , , , , , xlYes
    Else
     MsgBox "Spalte ""Lagerartikelnummer"" wurde nicht gefunden!", vbCritical
    End If

End With
End Sub


Gruß Tino

Anzeige
Spalten auch unbekannt...
27.04.2009 11:13:11
Tino
Hallo,
ist auch die Anzahl der Spalten unbekannt, kannst Du es auch so machen.
Sub Sortieren()
Dim SortSpalte As Range

With Worksheets(1)
    'in Zeile 2 befindet sich die Überschrift !!!!! 
    'Suche nach Lagerartikelnummer in Zeile 2, Groß u. Kleinschreibung wird beachtet 
    Set SortSpalte = .Rows(2).Find("Lagerartikelnummer", , xlValues, 1, 1, 1, True, False)
        
    If Not SortSpalte Is Nothing Then
     .Range("A2", .Cells(.Rows.Count, .Columns.Count)).Sort SortSpalte, xlAscending, , , , , , xlYes
    Else
     MsgBox "Spalte ""Lagerartikelnummer"" wurde nicht gefunden!", vbCritical
    End If

End With

End Sub


Gruß Tino

Anzeige
AW: Makro für aufsteigend sortieren
27.04.2009 11:15:12
Jeron
Hallo Tino,
es funktioniert glaub ich so richtig gut. Ich danke dir erstmal für dein Know How und deine Mühe.
Ich habe nur noch ein kleines Problem,
.Range("A2:N" & .Rows.Count).Sort SortSpalte, xlAscending, , , , , , xlYes
in dieser Zeile tritt ein Bug auf auf " Für diese Aktion müssen alle verbundenen Zellen die selbe Größe haben"
Hast du eine Ahnung wie ich dieses Problem in den Griff bekomme?
Viele Grüße
Jeron
Anzeige
AW: Makro für aufsteigend sortieren
27.04.2009 11:23:48
Tino
Hallo,
"Hast du eine Ahnung wie ich dieses Problem in den Griff bekomme?"
Ja habe ich, keine verbundenen Zellen verwenden. ;-)
Gruß Tino
verbundene Zellen aufheben...
27.04.2009 11:32:06
Tino
Hallo,
verbundene Zellen kannst Du im Bereich z. Bsp. so aufheben.
Sub Sortieren()
Dim SortSpalte As Range

With Worksheets(1)
    'in Zeile 2 befindet sich die Überschrift !!!!! 
    'Suche nach Lagerartikelnummer in Zeile 2, Groß u. Kleinschreibung wird beachtet 
    Set SortSpalte = .Rows(2).Find("Lagerartikelnummer", , xlValues, 1, 1, 1, True, False)
    
    If Not SortSpalte Is Nothing Then
     .Range("A2", .Cells(.Rows.Count, .Columns.Count)).MergeCells = False
     .Range("A2", .Cells(.Rows.Count, .Columns.Count)).Sort SortSpalte, xlAscending, , , , , , xlYes
    Else
     MsgBox "Spalte ""Lagerartikelnummer"" wurde nicht gefunden!", vbCritical
    End If

End With
End Sub


Gruß Tino

Anzeige
AW: Makro für aufsteigend sortieren
27.04.2009 10:56:35
zu
hi,
sollte nicht bei A2 begonnen werden?
statt
Range("A1:N258")
Range("A2:N258") usw..
gruß
robert
AW: Makro für aufsteigend sortieren
27.04.2009 11:23:50
Jeron
Hallo zusammen,
ich habe das Problem selbst gefunden.
Ich frage mich gerade ob es ein Makro gibt, dass das Tabellenblatt auf verbundene Zellen überprüft und dann auflöst ?
Einen schönen Tag.
@ Thorsten das Problem ist gelöst.
@ Tino: Danke Dir noch mal!!
Viele Grüße
Jeron
Anzeige
AW: Makro für aufsteigend sortieren
27.04.2009 11:49:40
robert
hi,
vermeide einfach verbundene zellen, diesen tipp findest du hier im forum immer wieder-
statt dessen-
format-zellen-ausrichtung-horizontal-über auswahl zentrieren-
probier es einmal
gruß
robert
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Makro zum aufsteigenden Sortieren in Excel


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und lade die Tabelle, die Du sortieren möchtest.

  2. Öffne den VBA-Editor: Drücke ALT + F11.

  3. Füge ein neues Modul hinzu: Rechtsklicke im Projekt-Explorer und wähle Einfügen > Modul.

  4. Kopiere und füge den folgenden Code ein:

    Sub Sortieren()
       Dim SortSpalte As Range
    
       With Worksheets(1)
           ' Suche nach Lagerartikelnummer in Zeile 2
           Set SortSpalte = .Rows(2).Find("Lagerartikelnummer", , xlValues, xlWhole, xlByColumns, xlNext, False)
    
           If Not SortSpalte Is Nothing Then
               .Range("A2", .Cells(.Rows.Count, .Columns.Count)).Sort SortSpalte, xlAscending, , , , , , xlYes
           Else
               MsgBox "Spalte 'Lagerartikelnummer' wurde nicht gefunden!", vbCritical
           End If
       End With
    End Sub
  5. Schließe den VBA-Editor und gehe zurück zu Excel.

  6. Führe das Makro aus: Drücke ALT + F8, wähle Sortieren und klicke auf Ausführen.


Häufige Fehler und Lösungen

  • Problem: "Für diese Aktion müssen alle verbundenen Zellen die selbe Größe haben."

    • Lösung: Überprüfe, ob verbundene Zellen im Bereich vorhanden sind. Du kannst alle verbundenen Zellen aufheben mit:
    .Range("A2", .Cells(.Rows.Count, .Columns.Count)).MergeCells = False
  • Problem: Das Makro sortiert nicht wie gewünscht.

    • Lösung: Stelle sicher, dass die Überschrift "Lagerartikelnummer" in Zeile 2 vorhanden ist und korrekt geschrieben ist.

Alternative Methoden

  • Du kannst auch die Excel-Funktion "Sortieren" nutzen:

    1. Markiere den Bereich, den Du sortieren möchtest.
    2. Gehe zu Daten > Sortieren.
    3. Wähle die Spalte aus und die Sortierreihenfolge (aufsteigend oder absteigend).
  • Für horizontal sortierte Daten verwende die Funktion TRANSPOSE() zusammen mit SORT().


Praktische Beispiele

  1. Makro für unterschiedliche Spaltenlängen:

    Sub Sortieren()
       Dim SortSpalte As Range
       With Worksheets(1)
           Set SortSpalte = .Rows(2).Find("Lagerartikelnummer", , xlValues, xlWhole, xlByColumns, xlNext, False)
    
           If Not SortSpalte Is Nothing Then
               .Range("A2", .Cells(.Rows.Count, .Columns.Count)).Sort SortSpalte, xlAscending, , , , , , xlYes
           End If
       End With
    End Sub
  2. Daten aufsteigend sortieren: Verwende den Code oben, um die Daten in einer Tabelle aufsteigend zu sortieren.


Tipps für Profis

  • Verwende Fehlerbehandlungsroutinen in Deinem Makro, um unerwartete Fehler abzufangen.
  • Dokumentiere Deinen Code mit Kommentaren, um die Wartung zu erleichtern.
  • Experimentiere mit xlDescending für absteigende Sortierungen, indem Du die Parameter im Sort-Befehl änderst.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Spalten gleichzeitig sortieren?
Du kannst mehrere Sortierschlüssel im Sort-Befehl hinzufügen, indem Du weitere Key1, Key2 usw. angibst.

2. Was tun, wenn die Sortierung nicht funktioniert?
Überprüfe, ob alle Zellen im Sortierbereich die gleiche Datenart haben (z.B. alle Zahlen oder Text).

3. Kann ich ein Makro erstellen, das verbundene Zellen überprüft und auflöst?
Ja, Du kannst ein Makro schreiben, das mit der Methode UnMerge die verbundenen Zellen auflöst, bevor die Sortierung erfolgt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige