Warum sind die Excel-Wochentage für 1900 falsch?

Warum sind die Excel-Wochentage für 1900 falsch?

Diese Frage basiert auf den Beobachtungen vonAbonnierenInseine AntwortAnWie bekomme ich den Tagesnamen in eine Zelle in Excel?

Wenn A1 den Wert 2009-08-01 hat, dann gilt:

  • =WEEKDAY(A1)wird erhalten7
  • =TEXT(7, "dddd")wird erhaltenSaturday
  • =TEXT(7,"dddd, yyyy-mm-dd")wird erhaltenSaturday, 1900-01-07
  • =TEXT(1,"dddd, yyyy-mm-dd")wird erhaltenSunday, 1900-01-01
  • =TEXT("1900-01-01","dddd, yyyy-mm-dd")wird auch erhaltenSunday, 1900-01-01

Die letzten beiden sind falsch: Der 1. Januar 1900 ist eigentlich ein Montag.
Verschiedene Quellen scheinen das zu bestätigen:

Was übersehe ich? Warum macht Excel das falsch?

Antwort1

Wie in MicrosoftKB 214058:

Wochentage vor dem 1. März 1900 sind in Excel falsch

MEHR INFORMATIONEN

Bei der ursprünglichen Erstellung des Datumssystems in Microsoft Excel wurde darauf geachtet, dass es vollständig mit den Datumssystemen anderer Tabellenkalkulationsprogramme kompatibel ist.

In diesem Datumssystem wird das Jahr 1900 jedoch fälschlicherweise als Schaltjahr interpretiert. Da es im Jahr 1900 keinen 29. Februar („Schalttag“) gibt, wird der Wochentag für jedes Datum vor dem 1. März 1900 (dem Tag nach dem „Schalttag“) nicht korrekt berechnet.

Die "anderen Tabellenkalkulationsprogramme" beziehen sich aufLotus 1-2-3, die damals recht populär war, und ging fälschlicherweise davon aus, dass das Jahr 1900 ein Schaltjahr war. Dies wird noch ausführlicher erklärt inKB 214326:

Excel 2000 geht fälschlicherweise davon aus, dass das Jahr 1900 ein Schaltjahr ist

MEHR INFORMATIONEN

Als Lotus 1-2-3 erstmals veröffentlicht wurde, ging das Programm davon aus, dass das Jahr 1900 ein Schaltjahr war, obwohl es eigentlich kein Schaltjahr war. Dies erleichterte dem Programm die Verarbeitung von Schaltjahren und verursachte bei fast allen Datumsberechnungen in Lotus 1-2-3 keine Probleme.

Als Microsoft Multiplan und Microsoft Excel veröffentlicht wurden, gingen sie ebenfalls davon aus, dass 1900 ein Schaltjahr war. Diese Annahme ermöglichte es Microsoft Multiplan und Microsoft Excel, dasselbe serielle Datumssystem wie Lotus 1-2-3 zu verwenden und eine größere Kompatibilität mit Lotus 1-2-3 bereitzustellen. Die Behandlung von 1900 als Schaltjahr erleichterte es Benutzern außerdem, Arbeitsblätter von einem Programm in das andere zu verschieben.

Obwohl es technisch möglich ist, dieses Verhalten zu korrigieren, sodass aktuelle Versionen von Microsoft Excel nicht davon ausgehen, dass das Jahr 1900 ein Schaltjahr ist, überwiegen die Nachteile dieser Maßnahme die Vorteile.

Wenn dieses Verhalten korrigiert werden müsste, würden zahlreiche Probleme auftreten, unter anderem die folgenden:

  • Fast alle Daten in aktuellen Microsoft Excel-Arbeitsblättern und anderen Dokumenten würden um einen Tag verkürzt. Das Korrigieren dieser Verschiebung würde viel Zeit und Aufwand erfordern, insbesondere bei Formeln, die Daten verwenden.
  • Einige Funktionen, beispielsweise die Funktion „WOCHENTAG“, geben andere Werte zurück. Dies kann dazu führen, dass Formeln in Arbeitsblättern nicht richtig funktionieren.
  • Durch die Korrektur dieses Verhaltens würde die serielle Datumskompatibilität zwischen Microsoft Excel und anderen Programmen, die Datumsangaben verwenden, unterbrochen.

Wenn das Verhalten nicht korrigiert wird, tritt nur ein Problem auf:

  • Die Funktion WEEKDAY gibt für Daten vor dem 1. März 1900 falsche Werte zurück. Da die meisten Benutzer keine Daten vor dem 1. März 1900 verwenden, tritt dieses Problem selten auf.

Antwort2

Hier ist der von Joel selbst erklärte Grund:Meine erste BillG-Rezension

Basic verwendet als Epoche den 31. Dezember 1899 statt dem 1. Januar 1900, aber aus irgendeinem Grund war das heutige Datum in Excel dasselbe wie in Basic.

Hä?

Ich suchte einen Excel-Entwickler, der alt genug war, um sich an den Grund zu erinnern. Ed Fries schien die Antwort zu kennen.

„Oh“, sagte er mir. „Schauen Sie sich den 28. Februar 1900 an.“

„Es ist 59“, sagte ich.

„Versuchen Sie es jetzt am 1. März.“

"Es ist 61!"

„Was ist mit 60 passiert?“, fragte Ed.

„Der 29. Februar 1900 war ein Schaltjahr! Er ist durch 4 teilbar!“

„Gute Vermutung, aber nichts Wahres“, sagte Ed und ließ mich eine Weile grübeln.

Ups. Ich habe ein bisschen nachgeforscht. Jahre, die durch 100 teilbar sind, sind keine Schaltjahre, es sei denn, sie sind auch durch 400 teilbar.

1900 war kein Schaltjahr.

„Das ist ein Fehler in Excel!“, rief ich.

"Nun, nicht wirklich", sagte Ed. "Wir mussten es so machen, weil wir Lotus 123-Arbeitsblätter importieren müssen."

„Also ist es ein Fehler in Lotus 123?“

"Ja, aber wahrscheinlich absichtlich. Lotus musste 640 KB unterbringen. Das ist nicht viel Speicher. Wenn man 1900 außer Acht lässt, kann man herausfinden, ob ein bestimmtes Jahr ein Schaltjahr ist, indem man einfach nachschaut, ob die beiden ganz rechts stehenden Bits Null sind. Das ist wirklich schnell und einfach. Die Lotus-Leute dachten wahrscheinlich, dass es nicht schlimm wäre, wenn sie sich bei diesen zwei Monaten in der Vergangenheit irrten.

Antwort3

Eine Lösung hierfür besteht darin, dem Jahr 400 Jahre hinzuzufügen, um den Wochentag mit der folgenden Formel zu berechnen:

=WEEKDAY(DATE(A4+400,B4,C4),1)

Die folgenden Variablen

A4 = 1834
B4 = 12
C4 = 14

würde (Sonntag) zurückgeben 1, was dasselbe ist wie für den 14. Dezember 2234.
Dies funktioniert nicht mehr für Daten vor 1753dem Jahr nach der Umstellung auf den Gregorianischen Kalender.

verwandte Informationen