Zum Hauptinhalt springen

Sortieren eines Arrays in VBA Excel: Beispiele und Anweisungen

Das Sortieren eines Arrays ist eine der wichtigsten Vorgänge bei der Arbeit mit Daten in VBA Excel. Dadurch können Sie die Elemente eines Arrays nach einem bestimmten Merkmal anordnen, was die spätere Verarbeitung dieser Daten erleichtert. In diesem Artikel werden wir verschiedene Möglichkeiten zum Sortieren von Arrays in VBA Excel untersuchen und Beispiele und Anweisungen zur Verwendung bereitstellen.

Eine der einfachsten Möglichkeiten zum Sortieren eines Arrays in Excel VBA besteht darin, die integrierte Funktion zu verwenden Sort. Mit dieser Funktion können Sie das Array in aufsteigender oder absteigender Reihenfolge sortieren. Um die Funktion zu verwenden Sort Sie müssen einen Bereich von Zellen angeben, die Arraywerte enthalten, sowie die Sortierrichtung.

Eine weitere Möglichkeit zum Sortieren eines Arrays in VBA Excel besteht darin, einen Sortieralgorithmus anzuwenden QuickSort. Dies ist einer der effizientesten Sortieralgorithmen, der mit Arrays jeder Größe funktioniert. Algorithmus QuickSort es basiert auf dem Prinzip der Aufteilung eines Arrays in Subarms und deren anschließendem Vergleich und Zusammenführen.

Durch die Verwendung verschiedener Möglichkeiten, ein Array in VBA Excel zu sortieren, können Sie die Arbeit mit Daten erheblich vereinfachen und die Effizienz Ihres Codes verbessern. Beachten Sie unabhängig von der gewählten Methode, dass Sie die Quelldaten sorgfältig überprüfen und die Sortierergebnisse ordnungsgemäß verarbeiten müssen.

Beschreibung und Anwendung der Sortierung in VBA Excel

Die Sortierung in Excel VBA erfolgt über die Sort() -Methode des Range-Objekts. Parameter werden an diese Methode übergeben, die genau bestimmen, wie die Daten geordnet werden sollen.

Die Sortierung basiert auf einem von drei Parametern: Key1, Order1 und DataOption1. Angabe Key2, Order2 und DataOption2 wird für die mehrstufige Sortierung verwendet.

Parameter Key1 gibt die Spalte oder den Spaltenbereich an, nach der sortiert werden soll. Sie können eine Spaltennummer (eine ganze Zahl), einen Spaltenbrief (eine Textzeichenfolge) oder ein Range-Objekt , das den gewünschten Spaltenbereich darstellt, an ihn übergeben.

Parameter Order1 gibt die Sortierreihenfolge an. Sie können eine xlAscending-Konstante für die aufsteigende Sortierung und eine xlDescending-Konstante für die absteigende Sortierung an sie übergeben.

Parameter DataOption1 bestimmt, ob die Zeilen oder Spalten einer Tabelle sortiert werden sollen. Sie können eine xlSortColumns-Konstante zum Sortieren von Spalten und xlSortRows zum Sortieren von Zeilen an sie übergeben.

Angabe Key2, Order2 und DataOption2 wird zum Ausführen einer mehrstufigen Sortierung verwendet. Sie ähneln denen der ersten Sortierebene, werden jedoch für zusätzliche Sortierebenen verwendet.

Die Anwendung der Sortierung in Excel VBA ist sehr nützlich bei der Verarbeitung großer Datenmengen, insbesondere wenn Sie die Informationen schnell nach den gewünschten Kriterien sortieren möchten. Das Sortieren erleichtert die Arbeit mit den Daten und erleichtert die Analyse oder Berichterstellung.

Es ist wichtig zu beachten, dass Sie vor der Sortierung einen Tabellenbereich definieren müssen. Dies kann mit einem Range-Objekt erfolgen. Als nächstes wird die Sort() -Methode auf diesen Bereich angewendet, um die Daten zu sortieren.

Beispiele für die Verwendung der Array-Sortierung in VBA Excel

Es gibt mehrere Möglichkeiten, Arrays in VBA Excel zu sortieren. Im Folgenden finden Sie Beispiele für die Verwendung einiger von ihnen:

  • Sortieren eines Arrays mit der Sort-Funktion
  • Sie können die integrierte Sort-Funktion verwenden, um ein Array in VBA Excel zu sortieren. Diese Funktion sortiert die Elemente eines Arrays in aufsteigender oder absteigender Reihenfolge. Der folgende Code sortiert beispielsweise ein arr-Array in aufsteigender Reihenfolge:

