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

Forumthread: VBA: Spalte sortieren - ein einfaches Problem

VBA: Spalte sortieren - ein einfaches Problem
04.04.2017 10:53:48
Tim
Hallo,
ich bin noch ziemlich neu bei VBA und habe ein vermutlich sehr einfaches Problem:
Ich möchte eine Spalte mit einer variablen Anzahl an Werten nach diesen absteigend sortieren.
Die Spalte enthält keine Überschrift und die Werte beginnen in Zeile 1, ohne Leerzellen zwischen den einzelnen Werten.
Der Makro-Recorder liefert mir dafür ein sehr langes Makro und ich dachte mir, das geht bestimmt auch einfacher.
Ich habe folgendes probiert, was mir jedoch einen Run-time error 1004 liefert.
Eine andere Idee war den letzten Wert in der Spalte dynamisch für die Range zu berechnen, aber auch das hat nicht geklappt und über die Suche habe ich nur Lösungen für komplexere Szenarien gefunden.
Kann mir jemand weiterhelfen ?
Mein Code:
Worksheets(12).Columns("K:K").Sort , Key1:=Range("K1"), Order1:=xlDescending, Header:=xlNo
Vielen Dank im Voraus für Eure Hilfe,
Tim
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: Spalte sortieren - ein einfaches Problem
04.04.2017 11:01:54
Werner
Hallo Tim,
kann es sein, dass du die Reihenfolge der Blätter verändert hast?
Sprich das Blatt im Code mal direkt mit seinem Namen an. Im Code mußt du halt
Worksheets("Tabelle1") = -Name der im Tabellenblattreiter steht- an deine Bedürfnisse anpassen.
Public Sub Sortieren()
Worksheets("Tabelle1").Columns("K:K").Sort , Key1:=Range("K1"), _
Order1:=xlDescending, Header:=xlNo
End Sub
Gruß Werner
Anzeige
AW: VBA: Spalte sortieren - ein einfaches Problem
04.04.2017 11:04:07
Tim
Hallo Werner,
genau das - habs auch grad gemerkt. :)
Vielen Dank trotzdem ! ;)
VG,
Tim
AW: Danke für die Rückmeldung. o.w.T.
04.04.2017 11:06:09
Werner
AW: VBA: Spalte sortieren - ein einfaches Problem
04.04.2017 11:24:25
Tim
Hallo Werner,
genau das - habs auch grad gemerkt. :)
Vielen Dank trotzdem ! ;)
VG,
Tim
Anzeige
AW: VBA: Spalte sortieren - ein einfaches Problem
04.04.2017 12:13:49
Werner
Hallo Tim,
meinst du das?
Sub zht()
Dim WS2 As Worksheet
Dim letzteZeile As Long
Set WS2 = Worksheets("Tabelle2")
Application.DisplayAlerts = False
Range("G1").Select
Application.CutCopyMode = False
Selection.TextToColumns Destination:=Range("G1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=False, Comma:=False, Space:=True, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1 _
)), TrailingMinusNumbers:=True
Application.DisplayAlerts = True
letzteZeile = WS2.Cells(Rows.Count, 3).End(xlUp).Row + 1
WS2.Range(WS2.Cells(letzteZeile, 3), WS2.Cells(letzteZeile, 6)) = WS2.Range("AC1:AF1").Value
'### Neu ###
WS2.Range(WS2.Cells(letzteZeile, 3), WS2.Cells(letzteZeile, 6)).PrintOut
WS2.Range("G1:S1").ClearContents
End Sub
Das Makro zum Drucken kannst du dann weg lassen.
Gruß Werner
Anzeige
Im falschen Beitrag gepostet. o.w.T.
04.04.2017 14:06:40
Werner
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

VBA: Spalte sortieren leicht gemacht


Schritt-für-Schritt-Anleitung

Um eine Spalte in Excel mit VBA absteigend zu sortieren, kannst Du die folgenden Schritte befolgen:

  1. Öffne den VBA-Editor: Drücke ALT + F11 in Excel.

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsm)" und wähle Einfügen > Modul.

  3. Gib den folgenden Code ein:

    Sub SpalteSortieren()
       Dim ws As Worksheet
       Set ws = ThisWorkbook.Worksheets("Tabelle1") ' Ändere den Namen entsprechend
       ws.Columns("K:K").Sort Key1:=ws.Range("K1"), Order1:=xlDescending, Header:=xlNo
    End Sub
  4. Starte das Makro: Schließe den VBA-Editor und drücke ALT + F8, wähle SpalteSortieren und klicke auf Ausführen.


Häufige Fehler und Lösungen

  • Run-time error 1004: Dieser Fehler tritt häufig auf, wenn das Arbeitsblatt nicht korrekt referenziert wird. Stelle sicher, dass Du den Namen des Arbeitsblatts im Code richtig angegeben hast.

  • Sortierung funktioniert nicht: Wenn die Sortierung nicht wie erwartet funktioniert, überprüfe, ob die Zellen in der Spalte tatsächlich Daten enthalten und ob es keine Leerzellen gibt.


Alternative Methoden

Wenn Du eine Excel-Tabelle sortieren möchtest, kannst Du auch die ListObject-Methode verwenden, die einfacher zu handhaben ist:

Sub TabelleSortieren()
    Dim tbl As ListObject
    Set tbl = ThisWorkbook.Worksheets("Tabelle1").ListObjects("Tabelle1") ' Tabellenname anpassen
    tbl.Sort.SortFields.Clear
    tbl.Sort.SortFields.Add Key:=Range("K:K"), SortOn:=xlSortOnValues, Order:=xlDescending
    tbl.Sort.Apply
End Sub

Praktische Beispiele

Hier sind einige Beispiele, wie Du mit VBA Spalten sortieren kannst:

  1. Aufsteigend sortieren:

    ws.Columns("K:K").Sort Key1:=ws.Range("K1"), Order1:=xlAscending, Header:=xlNo
  2. Sortieren nach mehreren Spalten:

    ws.Sort.SortFields.Clear
    ws.Sort.SortFields.Add Key:=ws.Range("K:K"), Order:=xlDescending
    ws.Sort.SortFields.Add Key:=ws.Range("J:J"), Order:=xlAscending
    ws.Sort.Apply

Tipps für Profis

  • Verwende Variablen für das Arbeitsblatt: Um den Code flexibler zu gestalten, setze das Arbeitsblatt in eine Variable, wie im Beispiel gezeigt.
  • Vermeide die Auswahl von Zellen: Direkte Referenzen sind effizienter und verhindern Fehler.
  • Nutze Application.ScreenUpdating: Setze dies auf False, bevor Du das Makro ausführst, um die Leistung zu verbessern und Flackern zu vermeiden:

    Application.ScreenUpdating = False
    ' Dein Sortiercode hier
    Application.ScreenUpdating = True

FAQ: Häufige Fragen

1. Wie kann ich eine Spalte aufsteigend sortieren?
Ändere einfach Order1:=xlDescending zu Order1:=xlAscending in Deinem VBA-Code.

2. Kann ich die Sortierung auf mehrere Spalten anwenden?
Ja, Du kannst mehrere SortFields hinzufügen, um nach verschiedenen Spalten zu sortieren. Beispiel siehe oben.

3. Was ist der Unterschied zwischen Sort und SortFields?
Sort wird verwendet, um die Sortierung anzuwenden, während SortFields verwendet wird, um die spezifischen Kriterien für die Sortierung festzulegen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige