Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
812to816
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
812to816
812to816
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Nullen nach hinten sortieren

Nullen nach hinten sortieren
23.10.2006 10:58:44
Uli
Hallo zusammen,
ich möchte gerne Werte aufsteigend sortieren, dabei aber Nullen nach hinten sortieren. Wenn ich das in zwei Schritten über Wertelisten mache, sieht das ganze so aus und funktioniert einwandfrei:
Application.AddCustomList ListArray:=Array("1", "2", "3", "4", "0")
Range("A1:A9").Sort Key1:=Range("A1"), Header:=xlGuess, _
OrderCustom:=10, MatchCase:=False, Orientation:=xlTopToBottom
Ich möchte allerdings nicht jedesmal eine neue Liste anlegen und würde den ListArray am liebsten direkt in das Sort-Statement schreiben, kriege das aber nicht hin. Wenn die Null mit drin steht, bekomme ich grundsätzlich Fehler.
Ich stelle mir das eigentlich ungefähr so vor:
Range("A1:A9").Sort Key1:=Range("A1"), OrderCustom:=Array("1", "2", "3", "0"), Header:=xlGuess, ....
Hat jemand dazu eine gute Idee?
Vielen Dank im Voraus!
Uli

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

Betreff
Datum
Anwender
Anzeige
AW: Nullen nach hinten sortieren
23.10.2006 12:00:47
Peter
Hallo Uli,
was hälst du von der nachfolgenden Methode?
Es wird eine Hilfspalte eingefügt, in der die Werte = 0 eine 9, alle anderen eine 1 erhalten. Dann wird nach der Hilfsspalte und Spalte A sortiert.
Anschließend die Hilfsspalte wieder gelöscht.
Public

Sub Sortieren()
Dim lLetzte  As Long
Dim lZeile   As Long
Application.ScreenUpdating = False
lLetzte = IIf(Range("A65536") <> "", 65536, Range("A65536").End(xlUp).Row)
Columns("A").Insert Shift:=xlToRight
For lZeile = 1 To lLetzte
If Range("B" & lZeile).Value = 0 Then
Range("A" & lZeile).Value = 9
Else
Range("A" & lZeile).Value = 1
End If
Next lZeile
Range("A1:M" & lLetzte).Sort _
Key1:=Range("A1"), Order1:=xlAscending, _
Key2:=Range("B1"), Order2:=xlAscending, _
Header:=xlGuess, _
OrderCustom:=3, _
MatchCase:=False, _
Orientation:=xlTopToBottom
Columns("A").Delete Shift:=xlToLeft
Application.ScreenUpdating = True
End Sub

Viele Grüße Peter
Eine kurze Nachricht, ob es läuft, wäre nett - danke.
Anzeige
AW: Nullen nach hinten sortieren
23.10.2006 17:34:06
Uli
Hallo Peter,
grundsätzlich funktioniert Dein Workaround natürlich. Um ehrlich zu sein, suche ich allerdings eine etwas "schlankere" Lösung, da ich die Sortierung in ein sehr komplexes Sheet einbinden will, in dem sehr viele Berechnungen kreuz und quer laufen, und das Einfügen einer neuen Spalte würde sehr viel Umprogrammierungs- und Testaufwand bedeuten. Das insbesondere vor dem Hintergrund, dass ich die Sortierung gerne dynamisch für mehrere Spalte anbieten möchte...
Hast Du oder hat jemand anderes noch eine andere Idee? Ich hätte ja vermutet, dass eine Lösung analog zu meinem oben angedachten Weg möglich sein sollte!?
Viele Grüße und nochmal vielen Dank,
Uli
Anzeige
AW: Nullen nach hinten sortieren
25.10.2006 21:49:49
M@x
Hi,
ich weiß jetzt nicht ob du das so oder abgewandelt verwenden kannst:
man macht aus den Nullen Text zBsp etwa so:
=WENN(B6&gt0;B6;TEXT(B6;"0"))
wenn du das als VBA machst, gehts in der gleichen Spalte
Die Nullen als Text werden dann automatisch nach hinten sortiert
Gruss
M@x
AW: Nullen nach hinten sortieren
25.10.2006 22:40:40
Gerd
Hallo zusammen,
oder vielleicht doch per Code.
Voraussetzung: Im Range sind keine leeren Zelle u. nur Zellen mit Zahlen.

Sub test()
Dim strErsetzen
With Range("A1:A9")
strErsetzen = CStr(Application.WorksheetFunction.Max(.Cells) + 1)
.Replace what:="0", replacement:=strErsetzen, lookat:=xlWhole
.Sort Key1:=Range("A1"), Header:=xlGuess, OrderCustom:=1, _
MatchCase:=False, Orientation:=xlTopToBottom
.Replace what:=strErsetzen, replacement:="0", lookat:=xlWhole
End With
End Sub

Gruß
Gerd
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige