Hallo,
für Microsoft kann ich noch einen draufsetzen:
In VBA war im Gegensatz zu Excel (zumindest bei Office 1997) 1900 kein Schaltjahr. Wozu sollte man auch konsequent sein...

Bei Calc ist's hingegen ganz einfach: Es gibt die Funktion ISTSCHALTJAHR()
Gruß
Ralf

Am Thu, 10 Mar 2011 22:59:27 +0100 schrieb Ernst Hügli <[email protected]>:

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


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

Antwort per Email an