Ich habe eine Excel-Datei mit mehreren Zeilen in denen unterschiedlich viele Werte stehen und möchte diese von links nach rechts für jede Zeile einzeln aufsteigend sortieren.
Das ganze in Excel zu machen ist recht einfach mit einem kleinen Makro lösbar. Unter Daten – Sortieren – Optionen kann man zwar einstellen, dass man die Zeile sortieren möchte und nicht die Spalte, aber dann sortiert Excel die Zeilen nach dem “Vorbild” der ersten Zeile und dass ist nicht gewünscht.
Folgendes Makro erledigt die Aufgabe jedoch, indem es jede Zeile einzeln sortiert. Dabei kann über die Konstanten gesteuert werden, welche Spalten die Sortierung umfassen soll.
-
Option Explicit
-
‘ sorts cells in all rows of current worksheet ascending from left to right
-
Sub horizontalSort()
-
Dim i, lastRow As Integer
-
Const firstColumn As Integer = 1
-
Const lastColumn As Integer = 10
-
-
‘ find last row
-
lastRow = Cells(1, 1).End(xlDown).Row
-
-
‘ sort cells in each row ascending from left to right
-
For i = 1 To lastRow
-
Range(Cells(i, firstColumn), Cells(i, lastColumn)).Select
-
Selection.Sort Key1:=Range("A" & i), _
-
Order1:=xlAscending, Header:=xlNo, _
-
OrderCustom:=1, MatchCase:=False, _
-
Orientation:=xlLeftToRight, _
-
DataOption1:=xlSortTextAsNumbers
-
Next i
-
End Sub





