Formel "Zählenwenn" in VBA
#1
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
Excel Version 2016
Antworten Top
#2
Hallo Thomas,

verdopple mal die beiden Anführungszeichen.

Gruß Uwe
Antworten Top
#3
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
Antworten Top
#4
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
Antworten Top
#5
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())))
Excel Version 2016
Antworten Top
#6
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
Antworten Top
#7
... 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.
Gruß,
Helmut

Win10 - Office365 / MacOS - Office365
[-] Folgende(r) 1 Nutzer sagt Danke an HKindler für diesen Beitrag:
  • derHoepp
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste