Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

=ZÄHLENWENNS() in VBA umsetzen

Forumthread: =ZÄHLENWENNS() in VBA umsetzen

=ZÄHLENWENNS() in VBA umsetzen
Kasimir
Ein Hallo an alle Helfer!
Ich versuche gerade eine Formel in VBA zu übertragen und bekomme es nicht hin. Es geht um die Formel
=ZÄHLENWENNS(Rechnungsauswertung!$C$2:$C$1048576;Kunde!A7;Rechnungsauswertung!$D$2:$D$1048576; ">="&Kunde!B1;Rechnungsauswertung!$D$2:$D$1048576;" und hier im speziellen um den Kriterienbereich 2 und 3. Wie müsste denn obige Formel in VBA lauten Für Hilfe wäre ich dankbar.
Gruß Kasimir
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: =ZÄHLENWENNS() in VBA umsetzen
03.04.2012 21:57:01
Tino
Hallo,
vielleicht so? Die eckigen Klammern [] kannst Du auch durch
Range("Rechnungsauswertung!C2:C1048576") ersetzen oder
Sheets("Rechnungsauswertung").Range("C2:C1048576").
Dim Erg
'=ZÄHLENWENNS(Rechnungsauswertung!$C$2:$C$1048576;Kunde!A7;Rechnungsauswertung!$D$2:$D$1048576; 
'  ">="&Kunde!B1;Rechnungsauswertung!$D$2:$D$1048576;"<="&Kunde!B2) 
With Application.WorksheetFunction
    Erg = .CountIfs([Rechnungsauswertung!$C$2:$C$1048576], [Kunde!A7], _
                    [Rechnungsauswertung!$D$2:$D$1048576], ">=" & [Kunde!B1], _
                    [Rechnungsauswertung!$D$2:$D$1048576], "<=" & [Kunde!B2])
End With
Gruß Tino
Anzeige
AW: =ZÄHLENWENNS() in VBA umsetzen
04.04.2012 06:00:41
Kasimir
Hallo Tino!
Danke Dir für Deine Antwort. Leider erhalte ich nicht das gleiche Ergebnis wie mit der Formel. Als Ergebnis erhalte ich mit der VBA-Funktion immer den Wert 0. Eventuell liegt es ja an den Werten, die ich mit CountIfs auswerten möchte. Mal zur Erklärung: Beim 1. Kriterium handelt es sich um eine Kundennummer. Beim 2. und 3. Kriterium handelt es sich um einen Datumswert. In Kunde!B1 steht z.B. 01.01.2011 und in Kunde!B2 steht dann 31.12.2011
Ich habe mal eine Beispieldatei hochgeladen, in der man sehen kann, dass das Ergebnis nicht das Gleiche ist. Hier mal der Link: https://www.herber.de/bbs/user/79661.xlsm
Ich hoffe, jemand kann mir weiterhelfen.
Gruß,
Kasimir
Anzeige
AW: =ZÄHLENWENNS() in VBA umsetzen
04.04.2012 06:49:07
hary
Hallo Kasimir
Wandele die Datuemer in der Formel in Double.

With Application.WorksheetFunction
MsgBox .CountIfs([Rechnungsauswertung!$C$2:$C$1048576], [Kunde!A7], _
[Rechnungsauswertung!$D$2:$D$1048576], ">=" & CDbl([Kunde!B1]), _
[Rechnungsauswertung!$D$2:$D$1048576], "

gruss hary
Anzeige
AW: =ZÄHLENWENNS() in VBA umsetzen
04.04.2012 06:58:35
Kasimir
Hallo hary,
das war's. Danke Dir für die Unterstützung. Nun kann ich weiterfriemeln.
Einen schönen Tag noch,
Kasimir
;
Anzeige

Infobox / Tutorial

VBA ZÄHLENWENNS für Excel nutzen


Schritt-für-Schritt-Anleitung

Um die Excel-Formel ZÄHLENWENNS in VBA zu nutzen, kannst du die CountIfs-Methode der WorksheetFunction-Objekte verwenden. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. Öffne den Visual Basic for Applications (VBA) Editor in Excel (ALT + F11).
  2. Füge ein neues Modul hinzu: Rechtsklick auf "VBAProject" > "Einfügen" > "Modul".
  3. Kopiere den folgenden Code in das Modul:
Dim Erg As Long
With Application.WorksheetFunction
    Erg = .CountIfs( _
        Sheets("Rechnungsauswertung").Range("C2:C1048576"), Sheets("Kunde").Range("A7"), _
        Sheets("Rechnungsauswertung").Range("D2:D1048576"), ">=" & CDbl(Sheets("Kunde").Range("B1")), _
        Sheets("Rechnungsauswertung").Range("D2:D1048576"), "<=" & CDbl(Sheets("Kunde").Range("B2")))
End With
MsgBox Erg
  1. Passe die Bereiche und Zellen an deine Daten an.
  2. Führe den Code aus, um das Ergebnis zu sehen.

Häufige Fehler und Lösungen

  • Fehler: Ergebnis ist 0

    • Lösung: Überprüfe, ob die Werte in den Zellen (z.B. in Kunde!B1 und Kunde!B2) als Datumswerte formatiert sind. Stelle sicher, dass sie in das richtige Format umgewandelt werden, wie in der Anleitung beschrieben (z.B. CDbl).
  • Fehler: Typkonflikt

    • Lösung: Wenn du Datumswerte verwendest, stelle sicher, dass du die Werte in Double umwandelst, um einen Typkonflikt zu vermeiden.

Alternative Methoden

Eine alternative Methode, um ZÄHLENWENNS in VBA zu nutzen, ist die Verwendung von ZÄHLENWENN in einer Schleife, um mehrere Kriterien zu prüfen. Dies kann jedoch weniger effizient sein als die direkte Verwendung von CountIfs.

Dim Erg As Long
Dim i As Long
For i = 1 To Range("C2:C1048576").Rows.Count
    If Sheets("Rechnungsauswertung").Cells(i, 3).Value = Sheets("Kunde").Range("A7").Value And _
       Sheets("Rechnungsauswertung").Cells(i, 4).Value >= CDbl(Sheets("Kunde").Range("B1").Value) And _
       Sheets("Rechnungsauswertung").Cells(i, 4).Value <= CDbl(Sheets("Kunde").Range("B2").Value) Then
        Erg = Erg + 1
    End If
Next i
MsgBox Erg

Praktische Beispiele

  1. Zählen von Verkäufen innerhalb eines Datumsbereichs:

    • Verwende die oben gezeigte CountIfs-Methode, um die Anzahl der Verkäufe für einen bestimmten Kunden innerhalb eines Datumsbereichs zu zählen.
  2. Anpassen der Kriterien:

    • Du kannst die Kriterien in der CountIfs-Funktion anpassen, um z.B. nur Verkäufe über einem bestimmten Betrag zu zählen:
Erg = .CountIfs( _
    Sheets("Rechnungsauswertung").Range("C2:C1048576"), Sheets("Kunde").Range("A7"), _
    Sheets("Rechnungsauswertung").Range("D2:D1048576"), ">=" & CDbl(Sheets("Kunde").Range("B1")), _
    Sheets("Rechnungsauswertung").Range("D2:D1048576"), "<=" & CDbl(Sheets("Kunde").Range("B2")), _
    Sheets("Rechnungsauswertung").Range("E2:E1048576"), ">1000") ' Beispiel für Betrag über 1000

Tipps für Profis

  • Verwende benannte Bereiche: Anstatt von festen Zellbereichen zu verwenden, kannst du benannte Bereiche erstellen, um deinen Code lesbarer und wartungsfreundlicher zu machen.
  • Fehlerbehandlung einbauen: Verwende On Error Resume Next, um die Fehlerbehandlung zu verbessern und unerwartete Fehler zu vermeiden.
  • Leistung optimieren: Reduziere die Anzahl an Berechnungen, indem du Daten in Arrays lädst und dann verarbeitest.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Kriterien in VBA für ZÄHLENWENNS verwenden?
Du kannst mehrere Kriterien in der CountIfs-Methode angeben, indem du für jedes Kriterium einen weiteren Argumenten hinzufügst.

2. Was mache ich, wenn ich eine Fehlermeldung erhalte?
Überprüfe deine Zellreferenzen und stelle sicher, dass die Datenformate übereinstimmen. Datumswerte sollten in der Regel als Double behandelt werden, um Typkonflikte zu vermeiden.

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