Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Sortierung mit Cells

Sortierung mit Cells
Joni
Hi,
wie kriege ich es hin, dass ich die Sortierung mit Cells machen kann?
klappt nicht:
Sheets("Liste").Range(Cells(l, m), Cells(j - 1, m + 7)).sort Key1:=Range(Cells(l, m + 7)), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
funktioniert:
Sheets("Liste").Range(Cells(l, m), Cells(j - 1, m + 7)).sort Key1:=Range("H6"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Auch mit .Adress hinten dran klappt es nicht. Ich kriege immer einen Fehler 400.
Danke für eure Hilfe.
Gruß Joni
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Sortierung mit Cells
21.01.2010 00:19:47
Gerd
Hallo Joni!
Sheets("Liste") ist wohl zur Zeit "in". :-)
sort Key1:=Range(Cells(l, m + 7)), ...................
so:
sort Key1:=Cells(l, m + 7), ...................
sort Key1:=Range(Cells(l, m + 7), Cells(l, m + 7)), ................... wäre zwar ebenfalls möglich,
ist hier aber überflüssig.
Gruß
Gerd
Anzeige
AW: Sortierung mit Cells
21.01.2010 10:46:57
Joni
Hallo Gerd,
Daniel hat mich schon erleuchtet. Kommt auf das Gleiche raus.
Danke.
Gruß Joni
AW: Sortierung mit Cells
21.01.2010 00:30:33
Daniel
Hi
also zunächst einmal:
wenn du eine Range über 2 Cells definierst und das Sheet mit angibst, dann muss das Sheet auch vor den beiden Cells stehen, dh.
Range(Sheets(xy).Cells(a,b), Sheets(xy).Cells(c,d))

sollte der Code im Modul eines Tabellenblatts stehen, kann auch ggf das erforderlich sein:
Sheets(xy).Range(Sheets(xy).Cells(a,b), Sheets(xy).Cells(c,d))

das gleiche gilt für den SORT-Befehl. Wenn du bei SORT das Tabellenblatt angibst, dann musst du das bei den .KEY-Parametern wiederholen:
Sheets(xy).Range("A1:C100").Sort Key1:=Sheet(xy).Cells(1,1), ...
dein og. Code kann in beiden Fällen nur dann funktionieren, wenn das Sheet("Liste") aktiv ist. Falls ein anderes aktiv sein sollte, gibts Probleme.
jetzt zu dem Unterschied zwischen deinen beiden Versuchen:
im unteren Fall wird klar nach der Spalte H sortiert.
im oberen Fall hängt die Sortierspalte davon ab, welcher Wert in der Zelle Cells(l, m + 7) steht.
Exel nimmt den Inhalt dieser Zelle als Parameter für die Range-Funktion, dh das ganze kann nur funktionieren, wenn in Cells(l, m + 7) eine gültige Zelladdresse wie "H6" steht oder ein vorhandener Name.
Wenn du allerdings nach der Spalte m+7 sortieren willst, muss dein SORT-Befehl so aussehen:
Sheets("Liste").Range(Cells(l, m), Cells(j - 1, m + 7)).sort Key1:=Sheet("Liste").Cells(l, m + 7), order1:=...
Gruß, Daniel
Anzeige
AW: Sortierung mit Cells
21.01.2010 10:37:56
Joni
Hallo Daniel,
danke für deine Infos. Mir war soweit alles klar. Mein Fehler war das Range bei der Cells-Angabe des Key1.
Range nur bei fixer Angabe => Key1:=Range("H6")
kein Range bei relativer Angabe => Key1:=Sheets("Liste").Cells(l, m + 7)
Jetzt funktioniert es.
Nochmal Danke!
Gruß Joni
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Sortierung mit Cells in Excel VBA


Schritt-für-Schritt-Anleitung

Um eine Sortierung in Excel mit VBA durchzuführen, kannst du folgende Schritte befolgen:

  1. Öffne den VBA-Editor: Drücke ALT + F11.
  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (deinWorkbookName)" und wähle Einfügen > Modul.
  3. Schreibe den folgenden Code:
Sub SortiereMitCells()
    Dim l As Long, j As Long, m As Long
    ' Hier sollten die Werte für l, j und m gesetzt werden
    l = 1
    j = 10
    m = 2

    Sheets("Liste").Range(Cells(l, m), Cells(j - 1, m + 7)).Sort _
        Key1:=Cells(l, m + 7), Order1:=xlAscending, Header:=xlNo, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
End Sub
  1. Passe die Variablen an: Setze l, j und m entsprechend deiner Daten.
  2. Führe das Makro aus: Drücke F5 oder gehe zu Run > Run Sub/UserForm.

Häufige Fehler und Lösungen

  • Fehler 400: Dieser Fehler tritt häufig auf, wenn die Cells-Referenz nicht korrekt angegeben wurde. Stelle sicher, dass du die richtige Syntax verwendest:

    Sort Key1:=Sheets("Liste").Cells(l, m + 7)
  • Falsche Verwendung von Range: Wenn du Key1 relativ angibst, verwende keine Range-Funktion:

    Key1:=Sheets("Liste").Cells(l, m + 7) ' Richtig
    Key1:=Range("H6") ' Richtig, aber nur wenn H6 fixe Zelle ist

Alternative Methoden

Falls du nicht mit Cells arbeiten möchtest, kannst du auch die Range-Funktion direkt verwenden:

Sheets("Liste").Range("A1:C100").Sort Key1:=Sheets("Liste").Range("H6"), Order1:=xlAscending

Diese Methode ist einfacher, wenn du feste Zellreferenzen hast, anstatt dynamische Werte zu verwenden.


Praktische Beispiele

Hier ist ein Beispiel, wie du die Sortierung mit einer dynamischen Cells-Referenz umsetzen kannst:

Sub BeispielSortierung()
    Dim l As Long, j As Long, m As Long
    l = 1
    j = 10
    m = 2

    ' Sortiere nach der Spalte, die in der Zelle (l, m + 7) steht
    Sheets("Liste").Range(Cells(l, m), Cells(j - 1, m + 7)).Sort _
        Key1:=Sheets("Liste").Cells(l, m + 7), Order1:=xlAscending
End Sub

Tipps für Profis

  • Verwende Option Explicit: Stelle sicher, dass alle Variablen deklariert sind, um Fehler zu vermeiden.
  • Fehlerbehandlung: Füge eine Fehlerbehandlungsroutine hinzu, um die Ausführung zu stabilisieren:
On Error GoTo Fehlerbehandlung
' Dein Code hier
Exit Sub

Fehlerbehandlung:
    MsgBox "Ein Fehler ist aufgetreten: " & Err.Description
  • Nutze Debug.Print: Verwende Debug.Print, um Variablenwerte während der Ausführung zu überprüfen.

FAQ: Häufige Fragen

1. Wie kann ich die Sortierreihenfolge ändern?
Ändere Order1:=xlAscending in Order1:=xlDescending.

2. Was ist der Unterschied zwischen Cells und Range?
Cells wird verwendet, um auf Zellen durch Zeilen- und Spaltennummern zuzugreifen, während Range für spezifische Zelladressen oder Bereiche genutzt wird.

3. Wie kann ich mehrere Sortierschlüssel hinzufügen?
Du kannst mehrere Key-Parameter hinzufügen, z.B.:

.Sort Key1:=Cells(l, m + 7), Key2:=Cells(l, m + 6), Order1:=xlAscending, Order2:=xlDescending

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