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

Anzahl Schaltjahre zw. Datum a und Datum B

Forumthread: Anzahl Schaltjahre zw. Datum a und Datum B

Anzahl Schaltjahre zw. Datum a und Datum B
17.04.2013 16:24:36
JoWE
Hallo zusammen,
ich habe im Range A2:B6 Zeilen mit jeweils einem Start- und einem Endedatum
01.04.1973 30.09.1973
01.10.1973 29.03.1974
30.03.1974 30.09.1978
01.10.1978 30.03.2002
01.04.2002 16.04.2013
Die Differenzberechnung zwischen Start- und Endedatum je Zeile errechne ich z.B. mit der Funktion Datedif(A2;B2;"d"). Ich möchte aber die Tage, die durch ein Schaltjahr hinzukommen ebenfalls in die Anzahl der Tage über alle Zeilen berücksichtigt wissen.
Berücksichtigt DateDif dies?
Falls nein, hätte bitte jemand eine entsprechende Formel oder notfalls eine VBA-Lösung?
Gruß
Jochen

Anzeige

22
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
=B2-A2 owT
17.04.2013 16:37:37
Rudi

Selbst herausfinden?
17.04.2013 16:41:15
EtoPHG
Hallo Jochen,
Die Frage Berücksichtigt DateDif dies?
könntest du sicher leicht beantworten wenn du z.B. mal die Resultate von
1.2.1974 .. 1.3.1974 zu
1.2.1980 .. 1.3.1980 vergleichst! Level: Excel gut ?
Gruess Hansueli

AW: Schade, offenbar gibts nur Platitüden..
17.04.2013 18:28:12
JoWE
... aber leider sehe ich in letzter Zeit immer wieder Beiträge der Platzhirsche, die eher nicht dem Geist des Forums entsprechen. Nun ja dieses Forum ist eben auch nur ein Spiegel der Gesellschaft. Wirklich schade.
Ach ja, Rudi: Das war ja wohl nix!
Und EtoPHG: Die FRage in der Gesamtheit wolltest Du nicht lesen?
Grüße und Danke für nichts,
Jochen

Anzeige
Jetzt werd mal nicht frech!
17.04.2013 19:15:54
Rudi
Hallo,
Das war ja wohl nix!
inwiefern?
Die Formel ist korrekt.
Im übrigen berücksichtigt Datedif() Schaltjahre.
Das hättest du auch selbst rausfinden können, wenn du dir die Mühe gemacht hättest, eine Datumsrehe aufzubauen, die den 29.Februar enthält und einfach die Werte zu zählen.
Wenn du allerdings wissen willst, wieviele Tage Anfang bis Ende enthält, musst du logischerweise 1 Tag dazuzählen, da morgen-heute=1, dito datedif(heute;morgen;"d")
Gruß
Rudi

Anzeige
Na geht doch! Kannst Du mit Tadel nicht umgehen?
17.04.2013 19:26:02
JoWE

nicht mit unberechtigtem. owT
17.04.2013 19:33:24
Rudi

AW: nicht mit unberechtigtem. owT
18.04.2013 08:55:29
JoWE
Hallo Rudi,
Klar, Deine Formel war korrekt. Die Frage erwartete aber entweder ein "Ja" weil Datedif die Schaltjahre berücksichtigt oder eine Formel- bzw. eine VBA-Lösung für den gegenteiligen Fall. Deine Antwort ging somit an der Frage vorbei, zumal die Differenzrechnung, wenn auch mit einer anderen Formel, bereits in meinem Posting vorhanden war. Meine Kritik war daher also nicht unberechtigt. Im übrigen gilt doch weltweit: "Es gibt keine dummen Fragen, nur dumme Antworten". Überhaupt nicht zielführend sind aus meinem Empfinden hämische Kommentare die den Fragesteller herabwürdigen.
Daher meine 'Frechheit'. Die werde ich mir gegenüber inakzeptablen Verhaltensweisen auch weiterhn erlauben. Verhindern kann Hans Herber dies nur mit meinem Rauswurf aus dem Forum.
Gruß
Jochen

Anzeige
Anzahl Schaltjahre oder Schalttage ?
17.04.2013 23:45:32
EtoPHG
Hallo Jochen,
Was ist ein Platzhirsch?
Was ist der Unterschied zwischen Schaltjahren und Schalttagen?
Das was du suchst, sind nicht die Anzahl Schaltjahre, sondern wieviel Schalttage (sprich 29. Feb) zwischen 2 Datum liegen.
Das geht einfach mit der Formel:
=DATEDIF(A2;B2;"d")-KÜRZEN(BRTEILJAHRE(A2;B2;1)*365)

Du darfst selbst rausfinden, wieso das so ist, denn der Hirsch hört jetzt auf zu röhren und sein Geist zieht sich aus dem Forum zurück ;-)
Gruess Hansueli

Anzeige
AW: Anzahl Schaltjahre oder Schalttage ?
18.04.2013 09:00:59
Klaus
Hallo Hansueli,
wieso schreibe ich unten so eine Monsterformel, wenn es BRTEILJAHRE gibt?
Hier bei herber fühle ich mich immer wieder, als hätte ich gestern das erste mal von Excel gehört :-)
Grüße,
Klaus M.vdT.

AW: Anzahl Schaltjahre zw. Datum a und Datum B
17.04.2013 18:47:06
Klaus
Hi,
oder notfalls eine VBA-Lösung?
da ich grad kein Zugriff auf Excel hab, kann ich nur einen Ansatz in Pseudocode liefern:
StartDatum = Range("A2")
EndDatum = Range("B2")
erstelle neues Blatt
A1=Startdatum
wiederhole
A2=A1+1 nach unten kopieren
bis EndDatum erreicht
zähle (mit worksheetfunction sumproduct oder countif?) anzahl der 29.FEB
lösche Blatt
gebe Ergebniss aus
Das kann man sicher auch ohne Hilfsblatt erreichen (Werte in Array schreiben?) und desweiteren auch als UDF mit variablen RANGEs für Start-Enddatum schreiben.
Bekommst du daraus den echten Code selbst hin? Sonst musst du bis morgen vormittag warten, oder bis jemand anders hilft.
Grüße,
Klaus M.vdT.

(zählst du mich zu den Platzhirschen mit den Platitüden?)

Anzeige
AW: Danke Klaus! Du rettest mein Weltbild...
17.04.2013 18:57:23
JoWE
Hallo Klaus,
vielen Dank für Deine Hilfestellung.
Ich glaube ich werde es hinbekommen.
Gruß
Jochen
Die allermeisten Platzhirsche sind ja OK

Viel Erfolg erstmal!
17.04.2013 19:03:14
Klaus
Hi Jochen,
wenn dus hinbekommst kannst du hier ja mal posten, und wenns nur fürs Archiv ist. Sonst, wie gesagt, kann ich mich da morgen vormittag mal dransetzen.
Ich hatte zuerst an etwas kompliziertes mit diesen Gausschen Jahresformeln gedacht, aber dann ist mir eingefallen das Schalt-Tage ja IMMER als 29.FEB zu identifizieren sind :-)
Grüße,
Klaus M.vdT.

Anzeige
AW: geht doch einfacher!?
17.04.2013 20:30:43
ing.grohn
Hallo Klaus u.a.a,
man muß doch gar nicht die Werte alle auftragen und den 29.02 suchen.
Ich kann doch mit DateValue("29.02.2013") "testen" obs das Datum gibt (Fehlerabfrage).
msgbox DateValue("29.02.2013") läuft auf einen Fehler, msgbox DateValue("29.02.2012") nicht!
Mit freundlichen Grüßen
Albrecht

Anzeige
AW: geht doch einfacher!?
18.04.2013 02:25:41
Mustafa
Mal als kleine UDF:
Private Function Schalttage(Startdatum As Date, Enddatum As Date) As Long
Dim Jahr1 As Long, Jahr2 As Long
Dim Monat1 As Long, Monat2 As Long
Dim Jahr As Long
Dim Datum As Date
Application.Volatile
Jahr1 = Year(Startdatum)
Jahr2 = Year(Enddatum)
Monat1 = Month(Startdatum)
Monat2 = Month(Enddatum)
If Monat1 > 2 Then Jahr1 = Jahr1 + 1
On Error Resume Next
For Jahr = Jahr1 To Jahr2
If Monat2  "00:00:00" Then Schalttage = Schalttage + 1
Next
End Function
Geht bestimmt auch Schöner :-)
Gruß aus der Domstadt Köln.

Anzeige
AW: Viel Erfolg erstmal!
18.04.2013 08:25:48
JoWE
Hallo Klaus,
ich habe es mit dieser UDF gelöst.
Function zaehlTage(start As Long, ende As Long)
Dim s As Long
For s = start To ende
If IsDate(CDate(s)) Then
zaehlTage = zaehlTage + 1
End If
Next
End Function

Im Ergebnis kommen UDF und Formel =Datedif(start;ende;"D") oder =A2-B2 zum gleichen Ergebnis.
Dank an alle, die sich hier ergebnisorientiert beteiligten.
Gruß
Jochen

Anzeige
AW: Viel Erfolg erstmal!
18.04.2013 08:27:31
Klaus
Hi,
ich hab unten auch eine VBA-freie Lösung gepostet ....
Grüße,
Klaus M.vdT.

Frage zur UDF
18.04.2013 08:29:49
Klaus
Hallo Jochen,
wo ermittelt diese UDF denn die Anzahl der Schalttage? Was macht die überhaupt?
Bei korrekter Eingabe zweier Datümer macht die doch exakt das gleiche wie DateDif? Ich hatte verstanden, du willst die Schalttage EINZELN ausweisen.
Grüße,
Klaus M.vdT.

Anzeige
AW: Frage zur UDF
18.04.2013 08:59:39
JoWE
Hallo Klaus,
nein, da hatte ich mich vielleicht missverständlich ausgedrückt, sorry.
Mir ging es lediglich um die Berücksichtigung der Schaltjahre in der Differenz der Tage.
Danke und Gruß
Jochen

AW: Frage zur UDF
18.04.2013 09:03:51
Klaus
Mir ging es lediglich um die Berücksichtigung der Schaltjahre in der Differenz der Tage
Hi Jowe,
da fall ich ja vor lachen unter den Tisch ;-) dann hätte das ganze FlameWar in diesem Thread nicht stattgefunden, wenn jemand als erste Antwort "ja" gepostet hätte?
Wenn du NICHT die Anzahl der 29.FEB (also der Schaltjahre) suchst, warum hast du dann meinen Pseudo-Code positiv kommentiert? Der hat doch ersichtlicherweise NICHT in die Richtung geführt in die du wolltest!
Naja, fürs Archiv haben wir ja jetzt ein paar schöne Lösungen, um die Anzahl der 29.FEB zu seperieren.
Grüße,
Klaus M.vdT.

Anzeige
per Formel:
18.04.2013 08:21:56
Klaus
Hi,
in A2 steht das kleine Datum, in B2 das große Datum, in C2 die Tage per Datedif. In D2 die Schalttage per Monsterformel:
=C2-(365*MAX(0;(YEAR(B2)-YEAR(A2))-1)+(DATEDIF(DATE(1905;MONTH(A2);DAY(A2));DATE(1905+IF(YEAR(B2)> YEAR(A2);1;0);MONTH(B2);DAY(B2));"d")))
Datei dazu:
https://www.herber.de/bbs/user/84923.xlsx
Grüße,
Klaus M.vdT.

Anzeige
AW: Prima, kann ich auch brauchen oT
18.04.2013 09:09:04
JoWE

Ist aber zu komplizert! ...
18.04.2013 09:10:30
Klaus
... oben hat Hansueli doch eine viel kürzere und elegantere Version vorgestellt! Aber danke für die Rückmeldung :-)
Grüße,
Klaus M.vdT.
;
Anzeige
Anzeige

Infobox / Tutorial

Anzahl der Schaltjahre zwischen zwei Daten in Excel


Schritt-für-Schritt-Anleitung

