Hallo

Am 10.03.2011 22:01, schrieb Matthias Müller:
Am Sonntag, 6. März 2011 schrieb [email protected]:
Hallo !
iJahr = 2011
iRest = REST(iJahr;4)
zum Berechnen des Schaltjahres.
Das ist falsch.
Die Rechnung stimmt zwar, aber zB auch für das Jahr 1900, das ist/war
aber definitiv kein Schaltjahr, weil 1900 mod 400 als Ergebnis nicht 0
sondern 300 liefert. Ein Jahrhundert ist nur dann ein Schaltjahr
wenn "Jahr mod 400 = 0" ist.

Sorry für die Klugscch... :-)
Nun, der Verfasser hat einen prominenten "Mitprogrammierer", der auf den gleichen Denkfehler reingefallen ist: Microsoft's Excel liefert wunderbar einen 29.02.1900, fasst das Jahr 1900 also als Schaltjahr auf, obschon es so nicht stattgefunden hat! Darum haben OOo Calc (das sich an die historisch korrekten Daten hält) und Excel nicht das gleiche Startdatum: man gebe sowohl in Calc wie in Excel 0 in eine Zelle ein und formatiere sie dann als Datum (TT.MM.JJJJ). Calc liefert 30.12.1899, Excel hingegen 31.12.1899 - denn das war die ursprüngliche Absicht von Microsoft: das Datum 31.12.1899 (willkürlich) als Datum 0 einzusetzen, von dem aus fortgezählt wird. Gibt man z.B. das heutige Datum ein (10.03.2011) und formatiert dann als reine Zahl, erhält man 40612 - denn so viele Tage sind seit dem Startdatum vergangen! Da sich OOo an die historisch korrekte Zählung hält, aber aus Kompatibilitätsgründen aktuell die gleichen Daten wie Excel liefern will, musste man das Startdatum korrigieren.

Will man korrekt darauf testen, ob ein Jahr ein Schaltjahr ist, muss man wie folgt vorgehen (Lösung in Calc mit Calc-Funktionen):

1. Testen, ob das Jahr restlos durch 400 teilbar ist; wenn ja, handelt es sich um ein Schaltjahr. Wenn nein: 2. Testen, ob das Jahr restlos durch 100 teilbar ist; wenn ja, dann ist es kein Schaltjahr, ansonsten 3. Testen, ob das Jahr restlos durch 4 teilbar ist; wenn ja, dann ist es ein Schaltjahr, sonst nicht.

Befindet sich etwa die Jahrzahl in Zelle A3, dann kann man zur Vereinfachung in Zelle B3 den Test auf Rest bei Teilbarkeit durch 100 durchführen (vereinfacht etwas die Schreibweise). Dann steht in der Zelle, in der man das Ergebnis haben will (z.B. eine 1 für Schaltjahr, eine 0 für kein Schaltjahr), die Formel

=WENN(REST(A3;400)=0;1;WENN(UND(NICHT(B3);REST(A3;4)=0);1;0))

Schaltjahre sind also etwas verkürzt Jahre, die entweder restlos durch 400 oder aber restlos durch 4, aber nicht restlos durch 100 teilbar sind.

Hoffe, damit etwas zur Ver- bzw. besser Entwirrung beigetragen zu haben.

Freundlich grüsst

Ernst


--
-----------------------------------------------------------------
To unsubscribe send email to [email protected]
For additional commands send email to [email protected]
with Subject: help

<<attachment: ernst_huegli.vcf>>

Antwort per Email an