Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
772to776
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
772to776
772to776
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

kleine Optimierung - Sortierrotine

kleine Optimierung - Sortierrotine
20.06.2006 17:32:58
elima
Hallo Excel-Freunde
Harald E war so freundlich und hat mir diese Sortierroutine geschrieben und sie funktioniert auch super. Doch dummerweise habe ich nicht erwähnt, dass nur solange sortiert werden soll, solange auch was in den Zellen steht. Jetzt werden die leeren Zeilen nach oben sortiert und die in denen was drinnen steht unten angefügt.
Kennt sich jemand so gut aus um das zu optimieren, wäre sehr Dankbar dafür.
Gestartet wird die Routine mit einem Button.
ActiveSheet.Unprotect "deinPasswort"
'für Überschrift in Zeile 11 . Aufsteigend sortiert nach Spalte G (Sort Key1)
Range("A11:Q90").Sort Key1:=Range("G12"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
ActiveSheet.Protect "deinPasswort"
MfG. elima

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

Betreff
Datum
Anwender
Anzeige
AW: kleine Optimierung - Sortierrotine
21.06.2006 01:22:56
fcs
Hallo elima,
eigentlich sortiert Exczel leere Zellen (Zellen in denen nichts!!! steht) immer an das Ende der Liste.
Steht in den Zellen in Spalte G, die an den Anfang der Liste sortiert werden, wirklich nichts drin? Leerzeichen oder auch das Formelergebnis "" (Leerstring) ist nicht leer!!
mfg
Franz
AW: kleine Optimierung - Sortierrotine
21.06.2006 12:39:12
elima
Hallo Franz
Du hast Recht, es steht ein Leerstring "" drinnen.
Der Zelleninhalt wird mit folgender Formel
='EB (1)'!N$11~f~
aus einem anderen Blatt übernommen. Dort wird der Inhalt mit folgender Formel errechnet,
~f~=WENN(L11&gt0;WENN(ISTNV(SVERWEIS(L11;'c:\Leopold\Data\[Personalliste.xls]Aktuelle Personalliste'!$B$13:$I$200;2;0));"Diese Int. Nr. ist";SVERWEIS(L11;'c:\Leopold\Data\[Personalliste.xls]Aktuelle Personalliste'!$B$13:$I$200;2;0));""
und wenn der Inhalt aus dem andern Blatt leer ist dann wird eben ein Leerstring gesetzt.
Habe ich mich jetzt in eine Sackgasse manövriert, oder gibts doch noch einen Ausweg.
Viele Grüße, elima
Anzeige
AW: kleine Optimierung - Sortierrotine
21.06.2006 14:48:19
fcs
Hallo elima,
eine Möglichkeit wäre den Sortiervorgang mit einem Autofilter zu kombinieren, das die Zeilen mit Leereinträgen ("") in Spalte G ausblendet. Schaut dann so aus

Sub sortieren()
With ActiveSheet
.Unprotect "deinPasswort"
'Überprüfung, ob Autofiltermode aktiv und Zeilen ausgeblendet
If .AutoFilterMode = True Then
If .Cells.SpecialCells(xlCellTypeVisible).Count < .Cells.Count Then
.ShowAllData
End If
End If
'für Überschrift in Zeile 11 . Aufsteigend sortiert nach Spalte G (Sort Key1)
.Range("A11:Q90").Sort Key1:=Range("G12"), Order1:=xlAscending, Header:=xlYes, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
' Autofilter setzen bzw. Einrichten und Zeilen mit leeren Zellen ("") ausblenden
If .AutoFilterMode = True Then
.Range("G11").AutoFilter Field:=1, Criteria1:="<>"
Else
.Range("G11", .Range("G11").End(xlDown)).AutoFilter
.Range("G11").AutoFilter Field:=1, Criteria1:="<>"
End If
.Protect "deinPasswort"
End With
End Sub

Falls du in der Tabelle die Autofilter-Funktion schon nutzt, dann muß man noch ein wenig anpassen.
mfg
Franz
Anzeige
AW: kleine Optimierung - Sortierrotine
21.06.2006 16:11:48
elima
Hallo Franz
Diese Möglichkeit gefällt mir gut, einfach die Leerzeilen rauszufiltern.
Wie würde die Anpassung aussehen, denn den AutoFilter habe ich gesetzt.
Er sollte in den Spalten B,C,D,E,F,G,H,I verwendet werden können.
Vielen Dank für deine Mühe
elima
AW: kleine Optimierung - Sortierrotine
21.06.2006 17:02:26
fcs
Hallo elima,
die Anpassung sieht dann so aus, wobei der Autofilter für alle Spalten von A bis Q gesetzt werden kann.
Gruß
Franz

Sub sortieren()
With ActiveSheet
.Unprotect "deinPasswort"
'Überprüfung, ob Autifiltermode aktiv und Zeilen ausgeblendet
If .AutoFilterMode = True Then
If .Cells.SpecialCells(xlCellTypeVisible).Count < .Cells.Count Then
.ShowAllData
End If
End If
'für Überschrift in Zeile 11 . Aufsteigend sortiert nach Spalte G (Sort Key1)
.Range("A11:Q90").Sort Key1:=Range("G12"), Order1:=xlAscending, Header:=xlYes, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
' Autofilter setzen bzw. Einrichten und Zeilen mit leeren Zellen ("") ausblenden
If .AutoFilterMode = True Then
.Range("A11:Q90").AutoFilter Field:=7, Criteria1:="<>"
Else
.Range("A11:Q90").AutoFilter
.Range("A11:Q90").AutoFilter Field:=7, Criteria1:="<>"
End If
.Protect "deinPasswort"
End With
End Sub

Anzeige
AW: kleine Optimierung - Sortierrotine
21.06.2006 17:32:14
elima
Hallo Franz
Ein großes Dankeschön für deine Hilfe, hätte das selber nie so hinbekommen.
Es funktioniert jetzt alles ganz super.
MfG. elima

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige