Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA SUMIF mit Vergleichsoperatorenn

Forumthread: VBA SUMIF mit Vergleichsoperatorenn

VBA SUMIF mit Vergleichsoperatorenn
29.01.2021 14:51:45
Andl
Liebe VBA ler,
ich habe folgenden Code für welchen ich gerne einen Vergleichsoperator setzen würde, habe aber etwas Probleme mit der richtigen Schreibweise.
Application.WorksheetFunction.SumIf(Tabelle14.Range("A4:A1048576"), LetztesBearbeitungsdatum, Tabelle14.Range("C4:C1048576"))
Application.WorksheetFunction.SumIf(Tabelle14.Range("A4:A1048576"), "größer als als Vergleichsoperator" LetztesBearbeitungsdatum, Tabelle14.Range("C4:C1048576"))
Ohne Vergleichsoparator bringt er mit den richtigen wert - mit ergibt 0 - obwohl ein Ergebnis raus kommen müsste...
Habe ich etwas am Code falsch?
Beste Grüße
Andl
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA SUMIF mit Vergleichsoperatorenn
29.01.2021 14:59:26
UweD
HAllo
so?

Application.WorksheetFunction.SumIf(Tabelle14.Range("A4:A1048576"), ">" & LetztesBearbeitungsdatum, Tabelle14.Range("C4:C1048576"))
LG UweD
AW: VBA SUMIF mit Vergleichsoperatorenn
29.01.2021 15:05:58
Daniel
Hi
Du muss genauso vorgehen wie in der Excelformel:
Wenn SummeWenn mit Vergleichsoperator verwendet werden soll, muss du als Parameter einen Textstring angeben, der mit dem Operator beginnt und auf den dann direkt im Textstring der Zahlenwert folgt.
Soll die Bedingung sein "größer 10", muss der Text so lauten: "&gt10"
Steht der Wert in ein einer Variablen, musst du verketten: "&GT" & Variable
Ein weiteres Problem könnte mit Datumswerten entstehen, wenn diese in Text gewandelt werden, weil dann nie gab sicher ist, ob bei der Umwandlung jetzt die Deutsche oder die amerikanische Schreibweise verwendet wird und ob das auch die Schreibweise ist, die dein SumIf benötigt um korrekt zu arbeiten.
Daher hier besser das Datum in den Ganzahlwert wandeln, also wenn LetztesBearbeitungsDatum als Date deklariert ist, nimm
"&GT" & CLng(LetztesBearbeitungsDatum)
Gruß Daniel
Anzeige
AW: VBA SUMIF mit Vergleichsoperatorenn
29.01.2021 18:09:20
Andl
Hallo Zusammen,
danke für die Hilfe - der Tipp wegen des Datums hat mir gefehlt. Funktioniert nun einwandfrei.
... = Application.WorksheetFunction.SumIf(Tabelle14.Range("A4:A1048576"), ">" & CLng(LetztesBearbeitungsdatum), Tabelle14.Range("C4:C1048576"))
Vielen Dank.
Beste Grüße
Andl
Anzeige
AW: VBA SUMIF mit Vergleichsoperatorenn
02.02.2021 11:36:18
Andl
Hallo Zusammen,
auf meine vorherige Frage aufbauend - wie Verhält es sich hier Summewenns bzw. SumIfs
Habe folgende Formel - allerdings bringt die mir nie den richtigen Wert bzw. gar nichts.
SumAbschlagNeu311 = Application.WorksheetFunction.SumIfs(Tabelle14.Range("C4:C1048576"), Tabelle14.Range("A4:A1048576"), ">" & CLng(LetztesBearbeitungsdatum), Tabelle14.Range("A4:A1048576"), "=
Ist diese Formel allein vom Aufbau her richtig bzw. wo kann hier ein Fehler unterlaufen?
Beste Grüße
Andl
Anzeige
AW: VBA SUMIF mit Vergleichsoperatorenn
02.02.2021 11:46:57
Daniel
Hi
Bei "größer gleich" und "kleiner gleich" darf das "=" nicht vorne stehen.
Sonst ist es nur "gleich" denn bei "=" am Anfang ist das nachfolgende Zeichen schon Teil des Wertes und nicht mehr Teil des Operators.
Gruß Daniel
AW: VBA SUMIF mit Vergleichsoperatorenn
02.02.2021 17:23:14
Andl
Hallo Daniel,
super, nun hats geklappt. Besten Dank.
Andl
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

VBA SUMIF mit Vergleichsoperatoren richtig anwenden


Schritt-für-Schritt-Anleitung

Um den SUMIF-Befehl in VBA korrekt zu verwenden, insbesondere mit Vergleichsoperatoren, gehe wie folgt vor:

  1. Syntax verstehen: Der SUMIF-Befehl benötigt die Struktur:

    Application.WorksheetFunction.SumIf(Bereich, Kriterium, Summe_Bereich)
  2. Vergleichsoperator hinzufügen: Wenn du einen Vergleichsoperator wie "größer als" verwenden möchtest, musst du diesen als Textstring angeben. Beispiel:

    Application.WorksheetFunction.SumIf(Tabelle14.Range("A4:A1048576"), ">" & LetztesBearbeitungsdatum, Tabelle14.Range("C4:C1048576"))
  3. Datumswerte berücksichtigen: Achte darauf, dass Datumswerte korrekt behandelt werden. Wenn LetztesBearbeitungsdatum ein Datum ist, konvertiere es in einen Ganzzahlwert:

    Application.WorksheetFunction.SumIf(Tabelle14.Range("A4:A1048576"), ">" & CLng(LetztesBearbeitungsdatum), Tabelle14.Range("C4:C1048576"))

Häufige Fehler und Lösungen

Hier sind einige häufige Fehler, die bei der Verwendung von SUMIF in VBA auftreten können, und wie du sie beheben kannst:

  • Falsche Schreibweise des Vergleichsoperators: Achte darauf, dass der Vergleichsoperator direkt vor dem Wert steht, ohne Leerzeichen. Beispiel für "größer als":

    ">" & LetztesBearbeitungsdatum
  • Datumsformat: Wenn Datumswerte in Text umgewandelt werden, kann dies zu Problemen führen. Verwende CLng, um sicherzustellen, dass der Wert korrekt interpretiert wird.

  • Falsche Verwendung von SUMIFS: Bei der Verwendung von SUMIFS ist zu beachten, dass der Vergleichsoperator nicht mit "=" beginnen darf. Beispiel für "größer gleich":

    Application.WorksheetFunction.SumIfs(Tabelle14.Range("C4:C1048576"), Tabelle14.Range("A4:A1048576"), ">=" & CLng(LetztesBearbeitungsdatum))

Alternative Methoden

Neben SUMIF gibt es auch andere Methoden, um Summen in VBA zu berechnen:

  • SUMPRODUCT: Eine gute Alternative ist die Verwendung von SUMPRODUCT, die ebenfalls Vergleichsoperatoren unterstützt. Beispiel:
    Application.WorksheetFunction.SumProduct((Tabelle14.Range("A4:A1048576") > LetztesBearbeitungsdatum) * Tabelle14.Range("C4:C1048576"))

Praktische Beispiele

Hier sind einige praktische Beispiele für die Verwendung von SUMIF und SUMIFS in VBA:

  1. SUMIF Beispiel:

    Dim Summe As Double
    Summe = Application.WorksheetFunction.SumIf(Tabelle14.Range("A4:A1048576"), ">" & CLng(LetztesBearbeitungsdatum), Tabelle14.Range("C4:C1048576"))
  2. SUMIFS Beispiel:

    Dim SummeNeu As Double
    SummeNeu = Application.WorksheetFunction.SumIfs(Tabelle14.Range("C4:C1048576"), Tabelle14.Range("A4:A104857576"), ">" & CLng(LetztesBearbeitungsdatum), Tabelle14.Range("A4:A1048576"), "<=10")

Tipps für Profis

  • Verwende Variablen: Anstatt Werte direkt in die Formel einzugeben, speichere sie in Variablen, um die Lesbarkeit und Wartbarkeit deines Codes zu erhöhen.

  • Debugging: Nutze die Debugging-Funktionen in VBA, um zu überprüfen, ob deine Eingaben und Ausgaben korrekt sind. Verwende z.B. Debug.Print, um Zwischenergebnisse anzuzeigen.

  • Datentypen: Achte darauf, die richtigen Datentypen zu verwenden, um Fehler zu vermeiden. Verwende Date für Datumsangaben und Double für Zahlen.


FAQ: Häufige Fragen

1. Wie funktioniert der Vergleichsoperator in SUMIF? Der Vergleichsoperator wird als Teil eines Textstrings übergeben, z.B. ">" & Wert.

2. Was ist der Unterschied zwischen SUMIF und SUMIFS? SUMIF wird für eine Bedingung verwendet, während SUMIFS mehrere Bedingungen unterstützt.

3. Wie gehe ich mit Datumswerten in VBA um? Verwende CLng, um Datumswerte in Ganzzahlen zu konvertieren, bevor du sie in SUMIF oder SUMIFS verwendest.

4. Was tun, wenn ich unerwartete Ergebnisse erhalte? Überprüfe die Datentypen und stelle sicher, dass die Vergleichsoperatoren korrekt verwendet werden. Debugging kann helfen, das Problem zu identifizieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige