Sortieren von Daten in Excel VBA

Sortieren von Daten in Excel VBA

Excel bietet eine hervorragende Möglichkeit, eine Reihe von Tabellendaten mithilfe des Menübands im Excel-Frontend zu sortieren, und irgendwann möchten Sie diese Funktionalität wahrscheinlich in Ihrem VBA-Code verwenden. Glücklicherweise ist dies sehr einfach zu tun.

Das Frontend-Dialogfenster wird durch Klicken auf das Symbol „Sortieren“ in der Gruppe „Sortieren & Filtern“ der Registerkarte „Daten“ im Excel-Menüband aufgerufen. Sie müssen zuerst einen Bereich von Tabellendaten auswählen.

Sie können auch Alt-A-S-S verwenden, um das Dialogfeld für eine benutzerdefinierte Sortierung anzuzeigen.

Die Sortiermethode wurde in späteren Excel-Versionen stark verbessert. Früher war die Sortierung auf drei Ebenen beschränkt, aber Sie können jetzt beliebig viele Ebenen eingeben, und dies gilt auch innerhalb von VBA.

Sie können alle im Excel-Sortierdialog angebotenen Sortierfunktionen in Ihren VBA-Code einbinden. Die Sortierfunktion in Excel ist schnell und schneller als alles, was Sie selbst in VBA schreiben könnten, also nutzen Sie die Funktionalität.

Beachten Sie, dass bei einer Sortierung in VBA die Sortierparameter im Front-End-Sortierdialogfeld gleich bleiben. Sie werden auch gespeichert, wenn die Arbeitsmappe gespeichert wird.

Wenn ein Benutzer denselben Bereich von Tabellendaten auswählt und auf das Sortiersymbol klickt, werden alle Ihre Parameter angezeigt, die von Ihrem VBA-Code eingegeben wurden. Wenn sie eine Art eigenes Design erstellen möchten, müssen sie zuerst alle Ihre Sortierebenen löschen, was für sie sehr ärgerlich ist.

Wenn Sie die Parameter in Ihrem Code nicht ändern und sich auf Standardwerte verlassen, stellen Sie möglicherweise fest, dass der Benutzer Änderungen vorgenommen hat, die sich in Ihrer VBA-Sortierung widerspiegeln und unerwartete Ergebnisse liefern, die möglicherweise sehr schwer zu debuggen sind .

Glücklicherweise gibt es in VBA eine Clear-Methode, um alle Sortierparameter zurückzusetzen, damit der Benutzer ein sauberes Sortierdialogfeld sieht

1 Worksheets("Sheet1").Sort.SortFields.Clear

Es empfiehlt sich, die Sortierparameter in VBA vor und nach Abschluss der Sortierung zu löschen.

Praktische Anwendung der Sortiermethode in VBA

Wenn Tabellendaten in Excel importiert werden, erfolgt dies oft in einer sehr zufälligen Reihenfolge. Sie kann aus einer CSV-Datei (Comma Separated Values) importiert werden oder von einem Link zu einer Datenbank oder Webseite stammen. Sie können sich nicht darauf verlassen, dass es von einem Import zum anderen in einer festgelegten Reihenfolge ist.

Wenn Sie diese Daten einem Benutzer in Ihrem Arbeitsblatt präsentieren, kann es für den Benutzer schwierig sein, eine riesige Menge an Daten zu sehen und zu verstehen, die in Bezug auf die Reihenfolge überall verteilt sind. Möglicherweise möchten sie die Daten gruppieren oder bestimmte Abschnitte davon ausschneiden und in eine andere Anwendung einfügen.

Sie möchten beispielsweise auch den bestbezahlten Mitarbeiter oder den Mitarbeiter mit der längsten Betriebszugehörigkeit sehen.

Mit der Sortiermethode in VBA können Sie Optionen anbieten, die dem Benutzer eine einfache Sortierung ermöglichen.

Beispieldaten zur Demonstration der Excel-Sortierung mit VBA

Zuerst müssen einige Beispieldaten in ein Arbeitsblatt eingegeben werden, damit der Code alle in VBA verfügbaren Funktionen demonstrieren kann.

Kopieren Sie diese Daten genau wie abgebildet in ein Arbeitsblatt (genannt „Sheet1“).

Beachten Sie, dass unterschiedliche Zellenhintergrundfarben und Schriftfarben verwendet wurden, da diese auch als Sortierparameter verwendet werden können. Das Sortieren nach Zellen- und Schriftfarben wird später in diesem Artikel demonstriert. Beachten Sie auch, dass in Zelle E3 der Abteilungsname nur in Kleinbuchstaben geschrieben ist.

Sie benötigen das Zelleninnere und die Schriftfarben nicht, wenn Sie die Beispiele für die Sortierung nach Zellen- und Schriftfarbe nicht verwenden möchten.

Aufzeichnen eines Makros für eine VBA-Sortierung

VBA-Code zum Sortieren kann ziemlich kompliziert werden, und es kann manchmal eine gute Idee sein, die Sortierung am Frontend von Excel durchzuführen und ein Makro aufzuzeichnen, um Ihnen zu zeigen, wie der Code funktioniert.

Leider kann die Aufzeichnungsfunktion sehr viel Code generieren, da praktisch jeder verfügbare Parameter gesetzt wird, obwohl die Standardwerte für viele Parameter für Ihre Sortieroperation akzeptabel sind.

Es gibt Ihnen jedoch eine sehr gute Vorstellung davon, was beim Schreiben von VBA-Sortierungscodes erforderlich ist, und ein Vorteil besteht darin, dass der aufgezeichnete Code immer für Sie funktioniert. Ihr eigener Code muss möglicherweise getestet und debuggt werden, damit er ordnungsgemäß funktioniert.

Denken Sie daran, dass es für einen in VBA ausgeführten Vorgang keine Rückgängig-Funktion gibt. Daher ist es eine gute Idee, eine Kopie der Tabellendaten auf einem anderen Arbeitsblatt zu erstellen, bevor Sie mit dem Schreiben Ihres Sortiercodes beginnen.

Wenn Sie beispielsweise eine einfache Sortierung der obigen Beispieldaten nach Mitarbeiter durchführen, würde die Aufzeichnung den folgenden Code generieren:

123456789101112131415161718 Untermakro1()Bereich("A1:E6").WählenActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.ClearActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add2 Key:=Range("A2:A6"), _SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormalMit ActiveWorkbook.Worksheets("Sheet1").Sort.SetRange Range("A1:E6").Header = xlYes.MatchCase = Falsch.Orientierung = xlTopToBottom.SortMethod = xlPinYin.AnwendenEnde mitEnd Sub

Dies ist ein ziemlich großer Codeblock, und vieles davon ist unnötig, da Standardparameter verwendet werden. Wenn Sie jedoch unter Zeitdruck stehen, um ein Projekt abzuschließen, und Sie schnell funktionierenden Code benötigen, können Sie diesen problemlos in Ihren eigenen VBA-Code einfügen.

Wenn Sie Ihren Code jedoch verständlicher und eleganter gestalten möchten, stehen Ihnen andere Optionen zur Verfügung.

VBA-Code für eine einstufige Sortierung

Wenn Sie den Beispielcode nach Employee nur wie bisher beim Aufzeichnen eines Makros sortieren möchten, ist der Code sehr einfach:

1234567 Unter SingleLevelSort()Worksheets("Sheet1").Sort.SortFields.ClearRange("A1:E6").Sort Key1:=Range("A1"), Header:=xlYesEnd Sub

Dies ist viel einfacher zu verstehen als der aufgezeichnete Code, da er die Standardwerte akzeptiert, z. B. aufsteigend sortieren, sodass die Parameter nicht auf Standardwerte gesetzt werden müssen. Dies setzt voraus, dass Sie zuvor eine 'Clear'-Anweisung verwendet haben.

Die Methode „Clear“ wird zunächst verwendet, um sicherzustellen, dass jeder Sortierparameter für dieses Arbeitsblatt auf die Standardwerte zurückgesetzt wird. Ein Benutzer hat die Parameter möglicherweise zuvor auf andere Werte gesetzt oder eine frühere Sortierung in VBA hat sie möglicherweise geändert. Es ist wichtig, beim Sortieren von einer Standardposition aus zu starten, da Sie sonst leicht falsche Ergebnisse erhalten.

Die Clear-Methode setzt den Header-Parameter nicht zurück, und es ist ratsam, dies in Ihren Code aufzunehmen, da Excel sonst versuchen kann, zu erraten, ob eine Kopfzeile vorhanden ist oder nicht.

Führen Sie diesen Code für die Beispieldaten aus und Ihr Arbeitsblatt sieht so aus:

VBA-Code für eine mehrstufige Sortierung

Sie können Ihrem Code beliebig viele Sortierebenen hinzufügen. Angenommen, Sie möchten zuerst nach Abteilung und dann nach Startdatum sortieren, jedoch in aufsteigender Reihenfolge nach der Abteilung und in absteigender Reihenfolge nach dem Startdatum:

12345678 Sub MultiLevelSort()Worksheets("Sheet1").Sort.SortFields.ClearRange("A1:E6").Sort Key1:=Range("E1"), Key2:=Range("C1"), Header:=xlJa, _Reihenfolge1:=xlAufsteigend, Reihenfolge2:=xlAbsteigendEnd Sub

Beachten Sie, dass die Sortieranweisung nun zwei Schlüssel enthält (Key1 und Key2). Schlüssel1 (Abteilungsspalte E) wird zuerst sortiert und dann Schlüssel2 (Startdatum Spalte C) basierend auf der ersten Sortierung.

Es gibt auch zwei Auftragsparameter. Order1 wird mit Key1 (Abteilung) und Order2 mit Key2 (Startdatum) verknüpft. Es ist wichtig, sicherzustellen, dass Schlüssel und Aufträge miteinander im Einklang stehen.

Führen Sie diesen Code für die Beispieldaten aus und Ihr Arbeitsblatt sieht so aus:

Die Spalte Abteilung (E) ist in aufsteigender Reihenfolge und die Spalte Startdatum (C) ist in absteigender Reihenfolge.

Der Effekt dieser Art ist am deutlichsten, wenn man sich Jane Halfacre (Reihe 3) und John Sutherland (Reihe 4) ansieht. Sie sind beide in der Finanzabteilung, aber Jane Halfacre hat vor John Sutherland angefangen und die Daten werden in absteigender Reihenfolge angezeigt.

Wenn der Bereich der Tabellendaten beliebig lang sein könnte, können Sie den Sortierbereich mit dem UsedRange-Objekt definieren. Dies funktioniert nur, wenn nur die Tabellendaten auf dem Arbeitsblatt vorhanden sind, da alle Werte außerhalb der Daten falsche Ergebnisse für die Anzahl der Zeilen und Spalten liefern.

1234567 Sub MultiLevelSort()Worksheets("Sheet1").Sort.SortFields.ClearWorksheets("Sheet1").UsedRange.Sort Key1:=Range("E1"), Key2:=Range("C1"), Header:=xlYes, _Reihenfolge1:=xlAufsteigend, Reihenfolge2:=xlAbsteigendEnd Sub

Dies verhindert das Problem, wenn Sie die Methode ‘End(xlDown)’ verwenden, um den Sortierbereich zu definieren. Wenn sich in der Mitte der Daten eine leere Zelle befindet, wird alles nach der leeren Zelle nicht eingeschlossen, während UsedRange bis zur letzten aktiven Zelle im Arbeitsblatt geht.

Sortieren nach Zellfarbe

Seit Excel 2007 ist nun eine Sortierung nach der Hintergrundfarbe einer Zelle möglich, was eine enorme Flexibilität bei der Gestaltung Ihres Sortiercodes in VBA bietet.

123456789101112 Unter SingleLevelSortByCellColor()Worksheets("Sheet1").Sort.SortFields.ClearActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add2 Key:=Range("A2:A6"), _SortOn:=xlSortOnCellColor, Order:=xlAscending, DataOption:=xlSortNormalMit ActiveWorkbook.Worksheets("Sheet1").Sort.SetRange Range("A1:E6").AnwendenEnde mitEnd Sub

Dieser Code sortiert den Beispieldatenbereich (A2:A6) basierend auf der Hintergrundfarbe der Zelle. Beachten Sie, dass es jetzt einen zusätzlichen Parameter namens ‚SortOn‘ gibt, der den Wert ‚xlSortOnCellColor‘ hat.

Beachten Sie, dass der Parameter ‚SortOn‘ nur von einem Arbeitsblattobjekt und nicht von einem Bereichsobjekt verwendet werden kann.

Aus diesem Grund ist der Code komplizierter als bei einer Sortierung mit Zellwerten.

Dieser Code verwendet einen Schlüsselwert für die Sortierung, der den gesamten Datenbereich abdeckt, aber Sie können einzelne Spalten als Schlüssel für die Hintergrundfarbensortierung angeben und wie zuvor gezeigt mehrere Ebenen verwenden.

Nachdem Sie diesen Code ausgeführt haben, sieht Ihr Arbeitsblatt jetzt so aus:

Sortieren nach Schriftfarbe

Die Sortierfunktion in Excel VBA bietet noch mehr Flexibilität, indem Sie nach Schriftfarben sortieren können:

1234567891011121314 Unter SingleLevelSortByFontColor()Worksheets("Sheet1").Sort.SortFields.ClearActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add(Range("A2:A6"), _xlSortOnFontColor, xlAscending, xlSortNormal).SortOnValue.Color = RGB(0, 0, 0)Mit ActiveWorkbook.Worksheets("Sheet1").Sort.SetRange Range("A1:E6").Header = xlYes.Orientierung = xlTopToBottom.AnwendenEnde mitEnd Sub

Der Code zum Sortieren nach Schriftfarbe ist weitaus komplizierter als bei der Zellenhintergrundfarbe. Der Parameter ‚SortOn‘ enthält jetzt den Wert von ‚xlSortOnFontColor‘.

Beachten Sie, dass Sie die Ausrichtung als „xlTopToBottom“ und eine Farbe angeben müssen, nach der sortiert werden soll. Dies wird in RGB-Begriffen (Rot, Grün, Schwarz) mit Werten von 0 bis 255 angegeben.

Nachdem Sie diesen Code mit den Beispieldaten ausgeführt haben, sieht Ihr Arbeitsblatt jetzt so aus:

Das Sortieren mit Farben in VBA ist weitaus komplizierter als eine mehrstufige Sortierung, aber wenn Ihr Sortiercode nicht funktioniert (was passieren kann, wenn ein Parameter fehlt oder Sie den Code nicht richtig eingegeben haben), können Sie immer auf die Aufzeichnung zurückgreifen ein Makro und integrieren den aufgezeichneten Code in Ihre VBA.

Verwenden anderer Parameter bei der VBA-Sortierung

Es gibt eine Reihe optionaler Parameter, die Sie in Ihrem VBA-Code verwenden können, um Ihre Sortierung anzupassen.

Sortieren nach

SortOn wählt aus, ob die Sortierung Zellenwerte, Zellenhintergrundfarben oder Zellenschriftfarben verwendet. Die Standardeinstellung ist Zellenwerte.

1 SortOn = xlSortOnValues

Befehl

Reihenfolge legt fest, ob die Sortierung in aufsteigender oder absteigender Reihenfolge erfolgt. Die Standardeinstellung ist Aufsteigend.

1 Reihenfolge = xlAufsteigend

Datenoption

DataOption wählt aus, wie Text und Zahlen sortiert werden. Der Parameter xlSortNormal sortiert numerische und Textdaten getrennt. Der Parameter xlSortTextAsNumbers behandelt Text als numerische Daten für die Sortierung. Der Standardwert ist xlSortNormal.

1 DataOption = xlSortNormal

Header

Header legt fest, ob der tabellarische Datenbereich eine Kopfzeile hat oder nicht. Wenn eine Kopfzeile vorhanden ist, soll diese nicht in die Sortierung aufgenommen werden.

Parameterwerte sind xlYes, xlNo und xlYesNoGuess. xlYesNoGuess überlässt es Excel, festzustellen, ob eine Kopfzeile vorhanden ist, was leicht zu inkonsistenten Ergebnissen führen kann. Die Verwendung dieses Wertes wird nicht empfohlen.

Der Standardwert ist XNo (keine Kopfzeile innerhalb der Daten). Bei importierten Daten gibt es normalerweise eine Kopfzeile, also stellen Sie sicher, dass Sie diesen Parameter auf xlYes setzen.

1 Kopfzeile = xlJa

MatchCase

Dieser Parameter bestimmt, ob bei der Sortierung die Groß-/Kleinschreibung beachtet wird oder nicht. Optionswerte sind True oder False. Wenn der Wert False ist, werden Kleinbuchstabenwerte als die gleichen wie Großbuchstabenwerte betrachtet. Wenn der Wert True ist, zeigt die Sortierung den Unterschied zwischen Groß- und Kleinschreibung innerhalb der Sortierung an. Der Standardwert ist False.

1 MatchCase = Falsch

Orientierung

Dieser Parameter legt fest, ob die Sortierung nach unten durch die Zeilen oder über alle Spalten erfolgt. Der Standardwert ist xlTopToBottom (durch Zeilen sortieren). Sie können xlLeftToRight verwenden, wenn Sie horizontal sortieren möchten. Werte wie xlRows und xlColumns funktionieren für diesen Parameter nicht.

1 Ausrichtung = xlTopToBottom

Sortiermethode

Dieser Parameter wird nur zum Sortieren chinesischer Sprachen verwendet. Es hat zwei Werte, xlPinYin und xlStroke. xlPinYin ist der Standardwert.

xlPinYin sortiert nach der phonetischen chinesischen Sortierreihenfolge für Zeichen. xlStroke sortiert nach der Anzahl der Striche in jedem Zeichen.

Wenn Sie ein Sortiermakro aufzeichnen, wird dieser Parameter immer im Code enthalten sein, und Sie haben sich vielleicht gefragt, was er bedeutet. Wenn Sie jedoch nicht mit Daten auf Chinesisch zu tun haben, nützt es wenig.

1 Sortiermethode = xlPinYin

Verwenden eines Doppelklickereignisses zum Sortieren von Tabellendaten

Bei allen Funktionen, die Microsoft in die Sortiermethoden für VBA integriert hat, gab es keine einfache Möglichkeit, auf eine Spaltenüberschrift zu doppelklicken und die gesamten Tabellendaten basierend auf dieser bestimmten Spalte zu sortieren.

Dies ist eine wirklich nützliche Funktion, und es ist einfach, den Code dafür zu schreiben.

12345678910111213141516171819202122232425262728293031323334 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)'Es wird angenommen, dass die Daten bei Zelle A1 beginnen'Erstellen Sie drei Variablen, um die ausgewählte Zielspalte und die maximale Spalte und Zeile von _ zu erfassen.'die tabellarischen DatenDim Col As Integer, RCol As Long, RRow As Long'Überprüfen Sie, ob der Benutzer auf die Kopfzeile doppelgeklickt hat - Zeile 1 andernfalls beenden Sie subWenn Ziel.Zeile 1 dann Beenden Unter'Erfassen der maximalen Zeilen im tabellarischen Datenbereich mit dem Objekt 'UsedRange'RCol = ActiveSheet.UsedRange.Columns.Count'Erfassen der maximalen Spalten im tabellarischen Datenbereich mit dem 'UsedRange'-ObjektRRow = ActiveSheet.UsedRange.Rows.Count'Überprüfen Sie, dass der Benutzer nicht auf eine Spalte außerhalb des tabellarischen Datenbereichs doppelgeklickt hatWenn Target.Column > RCol, dann Exit Sub'Erfassen Sie die Spalte, auf die der Benutzer doppelgeklickt hatSpalte = Ziel.Spalte'Vorherige Sortierparameter löschenActiveSheet.Sort.SortFields.Clear'Sortieren Sie den tabellarischen Bereich wie durch die maximale Anzahl von Zeilen und Spalten aus dem 'UsedRange'-Objekt definiert'Sortieren Sie die Tabellendaten mit der vom Benutzer doppelt angeklickten Spalte als SortierschlüsselActiveSheet.Range(Cells(1, 1), Cells(RCol, RRow)).Sort Key1:=Cells(1, Col), Header:=xlYes'Wählen Sie Zelle A1 aus - dies soll sicherstellen, dass der Benutzer nicht im Bearbeitungsmodus bleibt, nachdem die Sortierung _ ist' vollendetActiveSheet.Range("A1").SelectEnd Sub

Dieser Code muss auf dem Doppelklickereignis auf dem Blatt mit den Tabellendaten platziert werden. Sie tun dies, indem Sie im Projekt-Explorer-Fenster (obere linke Ecke des VBE-Bildschirms) auf den Arbeitsblattnamen klicken und dann im ersten Dropdown-Menü des Codefensters "Arbeitsblatt" auswählen. Wählen Sie im zweiten Dropdown-Menü „BeforeDoubleClick“ aus und geben Sie dann Ihren Code ein.

Beachten Sie, dass in diesem Code keine Namen, Bereiche oder Zellverweise hartcodiert sind, außer dass der Cursor am Ende des Codes in Zelle A1 bewegt wird. Der Code ist so konzipiert, dass er alle erforderlichen Informationen aus den Zellkoordinaten, auf die der Benutzer doppelgeklickt hat, und der Größe des tabellarischen Datenbereichs erhält.

