Was ich letztlich bräuchte wäre sowas wie ein variables Selection.Sort.
Geht das irgendwie?
Vielen Dank.
Lars
Sub variables_sortieren()
lz = Cells(Rows.Count, 1).End(xlUp).Row
ls = Cells(1, 256).End(xlToLeft).Column
sp = InputBox("Sortierung")
Range(Cells(2, 1), Cells(lz, ls)).Sort Key1:=Cells(2, sp), Header:=xlNo
End Sub
Öffne Excel und erstelle ein neues VBA-Modul:
ALT + F11, um den VBA-Editor zu öffnen.Füge den folgenden Code ein:
Sub variables_sortieren()
lz = Cells(Rows.Count, 1).End(xlUp).Row
ls = Cells(1, 256).End(xlToLeft).Column
sp = InputBox("Sortierung")
Range(Cells(2, 1), Cells(lz, ls)).Sort Key1:=Cells(2, sp), Header:=xlNo
End Sub
Führe das Makro aus:
ALT + F8, um das Makro auszuführen.variables_sortieren aus und klicke auf "Ausführen".Gib die Spaltennummer zur Sortierung ein, wenn du dazu aufgefordert wirst.
Problem: excel benutzerdefiniertes sortieren funktioniert nicht.
Header korrekt gesetzt ist. Wenn deine Tabelle Titel hat, setze Header:=xlYes. Andernfalls verwende Header:=xlNo.Problem: Der Code sortiert die Daten nicht.
InputBox eingibst, und stelle sicher, dass sie gültig ist.Verwendung von vba .sort:
Eine Alternative zur Verwendung von Selection.Sort ist die direkte Verwendung von Range.Sort für mehr Kontrolle über die Sortierung.
Range("A2:C10").Sort Key1:=Range("B2:B10"), Order1:=xlAscending, Header:=xlYes
Benutzerdefinierte Listen: Du kannst auch benutzerdefinierte Listen in Excel erstellen, die dir bei der Sortierung helfen, insbesondere wenn du nach spezifischen Kriterien sortieren möchtest.
Einfaches Sortieren mit zwei Kriterien:
Sub sortieren_mit_zwei_kriterien()
Range("A2:C100").Sort Key1:=Range("A2:A100"), Order1:=xlAscending, Key2:=Range("B2:B100"), Order2:=xlDescending, Header:=xlYes
End Sub
Sortieren nach benutzerdefinierten Werten:
Sub benutzerdefinierte_sortierung()
Range("A2:A100").Sort Key1:=Range("A2:A100"), OrderCustom:=1, Header:=xlYes
End Sub
Hierbei wird die Sortierung anhand einer benutzerdefinierten Liste durchgeführt, die in den Excel-Optionen definiert ist.
Application.ScreenUpdating = False am Anfang deines Makros und setze es am Ende wieder auf True, um die Performance zu verbessern.MatchCase-Option verwenden möchtest, um die Sortierung case-sensitiv zu gestalten.Verwende With-Anweisungen, um deinen Code lesbarer zu machen:
With Range("A2:C100")
.Sort Key1:=.Columns(1), Order1:=xlAscending, Header:=xlYes
End With
1. Wie kann ich eine benutzerdefinierte Liste zum Sortieren in Excel erstellen?
Gehe zu "Datei" > "Optionen" > "Erweitert" > "Allgemein" und klicke auf "Benutzerdefinierte Listen bearbeiten". Dort kannst du deine eigene Liste erstellen.
2. Welche Excel-Version benötige ich für VBA?
VBA ist in den meisten Versionen von Excel verfügbar, einschließlich Excel 2010, 2013, 2016, 2019 und Microsoft 365.