Excel VBA AI Assistant LogoExcel VBA AI Assistant
    Performance
    VBA
    WorksheetFunctions
    Schleifen
    Empfohlen

    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.

    VBA AI Team
    Veröffentlicht am 17. August 2025
    14 Min. Lesezeit

    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, VLookup sind meist schneller als selbst geschriebene Schleifen.
    • Tipp: Eingaben validieren und Fehlerfälle abfangen (Application.Match ohne 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

    AufgabeBevorzugt
    Summen/AggregateWorksheetFunctions (Sum, CountIfs)
    Einmalige SucheMatch/XLookup
    Viele WiederholungenDictionary/Array + Schleife
    Komplexe LogikArray + 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.

    Mit dem VBA Assistant schneller ans Ziel

    Lassen Sie sich Best Practices vorschlagen, Code erklären und automatisch verbessern.