はじめに
エクセルにはうるう年のルールから外れているはずの1900年2月29日という日付がシリアル値60として存在しています。
筆者はこのことを「2021年9月5日のシリアル値が44444だ!」とTwitterで話題にしている時に知りました。
同時に、エクセルには曜日を1 (日曜) から 7 (土曜) までの範囲の整数で返すWEEKDAY関数がありますが、そのあたりどうなってるんだろう!?と疑問に思いました。
この記事では、架空の日付1900年2月29日と曜日の仕様について調べた結果を報告します!
1900年2月29日より前の曜日は間違っている
![シノ](https://aka-aca.com/wp-content/uploads/2021/09/05fee9487e3f07a4ba35214d52d5c496.png)
結果から言いますと、
エクセルのWEEKDAY関数は1900年2月29より過去の日付の曜日は実際よりも1つ前にずれた曜日を返す仕様になっています
![](https://aka-aca.com/wp-content/uploads/2021/11/Tips007-01-1024x356.png)
![キュウ](https://aka-aca.com/wp-content/uploads/2021/09/8b5fda063dd94491f28401d0c8298c45.png)
1900年2月28日の曜日がGoogle検索の結果と異なっていますね!
![シノ](https://aka-aca.com/wp-content/uploads/2021/09/2dcd16dc9aa8d69405b3dcb8170cc7ba.png)
その代わり1900年3月1日は正しくて、
それ以降はずっと正しい曜日が続く仕様になっているようです
![キュウ](https://aka-aca.com/wp-content/uploads/2021/08/d3d663d3de78b3ea928c55252b63672c.png)
たしかに、1900年1月1日からの60日間だけと言われたら
他のメリットと比較してズレたままにするかもしれませんね
![シノ](https://aka-aca.com/wp-content/uploads/2021/09/2dcd16dc9aa8d69405b3dcb8170cc7ba.png)
本当、難しいところですよね
そして補正ですが、シリアル値が60より小さければ1を足した日付の曜日が返るようにすれば正しい曜日を表示することができますよ
図の例では+(B3<60)の部分が補正になっていて、60より小さければ1(TRUE)、大きければ0(FALSE)が加算されます
![キュウ](https://aka-aca.com/wp-content/uploads/2021/08/c430a42a956415bde8b280b08bd7a12d.png)
なるほど!
しかし、1900年の曜日を扱うことって…
![シノ](https://aka-aca.com/wp-content/uploads/2021/09/2dcd16dc9aa8d69405b3dcb8170cc7ba.png)
ほとんど無いでしょうね
なので今回は役立つテクニックというより豆知識といったところです
補足 1904年から計算する設定について
![](https://aka-aca.com/wp-content/uploads/2021/11/Tips007-02.png)
![シノ](https://aka-aca.com/wp-content/uploads/2021/09/05fee9487e3f07a4ba35214d52d5c496.png)
ちなみに、Excelの設定で日付を1900年からではなく
1904年からの計算に変更する設定ができます
![キュウ](https://aka-aca.com/wp-content/uploads/2021/08/bb293d12cfdd11fc4ba43458534c99d0.png)
こ、これは…
![シノ](https://aka-aca.com/wp-content/uploads/2021/09/2dcd16dc9aa8d69405b3dcb8170cc7ba.png)
たしかに1904年からの計算であれば…
1900年2月29日前の曜日問題は発生しませんよね
おわりに
実在しない幻の日付…なんか興味をひかれるものがありました。
うるう年のルールってかなり面倒なので、そのせいで生まれた仕様のようです。
4で割り切れる年はうるう年です、でも100で割り切れる年は除外します、ただし400で割り切れる年はうるう年とします…に当てはめると1900年はうるう年ではないそうです。
Excelでの実装についてはLotus 1-2-3との互換性ということもあるようです。
Excel話をする上でよく登場しますね、 Lotus 1-2-3…。
【外部リンク】|Microsoftサポート WEEKDAY関数
今回はふと湧いた疑問について追求してみました。
最後までお付き合い頂き、ありがとうございました!
当ブログはエクセル関数の擬人化キャラクター記事をメインコンテンツとしています!
よろしければこちらの記事もどうぞ~!
コメント