Anzeige
Archiv - Navigation
1956to1960
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

Woher weiß der Code, nach welchen Spalten sortiert wird?

Woher weiß der Code, nach welchen Spalten sortiert wird?
10.01.2024 09:30:57
Ingo Siemon
Hallo

Ich habe hier einen kleinen VBA-Code, der mir in einer Excel-Tabelle etwas sortiert, wie von mir gewünscht.
Sub Adressen_sortieren()


' Adressen sortieren nach Nachnamen und Vornamen
With Cells(1, 1).CurrentRegion
.Sort key1:=.Cells(1, Range("Nachname").Column), order1:=xlAscending, _
key2:=.Cells(1, Range("Vorname").Column), order1:=xlAscending, _
Header:=xlYes
End With

' Nach Oben links scrollen und in Zelle A2 springen
Application.Goto ActiveSheet.Range("A2"), True

End Sub


Ich hatte mir den Code damals mit dem Makrorecorder und etwas fremder Hilfe zusammengestückelt :-) Nun hatte ich die Idee, Chat GPT folgende Frage zu stellen: "Optimiere den Code bezüglich Effizienz und Modernität.". Und das Ergebnis ist das hier:

Sub Adressen_sortieren()

' Adressen sortieren nach Nachnamen und Vornamen

' Deklaration der erforderlichen Variablen
Dim ws As Worksheet
Dim sortRange As Range

' Festlegen des Arbeitsblatts
Set ws = ActiveSheet

' Festlegen des zu sortierenden Bereichs (von Zelle A1 bis zum aktuellen Region)
Set sortRange = ws.Range("A1").CurrentRegion

' Sortieren nach Nachnamen und Vornamen
With sortRange.Sort
.SetRange sortRange
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With

' Nach oben links scrollen und in Zelle A2 springen
Application.Goto ws.Range("A2"), True
End Sub


Und das hier sind die dazugehörigen Erläuterungen von Chat GPT:
Klare Deklaration der Variablen, um sicherzustellen, dass Option Explicit verwendet wird und Variablen korrekt typisiert sind.
Direktes Festlegen des Arbeitsblatts (Worksheet) und des zu sortierenden Bereichs.
Verwendung von With sortRange.Sort für eine kompaktere und lesbarere Syntax.
Hinzufügen von Einstellungen für MatchCase, Orientation, und SortMethod für eine klarere Definition der Sortierparameter.
Verwendung der SetRange-Methode, um den zu sortierenden Bereich festzulegen.
Diese Optimierungen verbessern die Lesbarkeit, reduzieren die Redundanz im Code und stellen sicher, dass der Code modernen Programmierstandards entspricht.

Da ich nun versuche, den neuen Code auch etwas zu verstehen, habe ich folgende Frage:

Woher "weiß" der neue Code denn, dass nach Nachnamen und Vornamen sortiert werden soll? Ich frage, weil in meinem alten Code, ist das ja zu lesen, aber im neuen Code finde ich nirgendwo "Nachnamen" und "Vornamen".

Könnte Ihr mir da helfen und mir das erklären?

Gruß
Ingo

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Woher weiß der Code, nach welchen Spalten sortiert wird?
10.01.2024 11:18:00
Piet
Hallo

wenn du das sortieren mit dem Makro Recorder aufzeichnest fragt der nach welchen Spalten sortiert werden soll.

In seinem Code erscheinen dann deine Spalten, wahrscheinlich als Rangebereich angegeben.
Im Namens Manager wirst du dann die Verbindung zwischen Range und Wb-Namen finden.
Im neuen Code sollte es also meines Wisssens zwei Sort.Add Befehle mit diesen Spalten (Namen) geben.
Leider kann ich dir den neuen Code nicht aufzeichnen, weil ich nur das alte Excel 2003 auf dem PC habe.

Ich bevorzuge immer noch den alten Code. Er ist einfacher zu programmieren!

mfg Piet
Anzeige
AW: Woher weiß der Code, nach welchen Spalten sortiert wird?
10.01.2024 11:23:38
Piet
Nachtrag

ich habe noch nie mit Chat GPT gearbeitet, lese aber im Forum das man damit Programme erstellen kann.
Wie geht das, ich kann es mir noch nicht vorstellen. Wie erklärst du dem Chat GPT was er machen soll??
Amüsant ist, seine Codes scheinen hochmodern zu sein, die übersteigen nei weitem meine Kenntnisse!

mfg Piet
Noch keine Lösung
10.01.2024 17:43:11
Ingo Siemon
Hallo

Kann mir niemand von Euch die Frage beantworten?
Oder habe ich das irgendwie zu schlecht beschrieben, was ich da gerne wissen möchte?

Gruß
Ingo
Welche Lösung?
10.01.2024 18:10:12
RPP63
Moin!
Dein ursprünglicher Code wurde nicht mit dem Makrorekorder und "etwas fremder Hilfe" erstellt, sondern ausschließlich von jemandem, der in der Lage ist, funktionierenden Code aus Wesentliche zu beschränken.
Was Chat-GPT vorschlägt, ist Blödsinn^2!
Die Range.Sort-Methode ist in 99,9728% aller Fälle ausreichend.
Ich persönlich habe noch niemals die Worksheet.Sort-Eigenschaft nutzen müssen!
Und jetzt mit meiner PI:
• Variablen, die nur einmal im Code benutzt werden, sind flüssiger als Wasser!
• der einzige Makel an "Deinem" Code ist, dass er sich immer auf das aktive Blatt bezieht

Gruß Ralf
Anzeige
AW: Welche Lösung?
10.01.2024 18:13:16
Ingo Siemon
Hallo Ralf

Ah OK alles klar. Dann bleibe ich beim alten Code und lasse die Experimente mit ChatGPT bleiben.

Gruß
Ingo
AW: Woher weiß der Code, nach welchen Spalten sortiert wird?
10.01.2024 17:54:03
daniel
also der von dir gezeigte ChatGPT-Code kann weiß noch nicht, wo nach er sortieren soll, weil die Anweisungen, die die Sortierspalten festlegen, fehlen.
Dies wäre, wie Piet schon geschrieben hat, die Anweisung:
ActiveWorkbook.Worksheets("Tabelle1").Sort.SortFields.Add2 Key:=Range(....

wie das genau aussieht, kannst du dir doch selbst erarbeiten, wenn du das Sortieren mit dem Recorder aufzeichnest.

der von dir verwendete alte Code ist für Excel bis Version 2003.
der neue Code ist für Excel ab Version 2007, welche es ermöglicht, mehr als 3 Sortierspalten gleichzeitig zu verwenden.

der alte Code ist aber weiterhin funktionsfähig.
Ich persönlich bevorzuge und verwende weiterhin den alten Code, weil er einfacher und übersichtlicher ist.
das neue ist umständlicher.
mehr als drei Sortierkriterien braucht man selten und wenn, kann man in Excel auch mehrfach hintereinander sortieren, da die Sortiermethode von Excel stabil ist.

Gruß Daniel
Anzeige
AW: Woher weiß der Code, nach welchen Spalten sortiert wird?
10.01.2024 17:57:20
Ingo Siemon
Hallo Daniel

Der neue Code funktioniert aber und sortiert so wie mein alter Code. Das ist ja der Grund meiner Frage. Ich verstehe eben nicht, woher der neue Code weiß, wie er sortieren soll.

Gruß
Info
Excel "merkt" sich vermutlich die letzten Sortierfelder
10.01.2024 18:16:50
NoNet
Hallo Ingo (oder doch Info ?),

m.E. hat sich Excel die Spalten nach denen zuletzt sortiert wurde "gemerkt" und daher ist eine erneute Angabe nicht unbedingt notwendig.

Grundsätzlich muss man die Sortierreihenfolge angeben - (das wäre insbesondere logisch, wenn nicht strikt nach der ersten Spalte sortiert werden soll, sondern evtl. zunächst nach Spalte D, dann nach Spalte A und dann nach F etc.) !

Mit einer neu erstellten Tabelle klappte Dein Code bei mir zunächst nicht.
Nachdem ich die Tabelle jedoch manuell nach Spalte B sortiert hatte, änderte ich einige Werte in Spalte B und nun konnte der Code die Tabelle wieder nach Spalte B sortieren !

Schließe die Datei und Excel doch einmal und öffen alles erneut : Läuft der Code dann immer noch fehlerfrei durch ??

Salut, NoNet
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige