1900 年 1 月 1 日から何日経過したかを調べようとすると、Excel では PowerShell や Google とは異なる結果が返されるのはなぜですか?

1900 年 1 月 1 日から何日経過したかを調べようとすると、Excel では PowerShell や Google とは異なる結果が返されるのはなぜですか?

同僚が私にこう言いました。「1900 年 1 月 1 日からちょうど 43871 日が経過しました。」今日は 2020 年 2 月 10 日です。

PowerShell で確認したかったのですが、別の結果が返されました。

PS C:\Windows\system32> New-TimeSpan ([datetime]"01.01.1900") (Get-Date)


Days              : 43869
Hours             : 11
Minutes           : 15
Seconds           : 46
Milliseconds      : 304

2 日も差があったので混乱しました。そこで、全能の Google に尋ねてみました。

GoogleDaysPassed検索

ご覧のとおり、Google では 43871 日ではなく 43869 日が経過していると表示されています。

そこで私は友人にどうやって計算したのか尋ねました。彼はExcelでセルを にフォーマットして計算しましたdateonly。そしてそこに と書き込むとint、Excelはそれを日付に変換します。例:

  • 15641なる27.10.1942
  • 19874なる30.05.1954
  • 4386908.02.2020(?)になります
  • 4387110.02.2020(?)になります

Excel は私たちより 2 日先を進んでいるのでしょうか、それともなぜ 1900 年 1 月 1 日以降、実際よりも 2 日多いと考えるのでしょうか。何かが欠けているのでしょうか。

ここに小さな GIF があります (残念ながら、私はドイツ語の Excel を持っているので、ドイツ語です)。

Excel計算Gif

答え1

理由:

まず、あなたの友人と Google の計算方法は異なります。Excel (1900 日付システムを使用) は、1900 年から 1 日だけ余分にあると認識します。

Excel は日付をシリアル番号として保存します。1-Jan-1900=1 および10-Feb-2020-->43871

それで日からExcel では次のようになります43871-- 1>43870

しかし、Excel の計算は正しくありません。

Excel が導入されたとき、Lotus123 が主要なスプレッドシート プログラムでした。

Lotus 123 には、1900 年が閏年であると認識してしまうバグがありました。

競合を考慮して互換性を保つため、Excel にはそのバグが含まれています。ただし、29-Feb-1900存在しない日付であるため、438692 つの日付を減算すると、他の方法では正しく表示されます。

ちなみにExcel VBAでも日付差は正しく計算されます -->43869

答え2

Microsoft Excel は 2 つの異なる日付システムをサポートしています。これらのシステムは 1900 年日付システムと 1904 年日付システムです。

1900年日付システム

1900 日付システムでは、サポートされる最初の日は 1900 年 1 月 1 日です。日付を入力すると、その日付は、1900 年 1 月 1 日を 1 として経過した日数を表すシリアル値に変換されます。たとえば、1998 年 7 月 5 日と入力すると、Excel は日付をシリアル値 35981 に変換します。既定では、Windows 版 Microsoft Excel は 1900 日付システムを使用します。1900 日付システムにより、Excel と、MS-DOS または Microsoft Windows で実行するように設計された Lotus 1-2-3 などの他のスプレッドシート プログラムとの互換性が向上します。

1904年の日付システム

1904 日付システムでは、サポートされる最初の日は 1904 年 1 月 1 日です。日付を入力すると、その日付は、1904 年 1 月 1 日を 0 として、1904 年 1 月 1 日からの経過日数を表すシリアル値に変換されます。たとえば、1998 年 7 月 5 日と入力すると、Excel は日付をシリアル値 34519 に変換します。初期の Macintosh コンピューターの設計上、1904 年 1 月 1 日より前の日付はサポートされていませんでした。この設計は、1900 年が閏年ではなかったことに関連する問題を防ぐためのものでした。以前は、Macintosh 版 Excel は、Macintosh で作成されたブックに対して 1904 日付システムを既定で使用していました。ただし、現在では、Macintosh 版 Excel は 1900 日付システムを既定で使用し、1900 年 1 月 1 日から日付をサポートしています。

日付システムの違い

2 つの日付システムでは開始日が異なるため、同じ日付が各日付システムで異なるシリアル番号で表されます。たとえば、1998 年 7 月 5 日は、次のように 2 つの異なるシリアル番号を持つことができます。

Date system          Serial number of July 5, 1998
1900 date system     35981
1904 date system     34519

ソース: https://docs.microsoft.com/en-us/office/troubleshoot/excel/1900-and-1904-date-system

関連情報