Excel Tips【その6】日付関数1900年問題

当ブログで2016年にシリーズ化した題名で、日頃Excelを使っていて難題に出くわした時にどう処理したか、後々になって思い出せるようExcel Tipsとして記録してきました。2016年の同年に【その5】まで投稿し今日まで間があきましたが、今回は日付関数での1900年問題です。Excelの日付関数は日付を元に期間指定したり年齢を求めたり色々多機能な使い方ができます。しかしながら現状では1900/1/1を1と定義して1日づつ数値の1でインクリメントされており、1900年以前は日付関数を使うとエラーが出ます。例として、終戦日生まれの人の年齢はDATEDIFの日付関数で、以下3行とも同じ答えが得られます。ところが1900年以前の坂本龍馬の生年月日と暗殺された日付を入力するとエラーとなります。

エラーを回避するための対策として、400年をそれぞれの年の数値に加えると良いようで、坂本龍馬の例では生涯は31年であったことになります。年齢は期間の差分を年で表示しているので、それぞれ400年を加えても答えは同じとなると言う理屈ですね。この方法を、猛暑日のデータ集計の一部に役立てました。地域での気温観測の過去年数を求めるのに以下の如く利用しました。

観測年数を求める関数は以下で、M7で示す列は開始日の年、N7は月、O7は日付です。

気温測定開始日を前例の生年月日と同じ如くにして今日までのTODAY()で年齢を求める方式ですが、観測年数は年齢の数え年と同じように最後に1を加えています。ただ、区切りとして測定開始日の月が8月よりも小さい時を数え年とし、8月以降は満年齢のようにするため、上記の計算式では条件(8月)により、青字あるいはピンク字の計算結果になるよう切り分けました。穂高と横浜は満年齢と同じです。
ところで、今回の日付関数では加える年を400年とした理由が他にあります。年月日に400年を加えてもその曜日は変わらないのだそうです。(なぜかはまだ理解していません)例えば、

坂本龍馬は1867/12/10に暗殺されましたが、その日は何曜日であったかをExcelの日付関数(上記の青字)で求めると、本日は月曜で正解ですが1900年以前ではエラーとなります。しかし400年を加えた2267/12/10は火曜日で、くしくも別途にサイトで調べた左の四角内の表示の通り火曜日でした。何とも不思議なExcel 400年問題でした。

安曇野の風 について

安曇野に巣くう極楽トンボ
カテゴリー: IT/PC/HP関連 パーマリンク

コメントを残す

メールアドレスが公開されることはありません。