WorksheetFunctions vs. VBA-Schleifen: Der ultimative Performance-Vergleich
Wann sind WorksheetFunctions schneller, wann lohnt sich eine Schleife? Fairer Vergleich mit Messmustern, Praxisfall und Decision-Guide.
Viele Aufgaben lassen sich sowohl mit reinen VBA-Schleifen als auch mit WorksheetFunctions lösen. Häufig sind die in Excel integrierten Funktionen (in C implementiert) deutlich schneller. Dieser Artikel zeigt, wann welche Technik im Vorteil ist – mit Messmustern und Praxisfall.
1) Summen, Zählen, Suchen – lieber Funktionen
Dim s As Double s = Application.WorksheetFunction.Sum(Range("D2:D500000"))
Sum,CountIfs,Match,VLookupsind meist schneller als selbst geschriebene Schleifen.- Tipp: Eingaben validieren und Fehlerfälle abfangen (
Application.Matchohne WorksheetFunction liefert Fehlerwert, den man prüfen kann).
2) Wann VBA-Schleifen besser sind
- Komplexe, zeilenweise Logik (Mehrfachbedingungen, Zustandsmaschinen).
- Wenn Zwischenergebnisse rückgeschrieben werden müssen → Array-In/Out.
3) Messmuster – fair vergleichen
Private Function T() As Double: T = Timer: End Function Sub TestVergleich() Dim t As Double, v t = T(): v = Application.WorksheetFunction.CountIfs(Range("A2:A500000"), "DE") Debug.Print "WSF:", T() - t, "s" Dim arr, i As Long, c As Long: arr = Range("A2:A500000").Value t = T(): c = 0 For i = 1 To UBound(arr, 1) If arr[i, 1] = "DE" Then c = c + 1 Next i Debug.Print "VBA:", T() - t, "s" End Sub
4) Praxisfall – Dublettenprüfung
Ziel: Prüfen, ob eine Kundennummer bereits existiert.
Variante A – WorksheetFunction (Match)
Function Existiert(ByVal such As String, ByVal rng As Range) As Boolean Existiert = Not IsError(Application.Match(such, rng, 0)) End Function
Variante B – Dictionary
Function BuildSet(ByVal rng As Range) As Object Dim dic As Object: Set dic = CreateObject("Scripting.Dictionary") Dim a, i As Long: a = rng.Value For i = 1 To UBound(a, 1) dic(CStr(a[i, 1])) = 1 Next i Set BuildSet = dic End Function
Ergebnis: Für einzelne Anfragen ist Match bequem und schnell. Für tausende Anfragen pro Lauf ist das vorab befüllte Dictionary meist überlegen.
5) Decision-Guide
| Aufgabe | Bevorzugt |
|---|---|
| Summen/Aggregate | WorksheetFunctions (Sum, CountIfs) |
| Einmalige Suche | Match/XLookup |
| Viele Wiederholungen | Dictionary/Array + Schleife |
| Komplexe Logik | Array + Schleife |
Fazit
Nutzen Sie WorksheetFunctions, wenn es um klassische Excel-Operationen geht – sie sind oft unschlagbar schnell. Für komplexe oder massenhaft wiederholte Logik lohnt sich ein Array+Dictionary-Ansatz.
Code-Generierung
Automatische VBA-Code-Erstellung durch natürliche Sprache
Code-Analyse
Code verstehen und dokumentieren
Debugging
Intelligente Fehlerfindung und -behebung
Code-Verbesserung
Optimierung und Fehlerbehandlung
UI-Design
UserForms über natürliche Sprache erzeugen
Snippet-Verwaltung
Über 100 vorgefertigte Code-Bausteine
Weitere Artikel
Mit dem VBA Assistant schneller ans Ziel
Lassen Sie sich Best Practices vorschlagen, Code erklären und automatisch verbessern.
