2014-01-30 15 views
23

Ich habe eine Tabelle, die eine beliebige Anzahl von Zeilen enthalten können:VBA Excel Sortierbereich durch bestimmte Spalte

enter image description here

wie gesagt es 1 oder ∞ Zeilen enthalten kann.

Ich möchte den Bereich A3: D∞ nach der Datumszelle in Spalte B sortieren. Wie kann ich das tun?

Das Problem ist, dass ich nicht weiß, wie man von A3 bis zur letzten Zeile wählt.

Ich denke, dass die Schleife in die letzte Zeile ist keine richtige Methode.

Ich habe das so weit sieht es sieht wie korrekt aus, aber der Bereich ist hart codiert. Wie kann ich die Hardcoding der Reihe loswerden?

Range("A3:D8").Sort key1:=Range("B3:B8"), _ 
order1:=xlAscending, Header:=xlNo 

Antwort

53

Versuchen Sie diesen Code:

Dim lastrow As Long 
lastrow = Cells(Rows.Count, 2).End(xlUp).Row 
Range("A3:D" & lastrow).Sort key1:=Range("B3:B" & lastrow), _ 
    order1:=xlAscending, Header:=xlNo 
+2

Dank es funktioniert, in ein paar Minuten wird Sie ans ans wer – Cheese

+0

Nur ein Hinweis: Dies funktioniert nicht so gut mit Datum Dateitypen, die als Zeichenfolgen sortiert sind. Es ist sicherer, die Felder zu long zu konvertieren und dann zu sortieren. – Yasskier

+0

Tausende von Stimmen auf! –

10

Oder diese:

Range("A2", Range("D" & Rows.Count).End(xlUp).Address).Sort Key1:=[b3], _ 
    Order1:=xlAscending, Header:=xlYes 
+0

Ich mag diese Antwort, da es keine zusätzliche Variable enthält – sonyisda1

+4

@ sonyisda1, das ist ein schlechter Grund, Sie könnten nur die Variable durch die Formel ersetzen. Aber es ist klarer, was mit der Variable passiert. –

0

Wenn die Ausgangszelle des Bereichs und des Schlüssels statisch ist, kann die Lösung sehr einfach sein:

Range("A3").Select 
Range(Selection, Selection.End(xlToRight)).Select 
Range(Selection, Selection.End(xlDown)).Select 
Selection.Sort key1:=Range("B3", Range("B3").End(xlDown)), _ 
order1:=xlAscending, Header:=xlNo 
+1

[So vermeiden Sie die Verwendung von Select in Excel VBA] (https://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-macros) – Wolfie

Verwandte Themen