Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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