Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1912to1916
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
Inhaltsverzeichnis

Gesamte Tabelle sortieren

Gesamte Tabelle sortieren
31.12.2022 07:18:10
Ingo
Hallo
Ich habe eine Tabelle in einem Excel Arbeitsblatt.
Die Tabelle hat keine Überschriften.
Die Tabelle hat keine leeren Zeilen.
Die Zahl der Zeilen wird von mir ständig geändert.
Es kommen mehrmals täglich Zeilen hinzu und/oder es werden Zeilen gelöscht.
Es handelt sich NICHT um eine "intelligente Tabelle".
Ich möchte gerne per VBA die gesamte Tabelle nach Spalte C sortieren (Reihenfolge "nach Alter absteigend").
Wenn ich das per Makrorekorder löse, werden ja die Werte (z.B. A1:D67) in den Code eingetragen.
Wenn aber nun aber die Zeilenzahl meiner Tabelle geändert wird, passt der Code ja nicht mehr.
Wie kann man das denn am besten lösen?
Gruß
Ingo

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Range("A1").CurrentRegion.Sort …
31.12.2022 07:47:18
Ingo
Hallo Ralf
Bitte entschuldige, wenn ich mich hier etwas blöd anstelle. Leider kann ich VBA nicht gut (bzw. fast garnicht). Darum brech ich mir hier immer einen ab. Ich hoffe, dass ich Dir bzw. Euch damit nicht zu sehr auf den Wecker gehe.
Meinst Du das so wie folgt?

Sub T_Sort()
Ar.CurrentRegion.Sort Ar.Cells(1).Offset(1, 2), xlAscending, , , , , , xlYes
End Sub
Gruß
Ingo
Anzeige
AW: Range("A1").CurrentRegion.Sort …
31.12.2022 08:30:28
RPP63
Das ist ja gar nicht negativ gemeint, Ingo!
Nur, wenn Du VBA lernen willst, musst Du gegebene Lösungen (ich meine Fennek) erst mal zu verstehen versuchen.
Ansonsten wirst Du niemals den Status des Fragenden verlassen.
Außerdem hilft es sehr häufig, die VBA-Hilfe mittels Cursor in "unbekannte" Methode und F1 aufzurufen.
Folgendes mache ich heute mal ausnahmsweise umfangreich.
Bitte lies Dir beide Links, den ich gleich poste, aufmerksam durch, dann wirst Du auch lernen.
Es folgt der Erklärbär. ;)
1. Den Bereich der Tabelle ermittelt man mit der Range.CurrentRegion-Eigenschaft:
Hierbei ist zu beachten, dass sich keine komplett leeren Zeilen oder/und Spalten im Bereich befinden dürfen.
Siehe hierzu auch Aufbau von Excel-Listen
Da der Bereich in A1 beginnt (man könnte auch eine beliebige Zelle aus dem gefüllten Bereich nehmen, aber A1 ist das Sicherste):

Range("A1").CurrentRegion
2. Wenn Du den Rekorder nutzt, nutzt der das Worksheet.Sort-Objekt [ohne Link].
Dir reicht aber die Range.Sort-Methode:
Du brauchst lediglich die benannten Parameter Key1:= [Spaltenüberschrift der Spalte C, also Range("C1")] und Header:=xlYes
Folglich lautet Deine Codezeile:

Range("A1").CurrentRegion.Sort Range("C1"), Header:=xlYes
Der Code geht davon aus, dass das richtige Tabellenblatt aktiviert ist, aber korrekte Referenzierung ist ein anderes Thema.
Gruß Ralf
Anzeige
AW: Range("A1").CurrentRegion.Sort …
31.12.2022 10:22:25
Ingo
Hallo Ralf
Ich danke Dir erstmal sehr für die große Mühe, die Du Dir mit mir gibst.
Es ist allerdings so, dass ich eigentlich garnicht hauptsächlich den Anspruch habe, VBA richtig zu lernen.
Es ist eher so, dass ich beruflich (selbstständig) mit einer Excel Arbeitsmappe arbeite. Und da versuche ich immer an vielen kleinen Stellen was zu optimieren/automatisieren, um mir Arbeit zu sparen bzw. diese zu erleichtern.
Und wenn das dann erledigt ist, habe ich ansonsten mit VBA gar nichts zu tun und auch gar keine weiteren Anwendungen bzw. Bedarf dafür.
Wenn ich mir wieder so eine Arbeitserleichterung "basteln" will, gehe ich immer so vor:
* Erstmal den Makrorekorder anwerfen. Dann gucken, ob da das rauskommt, was ich möchte. Dann auch versuchen, dass zu verstehen und ggf. anzupassen.
* Ansonsten Googeln und gucken, ob das Anliegen schon andere hatten und es Lösungen gibt.
* Dann versuche ich mir das quasi zusammenzufrickeln :-)
* Und wenn das am Ende nicht so richtig gelingen will, frage ich hier bei Euch. Und dabei versuche ich, meine Fragen möglichst präzise zu stellen, um es den Helfenden leicht zu machen. (Aber das gelingt sicher auch nicht immer).
Gruß
Ingo
Anzeige
AW: Range("A1").CurrentRegion.Sort …
31.12.2022 10:27:33
Daniel
Naja, wenn du VBA beruflich verwenden willst, solltest du es soweit lernen, dass du das, was du machen willst, auch selbstständig programmieren kannst.
Ebenso ist - zumindest meiner Beobachtung nach - die Hilfsbereitschaft der hier im Forum aktiven Menschen wesentlich höher, wenn es darum geht, anderen beim erlernen von VBA zu unterstützen als fertige Lösungen zu erstellen.
Gruß Daniel
AW: Range("A1").CurrentRegion.Sort …
31.12.2022 10:45:27
Ingo
Hallo Daniel
Ja, mir ist natürlich klar, dass die Hilfsbereitschaft sicher höher ist, wenn man VBA von Grund auf Lernen möchte.
Aber bitte bedenke folgendes:
Wenn ich vielleicht 1-2 mal im Jahr eine "kleine" Sache in VBA machen möchte, lohnt sich doch der Aufwand, VBA richtig zu erlernen, nicht wirklich. Ganz davon abgesehen, muss man sein Wissen ja auch immer auf dem Laufenden halten und auffrischen dann. Ich meine, wenn ich einmal VBA lerne und dann nur 1-2 mal im Jahr eine kleine Sache programmiere, werde ich das doch langsam auch alles wieder vergessen.
Stell Dir jemanden vor, der zweimal im Jahr einen Mietwagen für 3 Tage braucht. Dem würde man doch auch nicht so richtig raten, eine KFZ-Ausbildung zu machen, für den Fall, dass mal was mit der Karre ist.
Ist wirklich jetzt NICHT zickig von mir gemeint. Ich wollte nur klarstellen, dass es doch aus meiner Sicht schon Sinn macht, nach fertigen Lösungen zu suchen. Ich hoffe, Du kannst mich da auch irgendwie ein wenig verstehen.
Gruß
Ingo
Anzeige
AW: Range("A1").CurrentRegion.Sort …
31.12.2022 14:09:14
Daniel
Die KFZ-Ausbildung wäre mir egal, aber einen Führerschein solltest du zumindest haben, wenn ein Auto mieten willst.
Und der Mietwagenvergleich passt nicht.
"Fertige Lösungen" aus dem Forum sind eher wie Gebrauchtwagen, die du geschenkt bekommst und wenn man mit sowas gut fahren will, könnte eine KFZ-Ausbildung durchaus hilfreich sein.
AW: Gesamte Tabelle sortieren
31.12.2022 08:32:49
GerdL
Moin Ingo

Sub Unit()
ActiveSheet.UsedRange.Sort Key1:=ActiveSheet.Cells(1, 3), Order1:=xlDescending, Header:=xlNo
End Sub
Gruß Gerd
AW: Gesamte Tabelle sortieren
31.12.2022 08:37:22
RPP63
Moin Gerd!
Yepp, Alter absteigend hatte ich in meinem obigen Code nicht berücksichtigt (Order1:=xlDescending)
Aber mein Hauptaugenmerk lag ja in der Erklär-Methodik. ;)
Allerdings bin ich der Meinung, dass .CurrentRegion "sicherer" als .UsedRange ist.
Schließlich bedient sich auch Excel beim Sortieren "meiner" Methode.
Gruß Ralf
Anzeige
AW: Gesamte Tabelle sortieren
31.12.2022 10:24:33
Ingo
Moin Gerd
Ich habe es nun so gemacht. Und das funxt genau so, wie ich es brauche. Danke Dir auch sehr für Deine nette Hilfe wieder.

Sub Gruppen_Sortieren()
Range("A1").CurrentRegion.Sort Range("C1"), Header:=xlNo
End Sub
Gruß
Ingo
AW: Gesamte Tabelle sortieren
31.12.2022 10:10:45
Daniel
Hi
CurrentRegion und Usedrange wurden schon genannt.
Das dritte wäre, einfach die ganzen Spalten als Bereich anzugeben.
Dies wäre dann das mittel der Wahl, wenn es neben den so sortierenenden Spalten noch weitere Spalten gibt, die nicht sortiert werden sollen.
Range("A:D").sort
Gruß Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige