見出し画像

エクセルで年間カレンダーを作成する

ここは、小~中劇場規模の舞台公演(主に演劇)で制作やチケット管理業務をしてきた私が培ってきた事を綴るnoteです。
このささやかな知識で制作者の生産性が少しでも向上されれば幸いです。

年間計画などを立てる際などに、エクセルを使用してカレンダー作成する方も多いのではないでしょうか。

以前カレンダーの書式について簡単に説明したこともありますが、

今回は、もう少し便利なカレンダーを作りたいと思います。
使用した関数はウェブ上で検索し、使い勝手のよいものをまとめました。
既出された皆様に感謝です。

作成するのはこのようなシンプルな年間カレンダー。
西暦を入力すると、日にちが自動的に入力され、その年の祝日や閏年かどうかも反映させるようにしました。

※ここで作成された祝祭日など、必ず実際と確認してください。
年によっては日にちが違うこともあります。(オリンピックイヤーもそうでしたね!)


テンプレートを作成する

まずはDATE関数を使用してカレンダーを作ります。
=date(年,月,日)

年月日が入力されているセルをそれぞれ指定する事で日にちが表示されます。
セルでなく固定値でも可能です。
=date(2025,1,12) とすれば、同じ値になります。

今回は、年と月はセルを指定し、日にちは固定値1 とします。
その後の作業に関わるので、年(B1)を絶対参照します。
(数式バーに入力されているB1にカーソルを合わせて[F4]を押すと$で囲まれます。絶対参照がわからない方は、調べてみてください)

次に体裁を整えます。
月は「1月」と表記したく、日にちは「1(水)」のように曜日がわかるようにします。

また、日にちの右隣(B列)は書き込みができるように空欄にしておきます。

月のセル(ここではA2、B2)を結合し、
セルの書式設定(ショートカット [Ctrl]+1)→表示形式→ユーザー定義を開きます。
0"月" と入力すると、数字+月 が表示されます。

同じように日のセル(ここではA3)の書式を d(aaa) とします。

表示形式が変更されました。
1/1(水) のようにしたい時は、m/d(aaa) とするなど書式はお好みで。

次に日にちを31日まで入れていきます。
式は一つ上のセル+1。ここでは =A3+1 となります。

A4に式を入力したら、31日までコピーしていきます。
これで1月ができました。
次に、月の行から31日までを選択し、横へコピーしていき12月まで作成します。

罫線をいれ、列幅を調整します。
また、小の月(30日までしかない月)は最後の行が次の月の一日が記載されてしまうので、セルから数式を削除して塗りつぶしてしまいます。
2月も30,31日はないので、同じように塗りつぶします。

うるう年の処理をする

次に、うるう年でない年は2/29のセル(ここではC列D列31)を自動的に塗りつぶすようにします。
閏年かどうかを判断する式はこちら。

=IF(OR(MOD(「年が入力されているセル」,400)=0,AND(MOD(「年が入力されているセル」,4)=0,MOD(「年が入力されているセル」,100)<>0)),「2/28が入力されているセル」+1,"")

「もし閏年だったら2/29の値を表示し、閏年でなかったら空白にする」
という式です。その年が4で割れるかどうかといった式ですが、そのままコピーしてカギかっこの部分「」だけ変更してください。

C31には下記の式をいれます。=IF(OR(MOD(B1,400)=0,AND(MOD(B1,4)=0,MOD(B1,100)<>0)),C30+1,"")

2025年は閏年ではないので、空白になりました。
ちなみに2024年にすると、

きちんと表示されました!
あとは条件付き書式で、「C31が空白の場合はC31,D31を塗りつぶす」ようにします。

C31,D31を選択し、
[条件付き書式]→[新しいルール]を開きます。

ルールの種類[数式を使用して、書式設定するセルを決定]を選択し、
=IF($C$31="",TRUE)
と入力します。
「もしC31が空白だったら」設定した書式となります。

[書式]→[塗りつぶし]を選択したら、好きな色を設定します。

塗りつぶされました!
閏年(2024年)にすると、

29日がきちんと表示されています!

これで、年を入力するだけで、簡単に作成できるカレンダーの完成です!

土日を自動で色付けする

モノクロプリントでしたらこのままでもよいですが、せっかくだから土日祝祭日がわかるように自動で色付けしたいですね。
上と同じく条件付き書式を使用して、日曜日を赤文字、土曜日を青文字にしてみます。

カレンダーを範囲選択したら、条件付き書式の数式を

=weekday(a3)=1

とします。a3は範囲の起点。1は日曜日を表します。
1=日  2=月  3=火  4=水  5=木  6=金  7=土

[書式]→[フォント]で、赤文字に設定。
同じように土曜日も書式設定します。

文字に色がつきました!

その年の祝日を抽出する

まずはその年の祝日を確認しないといけません。
毎年同じ日にちならよいですが、日にちが変動する祝日もあります。
それぞれ、関数を使用して割り出していきます。
面倒だなと思いますが、最後にまとめておきますのでダウンロードして使ってください!

1:日にちの決まっている祝日

これは固定値なのでdate関数だけを使用します。

元日(1月1日)の場合は、
=date(「年が入力されているセル」,1,1)
文化の日(11月3日)は、
=date(「年が入力されているセル」,11,3)
となります。

2:曜日の決まっている祝日

dateとweekday関数を使用します。〇には、第2月曜の場合は14、第3月曜の場合は21が入ります。
=DATE(年,月,〇-WEEKDAY(DATE(年,月,0),3))

成人の日 (1月の第2月曜日)の場合は、
=DATE(「年が入力されているセル」,1,14-WEEKDAY(DATE(「年が入力されているセル」,1,0),3))

海の日 (7月の第3月曜日)の場合は、
=DATE(「年が入力されているセル」,7,21-WEEKDAY(DATE(「年が入力されているセル」,7,0),3))
となります。

3:年によって日にちの異なる祝日

春分秋分の日は、それぞれ年によって日にちが異なります。
国立天文台の数式?らしいので、考えずに迷わずコピペしてください。

春分の日
=DATE(「年が入力されているセル」,3,INT(20.8431+0.242194*(「年が入力されているセル」-1980)-INT((「年が入力されているセル」-1980)/4)))

秋分の日
=DATE(「年が入力されているセル」,9,INT(23.2488+0.242194*(「年が入力されているセル」-1980)-INT((「年が入力されているセル」-1980)/4)))

4:国民の休日(休日に挟まれた平日)

秋分の日が水曜日の年だけ、敬老の日と挟まれた火曜日が休日となります。
これも考えずコピペしてください。休日にならない日は空白となります。
=IF(WEEKDAY(TEXT(「秋分の日が入力されているセル」,"YYYY/MM/DD"),1)=4,「秋分の日が入力されているセル」-1,"")

5:振替休日

指定した休日が日曜日の場合、次の日を返します。休日にならない日は空白となります。
=IF(WEEKDAY(「休日が入力されているセル」)=1,「休日が入力されているセル」+1,"")

休日が連続するゴールデンウィークの5/3~5は、いづれかが日曜日の場合、5月6日が休日となります。休日にならない日は空白となります。
=IF(OR(WEEKDAY(「憲法記念日が入力されているセル」)=1,WEEKDAY(「みどりの日が入力されているセル」)=1,WEEKDAY(「こどもの日が入力されているセル」)=1),「こどもの日が入力されているセル」+1,"")


上記の数式を使用して、その年の祝日を表ができました!

長々と説明しましたが、祝日の表をダウンロードできるようにしましたので、必要でしたらご利用ください。

祝日を色付けする

ここまできたらあとちょっと!
前述している条件付き書式で、祝日の日付を赤文字にします。

カレンダーの範囲を選択し、条件付き書式、
数式は、
=COUNTIF($AA$3:$AB$20,A3)

$AA$3:$AB$20は、祝日の日付が入ったセル(上記表の赤い囲み)、
A3は、カレンダーの範囲の起点です。

これで、土日祝日を色付けしたカレンダーができました!

シートを複製して使用する

なかなか素敵なカレンダーができました!
これを毎年使用したいと思ったとき、ワークシートをコピーしていけば、何年も使えますよね。
シート名に西暦を入れると自動的にその年のカレンダーができれば、さらに使いやすいのではないでしょうか。

先ほどまで年を手入力していましたが、ここにワークシート名を参照する関数を入力します。

=RIGHT(CELL("filename",A1),4)

まずはcell関数でシート名を取り出します。シート名は長いので最後に記載されるシート名の西暦の文字数(4文字)をright関数で取り出します。

これで年ごとにシートを分けて簡単にカレンダーを作成することができます!

数式が崩れることを懸念される場合は、その年のカレンダーを作ったら、

[Ctrl]+a 全範囲選択
[Ctrl]+c コピー
[Ctrl]+[shift]+v 値のみ貼り付け

の順番に操作すれば、数式が値に変換されるので、その後セルの移動や追加をしても日にちが崩れる心配がなくなります。

いかがでしょうか!
色々と汎用性のあるカレンダーが作成できたのではないでしょうか。(と自画自賛)



いいなと思ったら応援しよう!