エクセルで閏年対応の万年カレンダーを作ってみる

Pocket
LINEで送る

今年は閏年で、本日は2月29日です。
通常、一年は365日ですが、地球が太陽の周りを一周する時間は、約365日5時間48分46秒だそうで、365日より、ちょいと長いわけです。この誤差を修正するのが、4年に1回の閏年で、今年のように2月が29日あります。

ところが、これでも、誤差があるので、100年に1回、閏年を止めています。それでも、さらに誤差が出るので、今度は400年に1回は閏年を止めずに閏年にしています。ここまで修正しても、3000年で1日の誤差が出るそうです。でも、今現在の暦では、3000年に1度の事なので、そこは無視しているそうです。

つまり、西暦が4で割り切れる年は閏年で、100で割り切れる年は閏年ではなく、400で割り切れる年は閏年ってことになります。

このロジックで、エクセルで閏年判定をやろうとすると、ちょっとめんどくさいんですけど、エクセルでは、簡単な関数を使って閏年判定ができちゃいます。(^^)

やり方は、色々とあると思いますけど、例えば、下のように単純に判定ができます。

エクセル閏年判定

上の図のC3セルには図のように以下の関数が入っています。

=IF(DAY(DATE(B3,2,29))=29,”閏年”,”平年”)

DATE関数は日付のシリアル値を返す関数ですから、DATE(B3,2,29)で、B3セルの年の2月29日のシリアル値を取得します。そのシリアル値をDAY関数で日にします。これが、閏年であれば、そのまま29が返りますが、平年だと3月1日になり、1が返ってきます。それをIF関数で囲って、29であれば「閏年」を返し、29でなければ「平年」を返すという単純な仕組みになってます。(^^;

 

今回は、このDAY関数とDATE関数を使って何年の何月でも表示できる万年カレンダーを作ってみたいと思います。(^^)

エクセル万年カレンダー

上の図ですと、B3セルに年、D3セルに月を入力すると、下に、そのカレンダーが表示されるようになっています。

そして、B5セルの1日の部分の数式は以下のものが入っています。

=DAY(DATE($B$3,$D$3,ROW()-4))

まず、DATE($B$3,$D$3,ROW()-4)ですが、B3セルの年のD3セルの月のROW()-4の日のシリアル値を返すという意味です。

ここで、ROW()は行番号を返す関数なんですが、この場合、1日のセルがB5なので、4を引いてあるわけです。

参照セルのB3とD3はオートフィルで31日分、コピーする関係上、$B$3、$D$3と絶対参照にしてあります。

最後はDAY関数で囲って、シリアル値を日に変換しています。

あとは、これをオートフィルで31日分、コピーして、何年の何月にも対応した日付部分の完成です。

曜日部分も、日付と全く同じ関数を入れて、セルの書式設定で、ユーザー定義で「aaa」にしてやれば表示はされるんですけど、今回は、条件付書式設定を使って、土曜日を青、日曜日を赤で表示したので、TEXT関数を使って、文字列に変換をしてみました。

=TEXT(DATE($B$3,$D$3,ROW()-4),”aaa”)

日付の関数をTEXT関数で囲って、表示形式を「aaa」と曜日の表示にしてあるだけです。
あとは、条件付書式設定で、土曜日と日曜日にフォントの色を指定できます。

これで、出来上がりなんですが、下の図のように、今月であれば、30、31日が入る欄に次の月の1、2日が表示されてしまいます。

uru20160229c

まあ、このままでも、いいんですけど、表示させたくない場合は、IF関数で、29、30、31日の欄を以下のように囲ってやれば表示されなくなりますよね。

=IF(DAY(DATE($B$3,$D$3,ROW()-4))=29,29,””)
=IF(DAY(DATE($B$3,$D$3,ROW()-4))=30,30,””)
=IF(DAY(DATE($B$3,$D$3,ROW()-4))=31,31,””)

同じく、曜日の欄も、以下のようにIF関数で囲みます。

=IF(B33=””,””,TEXT(DATE($B$3,$D$3,ROW()-4),”aaa”))
=IF(B34=””,””,TEXT(DATE($B$3,$D$3,ROW()-4),”aaa”))
=IF(B35=””,””,TEXT(DATE($B$3,$D$3,ROW()-4),”aaa”))

これで、その月がだけが表示されるようになりました。

試しに2020年の2月を表示させてみると、29日まで表示され、2100年の2月を表示すると、28日まで、2400年2月を表示させると、29日までと、ちゃんと100で割り切れる年や400で割り切れる年にも対応しています。(^^)

いちおう、ダウンロードもできるようにしておきました。(^^)

 

 

Pocket
LINEで送る

YASUKE YAMURA

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

ツールバーへスキップ