VBA-Sortierung - Excel-Tipps

Inhaltsverzeichnis

Excel VBA-Makro zum Sortieren von Daten. Mir gefällt nicht, wie der Makrorecorder zusätzlichen Code zum Sortieren erstellt. Das Sortieren in Excel VBA sollte einfach sein. Eine Codezeile mit der zu sortierenden Spalte, in welche Richtung (aufsteigend oder absteigend) und eine Überschrift.

Schau Video

  • Der Excel-Makrorecorder leistet bei der Sortierung von Aufzeichnungen keine gute Arbeit.
  • Vorausgesetzt, Ihre Daten können mit Strg + * (als aktuelle Region bezeichnet) ausgewählt werden.
  • Vorausgesetzt, Sie sortieren nicht nach Farbe, Symbol oder mehr als drei Ebenen
  • Verwenden Sie die alte Methode Range (). CurrentRegion.Sort in Excel

Video-Transkript

Lernen Sie Excel aus MrExcel Podcast, Episode 2093: Sortieren mit VBA

Hey, willkommen zurück bei Netcast, ich bin Bill Jelen. Die heutige Frage von James in Huntsville. James, ich habe den Makrorecorder verwendet, um die Aktion zum Sortieren von Daten aufzuzeichnen. Nehmen wir also an, James musste diese Daten nach Sektor und Kunden sortieren. Sie gelangen hier zur Registerkarte Ansicht, zu Makros, Neues Makro aufzeichnen, SortMyReports, Tastenkombination Strg - Ich gebe dort Umschalt + S ein und klicke auf OK. Okay, dann machen wir von hier aus: Daten, Sortieren, und wir möchten sagen, dass wir nach Sektor sortieren und dann eine Ebene hinzufügen und nach Kunden sortieren möchten, und klicken Sie auf OK. Unten links klicken wir auf Aufnahme beenden. Okay, da ist es also. Scheint funktioniert zu haben, oder?

Aber hier ist das Problem: Morgen werden Sie mehr oder weniger Daten haben oder, wissen Sie, was auch immer. Und dieses aufgenommene Makro ist einfach schrecklich. Lassen Sie uns einen Blick darauf werfen, ich mache Alt + F8 und schaue auf SortMyReport, werde das bearbeiten. Okay, und das ist alles, was sie aufgezeichnet haben, damit die SortFields.Clear, und dann haben sie eine neue Sortierung mit den SortFields.Add eingerichtet und sie sind fest codiert, und es gibt 568 Zeilen und all das Zeug.

Jetzt, wo ich früher sortierte, war ich wirklich sehr, sehr einfach. Okay, und dann haben sie in Excel 2007 Sortieren nach Symbol, Sortieren nach Farbe, Sortieren nach Schriftfarbe, die Fähigkeit, 15 Level-Sortierungen zu haben, und alles wurde wirklich verrückt. Daher verwende ich das aufgenommene Makro nicht mehr. Ich gehe einfach auf die alte Schule.

Jetzt werde ich wieder zu Excel wechseln. Hier sind die Regeln, nach denen diese Sortierung der alten Schule funktioniert. Überschrift über jeder Spalte: Diese Überschrift muss sich in einer Zeile befinden, nicht in zwei Zeilen. Wenn Sie dort oben Titel haben und es in Ordnung ist, dort oben Titel zu haben. Sie benötigen eine vollständig leere Zeile zwischen Ihren Titeln und der ersten Überschrift. Wenn Sie auf der rechten Seite Notizen haben: Ihre Frau ruft mit einer Einkaufsliste an: „Hey, Schatz, hör auf dem Heimweg auf. Hol Milch, Eier und Wodka. “ Zwischen Ihren Daten muss eine vollständig leere Spalte stehen. Und wenn sich unten Notizen auf dem Boilerplate befinden, stellen Sie sicher, dass zwischen dem letzten Datenbit und diesen Notizen eine vollständig leere Zeile steht.

Mein ganzes Ziel ist es, dass wir zu einer beliebigen Zelle gelangen können: In der oberen linken Ecke werden diese Daten angezeigt und Strg + * gedrückt, um die zu sortierenden Daten auszuwählen. Jetzt drücke ich Strg +. das bringt uns zu dieser Ecke und dann Strg +. bringt uns in die untere rechte Ecke, Strg +. bringt uns in die untere linke Ecke. Okay, wenn Strg + * Ihre Daten korrekt auswählt, ist alles großartig. Wenn Sie Ihre Einkaufsliste in Spalte H einfügen und wir sehen, dass wir hierher kommen und Strg + *, dann sortieren wir die Einkaufsliste als Teil der Sache und Ihre Einkaufsliste wird durcheinander gebracht. Oder wir machen rückgängig: Wenn diese Zeile nicht hier ist, machen wir jetzt Strg + *, sehen Sie, wir sind - jetzt sind sie ahnungslos, weil sie keine Überschriften mehr haben, okay?

