Excelが大好きだ!

Excel大好き経理マンがExcelの事を書き綴っていきます。


スポンサードリンク

日付をコピペすると違う日付になってしまう時の対応

先日こんな事例に遭遇しました。

f:id:ExcelLover:20180908225644j:plain

・あるブックにDate関数で作られた日付がある。

・その日付をコピーして別のブックに値で貼り付け。

・値貼付けした後で書式を「日付」に変更した。

・元のブックの日付と異なる日付が表示された。

久しぶりに???てなりましたよ。

関数の内容がおかしいのかと疑ってトレースしていってもあってるように見える。

しばらく試行錯誤してるうちにあるオプション設定のことを思い出しました。

1904年から計算する

またまた豪快なネタバレでスタートですが、

Excelには「1904年から計算する」というオプションがあります。

元のブックでこの設定がされていたため今回の症状が発生しました。

このオプションは一体何のためにあるのでしょうか?

Macintoshとの互換性

Microsoftのサポートサイトに下記のような記述があります。

Microsoft Excel for Macintosh は、デフォルトでは 1904 年を基準とした日付方式を使用しています。初期の Macintosh コンピュータの設計により、1904 年 1 月 1 日より前の日付はサポートされていませんでした。この設計は、1900 年がうるう年ではないことに関連する問題を防止することが目的でした。1900 年を基準とした日付方式に切り替えると、Excel for Macintosh で 1900 年 1 月 1 日からの日付がサポートされます。

ではこのオプションを設定するとどのような変化があるのでしょうか。

それについても同じくMicrosoftサポートサイトに記述がありました。

1900 年を基準とした日付方式では、サポートされる最初の日付は 1900 年 1 月 1 日です。日付を入力すると、その日付は 1900 年 1 月 1 日からの経過日数を表すシリアル値に変換されます。たとえば、1998 年 7 月 5 日と入力すると、その日付は Excel によってシリアル値 35981 に変換されます。

・・・

1904 年を基準とした日付方式では、サポートされる最初の日付は 1904 年 1 月 1 日です。日付を入力すると、その日付は 1904 年 1 月 1 日からの経過日数を表すシリアル値に変換されます。たとえば、1998 年 7 月 5 日と入力すると、その日付は Excel によってシリアル値 34519 に変換されます。

・・・

2 つの日付方式の日付の差は 1,462 日です。つまり、1900 年を基準とした日付方式の日付のシリアル値は、1904 年を基準とした日付方式の同じ日付のシリアル値よりも常に 1,462 日分大きくなります。1,462 日は、うるう年を 1 回含む 4 年と 1 日に等しくなります。

Microsoftのサイトにしては珍しくわかりやすく求めている完璧な答えが記載されていることに驚いています。

今回僕が遭遇した例で見ていくと コピー元のブック→1904年設定 2018年8月29日の表示で シリアル値は41879

コピー先のブック→1900年設定 上記のシリアル値を貼り付け それを日付の書式を設定。 Microsoftのサイトの解説の通り、 元のブックより1,462日前の日付として認識されますので、2014年8月28日として表示。

まとめ

この元ブックを制作した人が何の意図があって、1904年設定にしたのか今となっては謎ですが。 (昔はMacintoshがあったのか )

なかなかお目にかかれない症状に出くわしたのは純粋に面白かったですが。

Microsoft サポート
Excel の 1900 年を基準とした日付方式と 1904 年を基準とした日付方式の違いについて