PDA

Vollständige Version anzeigen : Daten sortieren ohne Kopfzeile


croma1
07.07.2006, 07:25
Hallo zusammen,

ich habe mal wieder eine typische Anfänger-Frage, bei der ich fest hänge.

Und zwar habe ich eine Tabelle, bei der in den Zeilen 1 - 5 Informationen zu den enthaltenen Daten stehen. Der Autofilter wird beim Öffnen der Datei automatisch in der Zeile 5 (A5:AZ5) gesetzt. Wenn ich jetzt die enthaltenen Daten sortieren will (z.B. über den Button "Absteigend sortieren"), werden immer auch die obersten Zeilen mit in die Sortierung einbezogen.

Gibt es eine einfach Möglichkeit (ggf. auch per VBA), dass Excel (2000) die obersten 5 Zeilen nicht in die Sortierung mit einbezieht ????

Gruß Wolf

Woody
07.07.2006, 08:52
Hallo Wolf,
markiere die Zeilen 6 bis ... und dann Daten / Sortieren.

croma1
07.07.2006, 09:27
Hallo Woody,

das mit dem markieren und dann erst sortieren ist doch etwas umständlich, wenn man zwischen 1500 und 2000 Zeilen hat. Am "einfachsten" wäre es, dass wenn man im Datenbereich steht und beim Aufruf der Sortierfunktion autmatisch der Datenbereich (A6:AZ...) markiert würde.

Leider reichen meine VBA-Kenntnisse noch nicht aus, um das zu realisieren. Kannst Du oder sonst jemand mir etwas weiterhelfen ??

Gruß Wolf

Woody
07.07.2006, 12:49
Hallo Wolf,

das die exceleigene Sortierfunktion das alles macht, wird wohl nicht gehen. Aber auch ohne VBA Kenntnisse kannst Du ein Makro erzeugen was die gewünscht Aufgabe übernimmt. Markiere einen übergroßen Bereich, der auch zukünftig nicht überschritten wird und sortiere wie gewünscht. Die gesamte Aktion nimmst Du mit dem Makrorecorder auf. Zukünftig brauchst Du dann nur noch dieses Makro zu starten.

jinx
07.07.2006, 14:28
<font size="2" face="Century Gothic">Moin, Wolf,

sieh bei Ask Dr.MOF nach, wie man die letzte Zeile eines Bereiches ermittelt. Analoges gilt für die Spalten. Und dann auf beiden Werten und dem Startbereich den zu sortierenden Bereich erstellen.

@Woody:
ganz schlechter Tipp im Hinblick auf die Gegebenheiten der Tabellen bei 2007 ;)</font>

Woody
08.07.2006, 09:58
Moin jinx,

da ich auf absehbare Zeit kein Excel 2007 haben werde :( , ist mir Dein Wink leider nicht verständlich.

jinx
08.07.2006, 10:39
<font size="2" face="Century Gothic">Moin, Woody,

meinst du nicht, dass etwas genauer spezifizierte Hilfen als die Aussage <i>Markiere einen übergroßen Bereich, der auch zukünftig nicht überschritten wird</i> nötig sind? Genau da setzt nämlich mit den veränderten Angaben der Tabellen unter 2007 mein Hinweis an.

Wer spricht von Dir? Was ist mit dem Anwender? Den lassen wir doch nicht möglicherweise im Regen stehen, oder... ;) Es erfolgt keine Prüfung, ob der Autofilter aktiv ist oder Datensätze ab Zeile 6 vorhanden sind. Wenn dort nur der Datenbereich ist, kann der Parameter Header:=xlGuess durch Header:=xlNo ersetzt werden

Option Explicit

Sub WolfSortieren()
' aufgearbeitet unter Excel97
' ein Kriterium: Spalte F
' Excel prüft selbst, ob Überschriften vorhanden sind
' keine Prüfung der letzten Zellen auf Inhalt

Const cstrSortierbereich = "F1"
Dim lngLastRow As Long
Dim lngLastCol As Long

lngLastRow = Rows.Count
lngLastCol = Columns.Count
lngLastRow = Cells(Rows.Count, 1).End(xlUp).Row
lngLastCol = Cells(1, Columns.Count).End(xlToLeft).Column
Range(Cells(6, 1).Address, Cells(lngLastRow, lngLastCol).Address).Sort _
Key1:=Range(cstrSortierbereich), _
Order1:=xlAscending, _
Header:=xlGuess, _
OrderCustom:=1, _
MatchCase:=False, _
Orientation:=xlTopToBottom
End Sub</font>

Woody
08.07.2006, 14:33
Grüße Dich jinx,
veränderten Angaben der Tabellen unter 2007Verstehe ich leider nicht, Du meinst jetzt nicht die >65536 Zeilen, oder? Ob in nun einen Bereich z.B. von 5000 Zeilen in XL03 oder XL07 festlege dürfte sich doch nicht geändert haben? Generell wird unter XL07 natürlich eine auf den benutzten Bereich festgelegte Bearbeitungsroutine eine höhere Bedeutung zu kommen, als es bisher schon der Fall war, ist klar.

Du hast eben ein anderes Herangehen zur Lösung der Anfrage gewählt. Ich tue mich bei VBA Anfängern manchmal schwer gleich formvollendete Makros anzubieten. Ich zeige dann schon mal gerne den einfachen Weg mittels Makrorecorder auf, der schnell Erfolge bringt und oft ja Lust (oder eher die Notwendigkeit :grins: ) auf mehr macht. Dann landet man natürlich bei einen solchen Code wie Deinen oben.