Wenn Sie also meinen Code verwenden möchten, stellen Sie sicher, dass alle diese Regeln zutreffen: keine Sortierung meiner Farbe, keine Sortierung meines Symbols, 3 oder weniger Sortierstufen. Rückgängig machen, in Ordnung. Wir wissen also Folgendes: Wir wissen, dass unsere Daten jeden Tag in A5 beginnen werden. Wenn wir nicht wissen, wie viele Zeilen oder wie viele - sogar wie viele Spalten wir haben könnten. Ich kann mir keine Situation vorstellen, in der die Spalten vertauscht werden, aber die Anzahl der Zeilen wird sich sicherlich ändern. Also Alt + F11, wir beginnen einfach mit dieser Zelle in der oberen linken Ecke. Range ist in meinem Fall also "A5" .CurrentRegion. Die aktuelle Region ist dieses fantastische Gebäude, das besagt, dass wir Strg + Umschalt + * drücken werden, und alles, was dort enthalten ist, wird sortiert. Und wir tun .Sort. .Sort, in Ordnung.

Hier ist die Sache. Wenn Sie eine einstufige Sortierung durchführen möchten, ist dies einfach: Key1: =. : = und wir sagen nur, dass es Range sein wird - Oh, ich vergesse was es ist. Es war Sektor, wo ist Sektor? Der Sektor befindet sich in Spalte C. Also C5 in meinem Fall Range („C5“) und dann Order1: = xlAscending. Ich drückte dort die Abwärtspfeiltaste und dann die Tabulatortaste. Okay, jetzt könnte ich weiter nach rechts gehen, aber das werde ich nicht tun. Ich werde in eine neue Zeile gehen, also Leerzeichen, Unterstrich, um in eine neue Zeile zu gehen, setzt diese Codezeile fort, in Ordnung? Und wenn ich eine Sortierung der zweiten Ebene habe: Key2: = und in diesem Fall möchte ich nach Kunden sortieren, die sich in Spalte D befinden, also D5. Und dann Order2: xlAscending. Wunderschönen.

Ich habe keine Sortierung der dritten Ebene, aber wenn Sie dies tun würden, wäre es Key3 und dann Order3. Und dann ist der nächste, den Sie tun müssen, Header, okay? Also, Header: = xlGuess, da bekommst du verdammt viel Ärger. Und so werden wir dort xlYes sagen, definitiv als Header. Schon früher verwendete der Macro Recorder xlGuess. Ich hasse es, wenn Excel errät.

Das ist es. Eine Codezeile, das ist alles, was Sie tun müssen, und es funktioniert mit mehr Zeilen, weniger Zeilen. Es ist eine schöne, schöne Sache. Okay, also kommen wir hierher zurück zu Excel. Strg + Umschalt + S ist immer noch das, was zugewiesen ist. Jetzt - Wenn Sie gerade auf VBA umgestellt haben und dies selbst eingeben, können Sie zu Alt + F8 gehen, den Namen Ihres Makros suchen, auf Optionen klicken und dort Strg + Umschalt + S eingeben, oder wir können es sogar einem zuweisen Tastenkombination hier oben in der Symbolleiste für den Schnellzugriff. Klicken Sie mit der rechten Maustaste auf die Symbolleiste für den Schnellzugriff anpassen, in der ich aus unseren Makros auswähle. Ich habe ein Makro namens SortMyReport, klicke auf Hinzufügen - ich hasse das kleine Flussdiagramm dort. Wir werden das ändern und ich würde es lieben, wenn es dort eine Situation von A bis Z gibt, aber natürlich gibt es keine. Vielleicht wählt dieser Pfeil, der weiß, wer weiß, einfach irgendetwas.Den magischen 8-Ball weiß ich nicht. Ich werde diesen kleinen Kerl hier auswählen, auf OK klicken, auf OK klicken. Okay, jetzt sind unsere Daten nach Datum sortiert, ich wähle - und es spielt keine Rolle, was ich wähle. Es wird immer zurückgehen und es von A5 sortieren. Ich klicke auf den kleinen Kerl und meine Daten werden jetzt nach Sektor, innerhalb des Sektors und nach Kunden sortiert. Es funktioniert großartig, okay?

Wenn Sie also ein Fan des Macro Recorders sind, wünsche ich Ihnen von Herzen alles Gute. Aber der Macro Recorder-Code für das Sortieren in VBA ist heutzutage viel einfacher. Um einfach zurück zu gehen, verwenden Sie einfach im Wesentlichen diese eine Codezeile.

Nun, dies ist normalerweise der Ort, an dem ich versuche, Sie zum Kauf dieses Buches zu bewegen, aber heute sollten Sie sich dieses Buch ansehen: Excel 2016 VBA und Makros von Tracy und mir. Wow! Überprüfen Sie dies heraus. Ich wusste nicht, dass es eine Version in einer anderen Sprache gibt. Wir bringen Sie vollständig auf die Makro-Lernkurve, indem Sie Ihr erstes Makro mit dem Code aufnehmen, den Sie benötigen.

Nun, einfache Zusammenfassung für heute: Der Excel-Makrorecorder leistet beim Aufzeichnen und Sortieren keine gute Arbeit: Vorausgesetzt, Ihre Daten können mit Strg + * ausgewählt werden, das als aktuelle Region bezeichnet wird, vorausgesetzt, Sie sortieren nicht nach Farbe oder Symbol Verwenden Sie zum Sortieren einfach die Old-School-Methode Range (). CurrentRegion.Sort in VBA.

Ich möchte James dafür danken, dass er diese Frage eingeschickt hat. Ich möchte Ihnen dafür danken, dass Sie vorbeigekommen sind. Wir sehen uns beim nächsten Mal für einen weiteren Netcast von.

Download-Datei

Laden Sie die Beispieldatei hier herunter: Podcast2093.xlsm

Interessante Beiträge...