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

Sortieren, benutzerdefinierte Reihenfolge VBA

Forumthread: Sortieren, benutzerdefinierte Reihenfolge VBA

Sortieren, benutzerdefinierte Reihenfolge VBA
29.03.2003 10:36:09
Christian
Hallo Excelexperten,
ich möchte eine Tabelle mit VBA nach einer Materialnummer sortieren. Diese Materialnr ist eine 6 stellige Zahl, z.B. 100741. Die Tabelle soll jedoch nicht ab- oder aufsteigend sortiert werden, sondern nach einer von mir vorgegebenen Reihenfolge.
Die Reihenfolge könnte so aussehen:
100741, 142438, 138753, 113503, 113408, 119631,...
Vielen Dank im voraus.
Gruss Christian

Anzeige

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

Betreff
Datum
Anwender
Anzeige
Re: Sortieren, benutzerdefinierte Reihenfolge VBA
29.03.2003 11:21:59
ChrisL

Hallo Christian

Es scheint, ich habe den IQ-Test nicht bestanden. Welcher Logik folgt deine Reihenfolge?

Gruss
Chris

eine Möglichkeit....
29.03.2003 11:27:39
Rolf Kersjes

Hallo Christian,

die von Dir vorgegebene Reihenfolge mußt Du um eine Spalte ergänzen und mit aufsteigenden Ziffern (1 bis n) versehen.

Die zu sortierende Tabelle um eine Spalte mit SVerweis auf die vorgegebene Reihenfolge mit der aufsteigenden Ziffernfolge ergänzen. Danach kannst Du dann diese Tabelle nach dem Ergebnis der SVerweis-Spalte sortieren.

Rolf

Anzeige
Re: Sortieren, benutzerdefinierte Reihenfolge VBA
29.03.2003 13:03:10
Christian

Hallo Chris,
Diese Materialnummern gehören zu einem Produkt und dessen Vorstufen. Wenn z.B. Produkt "D" hergestellt wird, muss dafür erst A,B und dann C hergestellt werden und daraus dann das Endprodukt D. Jedes dieser Zwischenprodukte hat eine eigene Materialnr. Wenn ich diese Materialnr von Excel ab- oder aufsteigend sortieren lasse , erhalte ich nicht die Reihenfolge in der das Produkt hergestellt wird, da die Materialnr wahrlos vergeben wurden und kein System haben. Wenn ich den Namen der Zwischenprodukte alphabetisch sortieren lasse, erhalte ich ebenfalls nicht die richige Reihenfolge. Deshalb muss ich Excel klar machen, dass es die Zwischenprodukte in der von mir vorgebenen Reihenfolge sortieren soll. Das ganze müsste ich mit der Sort-Methode im VBA machen. Kann ich bei der Sort-Methode eine eigene Reihenfolge angeben oder kann ich damit nur ab/aufsteigend sortieren?
Gruss
Christian

Anzeige
Re: Sortieren, benutzerdefinierte Reihenfolge VBA
30.03.2003 10:04:18
ChrisL

Hallo Chris

Sorry bin etwas spät. Muss Rolf recht geben. Die Liste mit der Korrekten Reihenfolge musst du ja sowieso hinterlegen. Dann machst du einfach in der Spalte neben dieser Liste einen Index... Sozusagen die Rangliste. Auf dem richtigen Blatt ermittelst du mit SVERWEIS den Rang und kannst es so sortieren.

Gruss
Chris

Anzeige
Re: Sortieren, benutzerdefinierte Reihenfolge VBA
30.03.2003 19:58:18
Christian

Hi,

ich danke euch beiden für eure Mühe. Ich habe noch eine andere Möglichkeit gefunden:

Setzen einer benutzerdefinierten Sortierungsliste:
Application.AddCustomList Array ("300", "100", "500", "400")
Sortieren mit dieser Reihenfolge:
Selection.Sort Key1:=Range("A1"), OrderCustom:=6

"OrderCustom 6" weil es der fünfte Eintrag bei den benutzerdefinierten Listen (Menüleiste, Extras->Optionen) ist. Irgendwie unlogisch, aber anscheinend wird der Punkt "Neue Liste" als 1 gezählt und somit ist meine dann Nr.6.

Gruss
Christian

Anzeige
;
Anzeige

Infobox / Tutorial

Benutzerdefinierte Sortierung in Excel mit VBA


Schritt-für-Schritt-Anleitung

Um eine benutzerdefinierte Sortierung in Excel mit VBA zu erstellen, kannst du folgende Schritte ausführen:

  1. Öffne den Visual Basic for Applications (VBA) Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu:

    • Klicke mit der rechten Maustaste auf „VBAProject (DeineDatei.xlsx)“ und wähle „Einfügen“ > „Modul“.
  3. Füge den VBA-Code ein:

    • Kopiere und füge den folgenden Code in das Modul ein:
    Sub BenutzerdefinierteSortierung()
       ' Benutzerdefinierte Liste hinzufügen
       Application.AddCustomList Array("100741", "142438", "138753", "113503", "113408", "119631")
    
       ' Sortieren mit der benutzerdefinierten Reihenfolge
       With ActiveSheet.Sort
           .SortFields.Clear
           .SortFields.Add Key:=Range("A1"), Order:=xlCustom, CustomOrder:="100741,142438,138753,113503,113408,119631"
           .SetRange Range("A1:A100") ' A1:A100 anpassen
           .Header = xlYes
           .Apply
       End With
    End Sub
  4. Führe das Makro aus:

    • Schließe den VBA-Editor und gehe zurück zu Excel.
    • Drücke ALT + F8, wähle BenutzerdefinierteSortierung und klicke auf „Ausführen“.
  5. Überprüfe das Ergebnis:

    • Deine Tabelle sollte nun entsprechend der benutzerdefinierten Reihenfolge sortiert sein.

Häufige Fehler und Lösungen

  • Fehler: "Anwendung oder Objekt definierte Fehler"

    • Lösung: Stelle sicher, dass der Bereich (z. B. Range("A1:A100")) korrekt definiert ist und die Spalte die zu sortierenden Werte enthält.
  • Fehler: Die benutzerdefinierte Liste wird nicht erkannt

    • Lösung: Überprüfe, ob die benutzerdefinierte Liste korrekt hinzugefügt wurde. Der Name der Liste muss genau mit dem im Code übereinstimmen.

Alternative Methoden

Wenn du keine VBA-Lösungen verwenden möchtest, kannst du auch die integrierten Excel-Funktionen nutzen:

  1. Hinzufügen einer Hilfsspalte:

    • Erstelle eine neue Spalte neben deiner Materialnummer und füge die Sortierreihenfolge manuell als Index hinzu (z. B. 1, 2, 3,...).
  2. Sortieren über die Benutzeroberfläche:

    • Markiere deine Daten und gehe zu „Daten“ > „Sortieren“. Wähle die Hilfsspalte als Sortierschlüssel aus.

Praktische Beispiele

  • Sortieren nach Materialnummern:
    • Angenommen, du hast Materialnummern in Spalte A und möchtest sie in der Reihenfolge 100741, 142438, 138753 sortieren. Du kannst die oben genannten VBA-Techniken oder die Hilfsspalte verwenden, um dies zu erreichen.

Tipps für Profis

  • Erstelle komplexe benutzerdefinierte Listen:

    • Du kannst die AddCustomList-Methode nutzen, um komplexere Sortierreihenfolgen zu erstellen, indem du Arrays mit mehr als 10 Einträgen verwendest.
  • Automatisiere die Sortierung:

    • Integriere die Sortierfunktion in bestehende Makros, um Daten bei der Eingabe automatisch zu sortieren.

FAQ: Häufige Fragen

1. Kann ich die benutzerdefinierte Sortierung auf mehrere Spalten anwenden?
Ja, du kannst die Sortierung auf mehrere Spalten anwenden, indem du mehrere Sortierfelder in deinem VBA-Code hinzufügst.

2. Wie kann ich die benutzerdefinierte Liste ändern oder löschen?
Du kannst eine benutzerdefinierte Liste jederzeit über das Menü „Optionen“ in Excel ändern oder löschen. Gehe dazu auf „Datei“ > „Optionen“ > „Erweitert“ und suche nach „Benutzerdefinierte Listen“.

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