Zahlenwerte mit QuickSort in Excel sortieren
Schritt-für-Schritt-Anleitung
Um die Zahlenwerte mit dem QuickSort-Algorithmus in Excel zu sortieren, folge diesen Schritten:
-
Öffne den Visual Basic for Applications (VBA) Editor:
- Drücke
ALT + F11, um den VBA-Editor zu öffnen.
-
Füge ein neues Modul hinzu:
- Klicke mit der rechten Maustaste auf „VBAProject (DeineDatei.xlsx)“.
- Wähle „Einfügen“ und dann „Modul“.
-
Kopiere den folgenden VBA-Code in das Modul:
Option Explicit
Private Daten() As Double
Private rng As Range
Sub Main()
Set rng = Range("AA22:AA8780") ' Bereich der zu sortierenden Werte
Einlesen
Call Quicksort(Daten, 1, UBound(Daten))
Set rng = Range("AB22:AB8780") ' Zielbereich für die sortierten Werte
Auslesen
Debug.Print "fertig"
End Sub
Private Sub Einlesen()
Dim i As Long
ReDim Daten(rng.Rows.Count)
For i = 1 To UBound(Daten)
Daten(i) = rng(i, 1)
Next
End Sub
Private Sub Auslesen()
Dim i As Long
Dim var As Variant
var = rng
For i = 1 To UBound(Daten)
var(i, 1) = Daten(i)
Next
rng = var
End Sub
Private Function Quicksort(Data, links, rechts)
Dim Teiler As Long
If rechts > links Then
Teiler = Teile(Data, links, rechts)
Call Quicksort(Data, links, Teiler - 1)
Call Quicksort(Data, Teiler + 1, rechts)
End If
End Function
Private Function Teile(Data, links, rechts)
Dim Index As Long
Dim i As Long
Index = links
For i = links To rechts - 1
If Data(i) <= Data(rechts) Then
Call Tausche(Data, Index, i)
Index = Index + 1
End If
Next
Call Tausche(Data, Index, rechts)
Teile = Index
End Function
Private Sub Tausche(Data, i, j)
Dim Temp As Double
Temp = Data(i)
Data(i) = Data(j)
Data(j) = Temp
End Sub
-
Starte das Makro:
- Führe das Makro „Main“ aus, um die Zahlenwerte in der Spalte AB zu sortieren.
Häufige Fehler und Lösungen
- Fehler: "Zu wenig Speicher": Dieser Fehler tritt auf, wenn die Rekursionstiefe des QuickSort zu hoch ist. Reduziere die Anzahl der zu sortierenden Werte, um dies zu vermeiden.
- Daten werden nicht korrekt sortiert: Stelle sicher, dass der Bereich in
Set rng = Range("AA22:AA8780") korrekt angegeben ist.
Alternative Methoden
Wenn du den Excel Algorithmus nicht mit VBA programmieren möchtest, kannst du die Funktion KGROESSTE verwenden:
- Setze in Zelle AB22 die Formel:
=KGROESSTE(AA$22:AA$8780;ZEILE(A1))
- Ziehe die Formel bis AB8780 nach unten.
Diese Methode ist einfach und benötigt keinen VBA-Code, eignet sich jedoch möglicherweise nicht für sehr große Datenmengen.
Praktische Beispiele
Angenommen, du hast in den Zellen AA22 bis AA8780 verschiedene Verkaufszahlen. Mit dem obigen VBA-Code sortierst du diese Zahlen in der Spalte AB, sodass die höchste Zahl in AB22 und die niedrigste in AB8780 steht.
Tipps für Profis
- Optimierung des QuickSort: Du kannst den QuickSort-Algorithmus optimieren, indem du das Pivotelement besser auswählst, z. B. den Median von drei Werten.
- Debugging: Nutze
Debug.Print im Code, um den Fortschritt und die Werte während der Ausführung zu überwachen.
FAQ: Häufige Fragen
1. Was ist QuickSort?
QuickSort ist ein effizienter, rekursiver Sortieralgorithmus, der ein „Teile und herrsche“-Prinzip verwendet, um Daten zu sortieren.
2. Wo kann ich QuickSort in Excel anwenden?
Du kannst QuickSort verwenden, um große Datenmengen in Excel effizient zu sortieren, insbesondere wenn die Standard-Sortierfunktionen nicht ausreichen.
3. Benötige ich spezielle Kenntnisse, um den VBA-Code zu verwenden?
Ein grundlegendes Verständnis von VBA ist hilfreich, um den Code anzupassen und Probleme zu beheben, aber die Schritte sind einfach gehalten.