Dabei spielt es keine Rolle, wie groß der tabellarische Datenbereich ist. Der Code erfasst weiterhin alle erforderlichen Informationen und kann für Daten verwendet werden, die an einer beliebigen Stelle in Ihrer Arbeitsmappe gespeichert sind, ohne dass Werte hartcodiert werden müssen.

Die einzige Annahme besteht darin, dass in den Tabellendaten eine Kopfzeile vorhanden ist und der Datenbereich bei Zelle A1 beginnt, die Startposition für den Datenbereich jedoch innerhalb des Codes leicht geändert werden kann.

Jeder Benutzer wird von dieser neuen Sortierfunktionalität entsprechend beeindruckt sein!

Erweitern der Sortierfunktion mit VBA

Microsoft hat eine enorme Flexibilität beim Sortieren mit einer Vielzahl von Parametern ermöglicht. Innerhalb von VBA können Sie dies jedoch weiterführen.

Angenommen, Sie möchten alle Werte mit einer fetten Schriftart an den Anfang Ihrer Daten sortieren. Es gibt keine Möglichkeit, dies in Excel zu tun, aber Sie können den VBA-Code schreiben, um dies zu tun:

123456789101112131415161718192021222324252627282930313233343536373839404142 Sub SortByBold()'Variablen erstellen, um die Anzahl der Zeilen und Spalten für die Tabellendaten aufzunehmenDim RRow As Long, RCol As Long, N As Long'Schalten Sie die Bildschirmaktualisierung aus, damit der Benutzer nicht sehen kann, was passiert - er sieht möglicherweise _'Werte werden geändert und fragen sich warumApplication.ScreenUpdating = False'Erfassen Sie die Anzahl der Spalten im tabellarischen DatenbereichRCol = ActiveSheet.UsedRange.Columns.Count'Erfassen Sie die Anzahl der Zeilen innerhalb des tabellarischen DatenbereichsRRow = ActiveSheet.UsedRange.Rows.Count'Alle Zeilen im tabellarischen Datenbereich durchlaufen und die Kopfzeile ignorierenFür N = 2 bis RRow'Wenn eine Zelle eine fette Schrift hat, setzen Sie einen führenden 0-Wert gegen den ZellenwertWenn ActiveSheet.Cells(N, 1).Font.Bold = True ThenActiveSheet.Cells(N, 1).Value = "0" & ​​ActiveSheet.Cells(N, 1).ValueEnde WennNächste N'Alle vorherigen Sortierparameter löschenActiveSheet.Sort.SortFields.Clear'Tabellendatenbereich sortieren. Alle Werte mit einem führenden 0-Wert werden nach oben verschobenActiveSheet.Range(Cells(1, 1), Cells(RCol, RRow)).Sort Key1:=Cells(1, 1), Header:=xlYes'Alle Zeilen im tabellarischen Datenbereich durchlaufen und die Kopfzeile ignorierenFür N = 2 bis RRow'Wenn eine Zelle eine fette Schriftart hat, entfernen Sie den führenden 0-Wert aus dem Zellenwert in _'die ursprünglichen Werte wiederherstellenWenn ActiveSheet.Cells(N, 1).Font.Bold = True ThenActiveSheet.Cells(N, 1).Value = Mid(ActiveSheet.Cells(N, 1).Value, 2)Ende WennNächste N'Bildschirmaktualisierung wieder aktivierenApplication.ScreenUpdating = TrueEnd Sub

Der Code berechnet die Größe des tabellarischen Datenbereichs mithilfe des ‚UsedRange‘-Objekts und durchläuft dann alle darin enthaltenen Zeilen. Wenn eine fette Schriftart gefunden wird, wird eine führende Null vor dem Zellenwert platziert.

Anschließend erfolgt eine Sortierung. Da die Sortierung in aufsteigender Reihenfolge erfolgt, wird alles mit einer Null vorangestellt an den Anfang der Liste.

Der Code durchläuft dann alle Zeilen und entfernt die führenden Nullen, wodurch die Daten auf ihre ursprünglichen Werte zurückgesetzt werden.

Dieser Code sortiert nach fetten Schriftarten als Kriterium, aber Sie können auch andere Zellenmerkmale auf die gleiche Weise verwenden, z.

Sie werden die Entwicklung der Website helfen, die Seite mit Ihren Freunden teilen

wave wave wave wave wave