Microsoft Excel

Herbers Excel/VBA-Archiv

CountIf mit Datum(Jahr)


Betrifft: CountIf mit Datum(Jahr) von: Marc
Geschrieben am: 28.09.2019 21:23:35

Guten Abend zusammen,

ich möchte aus einer Spalte, die unterschiedliche Datumswerte enthält mit CountIf zählen wie oft ein bestimmtes Jahr vorhanden ist mit folgendem Code:

Sub ExToEx()

Dim Per As Date

Per = Year(Date)

Dim Num As Integer

Dim PeriodCount As Long

Dim adr As Range

Set adr = ThisWorkbook.Worksheets("Dividenden").Range("A1:A50")

For PeriodCount = 1 To 11

Num = WorksheetFunction.CountIf(Year(adr), Per)       '''Typen unverträglich

Debug.Print Num

Per = Year(Date) - 1

Next PeriodCount

End Sub
Ich bekomme die Meldung Typen unverträglich und weiß nicht weshalb.

Gruß,
Marc

  

Betrifft: AW: CountIf mit Datum(Jahr) von: Günther
Geschrieben am: 28.09.2019 22:38:21

Moin,
dan lass dir doch einmal den Variablentyp von "Per" nach der Zuweisung ausgeben oder alternativ werte genau so Year(Date) aus.

Gruß
Günther


  

Betrifft: AW: CountIf mit Datum(Jahr) von: Marc
Geschrieben am: 28.09.2019 23:22:52

Hallo Günther,

die Variable hat den Typ Date. Ich habe nun bemerkt, dass ich besser dran bin wenn ich den Typ String zuweise denn sonst bekomme ich nicht das korrekte Jahr angezeigt. Allerdings habe ich die ganze Geschichte nun mit einer weiteren for each Schleife gelöst.

Vielen Dank und Gruß


  

Betrifft: AW: CountIf mit Datum(Jahr) von: Daniel
Geschrieben am: 28.09.2019 23:24:54

HI
bei CountIf/ZählenWenn muss der erste Parameter ein Zellbereich bzw eine Range-Variable sein.
die Werte aus diesem Zellbereich müssen so verwendet werden, wie sie in den Zellen stehen, eine überarbeitung der werte innerhalb der CountIf-Funktion (so wie man es von SummenProdukt oder Matrixformeln kennt) ist nicht möglich.

wenn du die Anzahl innerhalb eines bestimmten Jahres ermitteln willst, musst du mit ZählenWenns/CountIfs arbeiten und alle werte Zählen, die größergleich dem 1.1 des jeweiligen Jahres und kleinergleich dem 31.12 des jeweiligen Jahres sind:

Num = Worksheetfunction.countifs(adr, ">=" & Clng(DateSerial(Year(Date), 1, 1)), adr, "<=" & Clng(DateSerial(Year(Date), 12, 31)))
Gruß Daniel