
昨日は2月29日でした。
4年に1度のうるう年ですが、そうでない年もあるって知っていました?
次にうるう年でなくなるのは2100年です。
私が生きている間は関係の無い話です。
その年がうるう年かどうか判断する手順を見ていきます。
この記事の内容
うるう年を判断するエクセルの計算式
プログラミングを学び始めた頃の課題でうるう年を判断するロジックのプログラムを作成しまました。
グレゴリオ暦では以下の条件に全て当てはまる年をうるう年としています。
うるう年の条件
- 4で割り切れる
- 100で割り切れない
- 400で割り切れる
これをプログラムっぽい感じで書くとこんな感じになります。
- 400で割り切れる年、うるう年
- 4で割り切れる、かつ、100で割り切れない年、うるう年
- 1.と2.でない年は、うるう年でない
上記の条件をエクセルの計算式にするとこんな感じです。
※判定する年はA1に入力されているとします
=IF(OR(MOD(A1,400)=0,AND(MOD(A1,4)=0,MOD(A1,100)<>0)),"うるう年", "うるう年でない")
なんか邪魔くさい。
もっとスッキリした計算式は無いでしょうか?
3月1日の前日は何日?
エクセルでうるう年か判定させる方法を考えました。
なるべく単純な式にしたいですね。
そこで思いついたのがこれです。
「3月1日の前日は何日?」
当然の事ですが、うるう年であれば、3月1日の前日は2月29日です。
うるう年でなければ2月28日です。
エクセルには日付を計算する関数が用意されています。
これで判断できそうな気がします。
3月1日の前日をエクセルの計算式で表現すると次のようになります。
※年はA1に入力されているとします
=DAY(DATE(A1,3,1)-1)
この計算式を使うと、うるう年は「29」、うるう年でなければ「28」が返ってきます。
これを使ってうるう年を判定する計算式を作ると以下のようになります。
=IF(DAY(DATE(A1,3,1)-1)=29,"うるう年","うるう年でない")
私としてはスッキリしました。
単純に条件式の中に論理演算が複数あるのが苦手なだけですね。
1年は365日じゃない?
4年毎にあると思っていたうるう年ですが、100年毎に無くなって、400年毎に復活するのは、なぜでしょう?
実は、1年は365日じゃない事が影響しています。
地球が太陽の周りを1周する公転周期は365.2422日です。
それを365日で区切ってしまうと、毎年0.2422日分余ってしまいます。
このため、4年毎に1日増やす「うるう年」があります。
しかし、4年に1日だと増やし過ぎてしまい、4年毎に0.0312日分余ってしまいます。
このため、100年毎にうるう年をやめにします。
100年毎にうるう年をやめると、0.78日を1日にしてしまい、0.22日不足します。
さらにその誤差を補うために、400年毎にうるう年になります。
西暦2000年はうるう年でしたね。
私が生きている間にうるう年が無くなる事を経験できませんでした。
今の若い人たちにはうるう年が無くなる年を経験する可能性がありますね。
それでも、0.88日不足を1日で補うので、400年に0.12日余ってしまいます。
ここまでくると計算する気も失せますが、3200年毎にうるう年を無くさなければいけません。
そこまでは定義されていないようです。
話が変わりますが「うるう秒」というのがあるのをご存知ですか?
1秒増える事があります。
時計で59秒の次は0秒のはずですが、59秒⇒60秒⇒0秒となります。
これもズレを修正する方法です。
しかし詳しい事は難しすぎてよくわかりません。
直近では、2017年1月1日午前9時になる直前に1秒増えたそうです。
うるう年と違って、実感はありませんが、テレビ番組とかは困るでしょうね。
この記事で紹介したエクセルの関数
いきなり、エクセルの関数を紹介してしまいました。
この記事で紹介したエクセル関数は以下の通りです。
- IF
- OR
- AND
- MOD
- DAY
- DATE
どれも基本的な関数ですが、IF関数は使い勝手が良いのでよく使います。
IF関数の使い方は以下の通りです。
=IF(条件式,真の時,負の時)
以下の画面ショットは、セルB1にうるう年の判定をした計算式を入れ、A1に判定したい年を入力した例です。
A1の値がうるう年の時は「うるう年」、うるう年でなければ「うるう年でない」と表示されます。
2019年は「うるう年でない」、2020年は「うるう年」です。
エクセルには500近い関数があります。
その中で、普段よく使う関数は20ぐらいです。
私は、SUM関数やLOOKUP関数をよく使います。
仕事によって使う関数は違ってきますね。
四則演算だけでも結果が求められますが、式が長くなって見にくくなります。
複雑な計算式でも関数を使うとシンプルになります。
計算式が見やすいと間違いも減ります。
間違いを見つけやすい式を書くと仕事の効率が上がります。