Dim arr(5) As Integerarr = Array(4, 2, 1, 5, 3)' Сортировка массива в порядке возрастанияApplication.WorksheetFunction.Sort arr
Dim arr(5) As Integerarr = Array(4, 2, 1, 5, 3)Dim i, j, temp As Integer' Сортировка массива в порядке убыванияFor i = 0 To UBound(arr) - 1For j = i + 1 To UBound(arr)If arr(i) < arr(j) Thentemp = arr(i)arr(i) = arr(j)arr(j) = tempEnd IfNext jNext i
Function SortArray(arr() As Variant) As VariantDim i, j As IntegerDim temp As VariantFor i = LBound(arr) To UBound(arr) - 1For j = i + 1 To UBound(arr)If arr(i) > arr(j) Thentemp = arr(i)arr(i) = arr(j)arr(j) = tempEnd IfNext jNext iSortArray = arrEnd Function' Пример использования функции SortArrayDim arr(5) As Integerarr = Array(4, 2, 1, 5, 3)Dim sortedArr() As IntegersortedArr = SortArray(arr)

Daher können Sie in VBA Excel verschiedene Methoden zum Sortieren von Arrays verwenden. Die Auswahl einer bestimmten Methode hängt von der Bequemlichkeit und den Anforderungen Ihres Projekts ab.

Wie sortiere ich ein Array von Zahlen in VBA Excel?

Zunächst müssen Sie ein Array von Zahlen deklarieren und füllen. Hier ist ein Beispiel für das Deklarieren und Füllen eines Arrays:

Dim arr() As Variantarr = Array(5, 2, 9, 1, 7)

Danach ist es ausreichend, das Array in einen Bereich zu konvertieren und die Methode aufzurufen Sort. So können Sie dies tun:

Dim rng As RangeSet rng = Sheet1.Range("A1:A" & UBound(arr) + 1)rng.Value = Application.Transpose(arr)rng.Sort Key1:=rng, Order1:=xlAscending, Header:=xlNoarr = Application.Transpose(rng.Value)Set rng = Nothing

In diesem Beispiel befindet sich ein Zahlenarray im Bereich A1 bis A5 in Blatt "Sheet1". Wir deklarieren das Objekt rng als Klassenobjekt Range und wir stellen es diesem Bereich gleich. Dann verwenden wir die Methode Transpose um ein Array in einen vertikalen Bereich umzuwandeln.

Danach rufen wir die Methode auf Sort am Objekt rng durch Angabe des Sortierschlüssels (Key1), Sortierreihenfolge (Order1) und keine Überschrift (Header) im Bereich.

Schließlich verwenden wir die Methode erneut Transpose, um den sortierten Bereich wieder in ein Array umzuwandeln. Das resultierende sortierte Array wird in einer Variablen gespeichert arr.

Jetzt, da das Array sortiert ist, können Sie es nach Bedarf in Ihrem Programm verwenden.

Dies ist nur eine Möglichkeit, ein Array von Zahlen in VBA Excel zu sortieren. Abhängig von Ihren Bedürfnissen können Sie auch andere Sortiermethoden verwenden, z. B. Blasensortierung, Auswahlsortierung oder Schnellsortierung.

Es ist wichtig, sich daran zu erinnern, dass bei der Verwendung der Methode Sort bei einem geänderten Bereich im Arbeitsblatt vor der Sortierung kann Excel die Zustimmung des Benutzers zum Sortieren anfordern. Um dies zu vermeiden, können Sie einen Parameter festlegen Application.DisplayAlerts in Wert False vor dem Sortieren und in den Wert zurückgeben True nach dem Sortieren.

Wie sortiere ich ein Array von Strings in VBA Excel?

In VBA Excel können Sie ein Array von Strings mit integrierten Funktionen einfach sortieren. Betrachten Sie Beispiele für zwei grundlegende Sortiermethoden: aufsteigend sortieren und absteigend sortieren.

Aufsteigend sortieren

Sie können die Sort-Funktion des WorksheetFunction-Objekts verwenden, um ein Array von Zeilen in aufsteigender Reihenfolge zu sortieren :

Dim arr() As Variantarr = Array("banana", "apple", "cherry", "date")' Сортировка массива по возрастаниюApplication.WorksheetFunction.Sort arr' Вывод отсортированного массива на лист ExcelFor i = LBound(arr) To UBound(arr)Cells(i + 1, 1).Value = arr(i)Next i

Wenn Sie diesen Code ausführen, werden die sortierten Array-Werte im Excel-Arbeitsblatt angezeigt: "Apple", "Banana", "cherry", "date".

Absteigend sortieren

Mit der Sort-Funktion können Sie ein Array von Zeilen in absteigender Reihenfolge sortieren und der Sort-Methode den Parameter Order1:=xlDescending hinzufügen :

Dim arr() As Variantarr = Array("banana", "apple", "cherry", "date")' Сортировка массива по убываниюApplication.WorksheetFunction.Sort arr, Order1:=xlDescending' Вывод отсортированного массива на лист ExcelFor i = LBound(arr) To UBound(arr)Cells(i + 1, 1).Value = arr(i)Next i

Wenn Sie diesen Code ausführen, werden die sortierten Array-Werte in umgekehrter Reihenfolge im Excel-Arbeitsblatt angezeigt: "date", "cherry", "Banana", "Apple".

Mit den VBA-Funktionen von Excel ist es daher einfach, ein Array von Zeilen in aufsteigender oder absteigender Reihenfolge zu sortieren.