Clever-Excel-Forum

Normale Version: Formel "Zählenwenn" in VBA
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo!

Ich möchte gerne folgende Formel in VBA abgebildet haben, aber leider kommt immer über VBA als Ergebnis 0 raus, mit der Formel kommt aber richtiger Weise was anderes raus.

Hier die Formel:

Code:
=ZÄHLENWENN(I:I;""&DATUM(JAHR(HEUTE());MONAT(HEUTE());TAG(HEUTE())))

Hier der VBA Code:

Code:
Application.WorksheetFunction.CountIf(Sheets("Panels").Range("I:I"), "" & DateSerial(Year(Now()), Month(Now()), Day(Now())))


Ich hoffe, dass mir jemand helfen kann.

LG
Thomas
Hallo Thomas,

verdopple mal die beiden Anführungszeichen.

Gruß Uwe
Hallo,

es soll also im Tabellenblatt "Panels" in Spalte I nach Leerzeichen&heutiges Datum gezählt werden?
Hier mein Vorschlag:

Code:
Sub ZähleHeutigesDatum()
    Dim ws As Worksheet
    Dim letzteZeile As Long
    Dim datum As Date
    Dim zähler As Integer
   
    ' Blatt "Panels" festlegen
    Set ws = ThisWorkbook.Sheets("Panels")
   
    ' Letzte Zeile in Spalte I ermitteln
    letzteZeile = ws.Cells(ws.Rows.Count, "I").End(xlUp).Row
   
    ' Heutiges Datum festlegen
    datum = Date
   
    ' Zähler zurücksetzen
    zähler = 0
   
    ' Schleife über alle Zellen in Spalte I
    Dim i As Long
    For i = 1 To letzteZeile
        ' Überprüfen, ob die Zelle den gesuchten Text enthält
        If InStr(1, ws.Cells(i, "I").Value, " " & datum) > 0 Then
            zähler = zähler + 1
        End If
    Next i
   
    ' Ergebnis anzeigen
    MsgBox "Das Datum kommt " & zähler & " Mal in Spalte I vor."
End Sub
Moin,

Eine Schleife zum ersetzen von Zählenwenn ist ein wenig umständlich. Sofern in deiner Spalte echte Datumswerte stehen und keine Texte, musst du nur auf die implizite Typumwandlung durch ""& verzichten:
Code:
?WorksheetFunction.CountIf(ActiveSheet.Columns(1), DateSerial(2023,1,15))

Viele Grüße
derHöpp
Hallo!

Danke für eure Hilfe. Ich habs gerade herausgefunden, die zwei Anführungszeichen waren der Fehler, hier der richtige Code:

Code:
Application.WorksheetFunction.CountIf(Sheets("Panels").Range("I:I"), DateSerial(Year(Now()), Month(Now()), Day(Now())))
Moin nochmal,

Dein DateSerial-Gedöns mit Now() kannst du einfach durch Date() ersetzen, das gibt dir auch das heutige Datum zurück.

Viele Grüße
derHöpp
... was übrigens auch für die Excel-Formel gilt:
=""&HEUTE()
statt
=""&DATUM(JAHR(HEUTE());MONAT(HEUTE());TAG(HEUTE()))
reicht völlig aus.
Wahrscheinlich kann man sogar noch auf das ""& verzichten, wenn man die Zelle mit dem richtigen Zahlenformat darstellen lässt.