水曜日, 8月 03, 2022

Excelで1900年問題をサクッと解決

質問がありましたので・・・
Excelで1900年以前の西暦を計算に使うことが出来ません。

例えばこんな感じのデータを[A1:C6]に作成したいと思えば・・・

[B1]は[=TODAY()]とし、それ以外は1月1日と入力し・・・

ユーザー定義で[B2:B6]のセルを選択し、日付表記を[yyyy]とすると・・・

1868年だけ無視されます。これはExcelが1900年1月1日を基準にしているからです。

[C2]に
=DATEDIF(B2,B$1,"Y")+1
と入力してもエラーとなってしまいます。
※=DATEDIF(B3,B$2,"Y")
こ計算結果は差分となり1日足りなくなるので[+1]としています。
ちなみに[B2]のセルを[1868]として[yyyy]にすると[1905]に成ってしまうので要注意。
最終的に[B2]は標準設定の[1868]でダミーとし、
[C2]のセルには
=DATEDIF(B2,B$1,"Y")+1
と入力。
[C3]は
=DATEDIF(B3,B$1,"Y")+1
とし、[C4:C6]はフィルで完了です。
もっとも、頻度の高い処理をする場合はマクロを組んだ方が良いと思います。
と、ここで重大なミスに気がつきました。
明治の値が変です。
[C2]のセルには
=DATEDIF(1,B$1,"Y")+32
と入力。
[C3]は変更せずに
=DATEDIF(B3,B$1,"Y")+1
とし、[C4:C6]はフィルで完了です。

結局1900年以前はアウトなので1900が「1」なので「1」とし、差分の32を計算結果に足すことで逃げ切りました。「+32+1」としないのは、1からのスタートだからです。

こうしてみると、
令和7年は昭和100年
なんですね〜。