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

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

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

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

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.

Anzeige
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.

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

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.

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

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige
Archiv - Verwandte Themen
Forumthread
Beiträge