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

Forumthread: Bereich sortieren

Bereich sortieren
27.04.2021 21:12:54
Elmar
Hallo Experten,
wie bekomme ich es denn in VBA hin, dass ein Makro im markierten Bereich (der aber immer mal größer oder kleiner sein kann in meiner Tabelle, aber immer bei A1 startet) immer nach der letzten markierten Spalte den ganzen Bereich absteigend sortiert.
Leider stehe ich völlig auf dem Schlauch....
Vielleicht hat von euch Experten jemand eine Idee.
VG aus Bayern
Elmar
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Zeichne das mal als Makro auf ...
27.04.2021 21:30:33
lupo1
... der Range wird dann entweder ermittelt und eingetragen (das wäre nicht so gut, da nicht flexibel), oder der Sortierbereich wird gleich als Range("A1").CurrentRegion ermittelt. Das kannst Du auch selbst korrigieren.
AW: Bereich sortieren
27.04.2021 21:32:18
ralf_b
https://docs.microsoft.com/de-de/office/vba/api/excel.application.selection
Selection bezeichnet den markierten Bereich und gibt in diesem Fall eine Rangeobjekt zurück. Das kannst du entsprechend auswerten. Letzte Spalte, erste Zeile usw. und dann die Sortierung dazu einstellen.
Anzeige
AW: Bereich sortieren
27.04.2021 21:46:10
Elmar
Hallo ralf_b,
das verstehe ich schlicht nicht, kannst Du mir ein Beispiel geben mit einem Code?
Den Bereich markiere ich mit
With ActiveSheet.UsedRange
Range(Cells(1, 1), .Cells(.Rows.Count, .Columns.Count)).Select
End With
nun bekomme ich den Code nicht hin, dass nach der letzten Spalte sortiert wird.
Danke mal vorab
Grüße
Elmar
Anzeige
AW: Bereich sortieren
27.04.2021 21:58:05
ralf_b
Wenn du den Bereich schon mit Usedrange in die Hand nimmst, dann brauchst du weder das Select noch den Bereich anders ermitteln.
Usedrange ist bereits ein auswertbarer Zellbereich. Aber es geht laut Officehilfe auch einfacher die letzte Zelle des benutzten Bereiches zu ermitteln.
set lastcell = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell)
https://docs.microsoft.com/de-de/office/vba/api/excel.range.specialcells
Anzeige
AW: Bereich sortieren
27.04.2021 22:00:15
Daniel
Hi

With Selection 'oder wie immer du deinen Bereich vorliegen hast
.Sort Key1:=.Cells(1, .Columns.Count), Order1:=xldescending, header:=xlguess
End with
Gruß Daniel
AW: Bereich sortieren
27.04.2021 22:40:05
GerdL
Hallo Elmar,
unter mehrere Spalten absteigend sortieren, kann man sich verschiedene Varianten vorstellen.

Sub Unit()
Dim X As Range
If TypeOf Selection Is Range Then
With Selection
If .Cells(1).Address = "$A$1" Then
.UnMerge
If .Cells.Count > 6 Then
Set X = Cells(1, .Columns.Count + 1)
.Copy X
X.Resize(.Rows.Count, .Columns.Count).Sort Key1:=X, order1:=xlDescending, Header:=xlNo
Set X = Nothing
End If
End If
End With
End If
End Sub
Gruß Gerd
Anzeige
AW: Bereich sortieren
27.04.2021 22:59:20
Elmar
Hallo Experten,
jetzt hab ich gleich 3 Lösungen, die ich verwenden kann, habs auch noch ausprobiert!
Ich danke euch für euren super support!!
Gruß aus München
Elmar
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Bereich sortieren in Excel VBA


Schritt-für-Schritt-Anleitung

Um einen Bereich in Excel VBA absteigend zu sortieren, kannst Du das folgende Vorgehen anwenden. Der Code sortiert den markierten Bereich, der immer bei A1 startet und variabel in der Größe ist.

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Einfügen eines neuen Moduls:

    • Klicke mit der rechten Maustaste auf VBAProject (deineArbeitsmappe), wähle Einfügen und dann Modul.
  3. Füge den Code ein:

    • Kopiere den folgenden VBA-Code in das Modul:
Sub BereichSortieren()
    Dim lastCell As Range
    Dim sortRange As Range

    ' Bestimme die letzte Zelle des benutzten Bereichs
    Set lastCell = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell)

    ' Definiere den Sortierbereich
    Set sortRange = ActiveSheet.Range("A1", lastCell)

    ' Sortiere den Bereich absteigend
    sortRange.Sort Key1:=sortRange.Cells(1, sortRange.Columns.Count), Order1:=xlDescending, Header:=xlYes
End Sub
  1. Führe das Makro aus:
    • Gehe zurück zu Excel, drücke ALT + F8, wähle BereichSortieren und klicke auf Ausführen.

Häufige Fehler und Lösungen

  • Fehler: "Der angegebene Bereich ist ungültig."

    • Lösung: Stelle sicher, dass der markierte Bereich tatsächlich Daten enthält und nicht leer ist.
  • Fehler: "Das Sortieren kann nicht ausgeführt werden."

    • Lösung: Überprüfe, ob der Bereich zusammenhängend ist und keine leeren Zeilen oder Spalten enthält.
  • Fehler: "Falsches Header-Argument."

    • Lösung: Stelle sicher, dass das Header-Argument korrekt gesetzt ist (z.B. xlYes oder xlNo).

Alternative Methoden

Neben dem oben beschriebenen VBA-Ansatz gibt es auch alternative Methoden, um einen Bereich in Excel zu sortieren:

  • Direktes Sortieren über das Menü:

    • Wähle Deinen Bereich aus und gehe zu Daten > Sortieren. Hier kannst Du die Sortierkriterien manuell festlegen.
  • Excel-Formeln verwenden:

    • Du kannst die SORTIEREN-Funktion (verfügbar in Excel 365) verwenden, um einen Bereich dynamisch zu sortieren. Beispiel:
=SORTIEREN(A1:B10, 2, -1)  ' Sortiert den Bereich A1:B10 nach der zweiten Spalte absteigend

Praktische Beispiele

Hier sind einige praktische Beispiele, die Dir helfen, den Code besser zu verstehen:

Beispiel 1: Sortieren nach einer bestimmten Spalte

Wenn Du nach der zweiten Spalte sortieren möchtest, ändere die Key1-Zeile im Code:

sortRange.Sort Key1:=sortRange.Cells(1, 2), Order1:=xlDescending, Header:=xlYes

Beispiel 2: Mehrere Spalten sortieren

Um nach mehreren Spalten zu sortieren, kannst Du den Sortiercode erweitern:

sortRange.Sort Key1:=sortRange.Cells(1, 1), Order1:=xlDescending, _
               Key2:=sortRange.Cells(1, 2), Order2:=xlAscending, Header:=xlYes

Tipps für Profis

  • VBA-Fehlerbehandlung: Füge Fehlerbehandlungsroutinen hinzu, um mögliche Laufzeitfehler elegant zu handhaben.
On Error Resume Next
' Dein Sortiercode hier
On Error GoTo 0
  • Makros speichern: Speichere Deine Arbeitsmappe im .xlsm-Format, um die Makros zu erhalten.

  • Code optimieren: Verwende Application.ScreenUpdating = False, um das Flackern des Bildschirms während des Sortierens zu vermeiden.


FAQ: Häufige Fragen

1. Wie kann ich das Sortieren in einer bestimmten Spalte anpassen? Du kannst den Key1-Parameter im Sortiercode ändern, um eine andere Spalte als Sortierbasis zu verwenden.

2. Ist es möglich, mehrere Sortierkriterien zu verwenden? Ja, Du kannst Key2, Key3 usw. hinzufügen, um nach mehreren Spalten zu sortieren.

3. Funktioniert der Code in allen Excel-Versionen? Der Code sollte in den meisten modernen Excel-Versionen funktionieren, die VBA unterstützen. Achte darauf, dass Du Excel 2010 oder neuer verwendest.

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