Um die Anzahl der Schaltjahre zwischen zwei Daten in Excel zu berechnen, kannst du die DATEDIF-Funktion in Kombination mit einer weiteren Formel verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Daten eingeben: Gib dein Startdatum in Zelle A2 und dein Enddatum in Zelle B2 ein. Zum Beispiel:

    A2: 01.04.1973
    B2: 30.09.1978
  2. DATEDIF verwenden: Nutze die folgende Formel, um die Anzahl der Tage zwischen diesen beiden Daten zu berechnen:

    =DATEDIF(A2;B2;"d")
  3. Schalttage berechnen: Um die Schalttage (29. Februar) zu ermitteln, kannst du die folgende Formel verwenden:

    =DATEDIF(A2;B2;"d") - (365 * MAX(0; (YEAR(B2) - YEAR(A2)) - 1) + DATEDIF(DATE(1905; MONTH(A2); DAY(A2)); DATE(1905 + IF(YEAR(B2) > YEAR(A2); 1; 0); MONTH(B2); DAY(B2)); "d"))
  4. Ergebnis analysieren: Die Formel gibt dir die Anzahl der Tage zurück, die durch Schaltjahre hinzugefügt wurden.


Häufige Fehler und Lösungen

  • Fehler bei DATEDIF: Wenn die DATEDIF-Funktion nicht korrekt funktioniert, überprüfe, ob das Startdatum älter als das Enddatum ist. Andernfalls wird ein Fehler angezeigt.

  • Falsche Schalttage zählen: Achte darauf, dass du die richtige Formel verwendest, um Schalttage zu zählen. Eine falsche Implementierung kann zu falschen Ergebnissen führen.


Alternative Methoden

Es gibt verschiedene Wege, um Schaltjahre in Excel zu ermitteln:

  • VBA-Lösung: Du kannst eine benutzerdefinierte Funktion (UDF) in VBA erstellen. Hier ist ein einfacher Code, um Schaltjahre zu ermitteln:

    Function Schalttage(Startdatum As Date, Enddatum As Date) As Long
       Dim Jahr As Long
       Schalttage = 0
       For Jahr = Year(Startdatum) To Year(Enddatum)
           If (Jahr Mod 4 = 0 And Jahr Mod 100 <> 0) Or (Jahr Mod 400 = 0) Then
               Schalttage = Schalttage + 1
           End If
       Next Jahr
    End Function
  • Excel-Formel: Eine alternative Formel, um die Schalttage zu zählen, lautet:

    =SUMPRODUCT((YEAR(ROW(INDIRECT(A2&":"&B2))) - A2) * (MOD(YEAR(ROW(INDIRECT(A2&":"&B2))); 4) = 0) * (MOD(YEAR(ROW(INDIRECT(A2&":"&B2))); 100) <> 0) + (MOD(YEAR(ROW(INDIRECT(A2&":"&B2))); 400) = 0))

Praktische Beispiele

Hier sind einige praktische Beispiele zur Berechnung von Schaltjahren:

  1. Beispiel 1:

    • Startdatum: 01.01.2000
    • Enddatum: 31.12.2020
    • Ergebnis: 5 Schaltjahre (2000, 2004, 2008, 2012, 2016).
  2. Beispiel 2:

    • Startdatum: 01.04.1974
    • Enddatum: 30.09.1978
    • Ergebnis: 1 Schaltjahr (1976).

Tipps für Profis

  • Schaltjahre erkennen: Um in Excel zu überprüfen, ob ein Jahr ein Schaltjahr ist, kannst du die Formel verwenden:

    =IF(OR(AND(MOD(Jahr; 4) = 0; MOD(Jahr; 100) <> 0); MOD(Jahr; 400) = 0); "Ja"; "Nein")
  • Liste der Schaltjahre: Erstelle eine Liste der Schaltjahre in einem bestimmten Zeitraum, um diese schnell zu referenzieren. Du kannst dies durch eine einfache Schleife in VBA tun oder eine Tabelle erstellen.


FAQ: Häufige Fragen

1. Was ist ein Schaltjahr?
Ein Schaltjahr ist ein Jahr, das einen zusätzlichen Tag hat, um die Differenz zwischen dem Kalenderjahr und dem astronomischen Jahr auszugleichen.

2. Wie viele Schaltjahre gibt es zwischen 1970 und 2020?
Es gibt 13 Schaltjahre zwischen 1970 und 2020: 1972, 1976, 1980, 1984, 1988, 1992, 1996, 2000, 2004, 2008, 2012, 2016, 2020.

3. Wie erkenne ich, ob ein Jahr ein Schaltjahr ist?
Ein Jahr ist ein Schaltjahr, wenn es durch 4 teilbar ist, aber nicht durch 100, es sei denn, es ist auch durch 400 teilbar.

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