年月を指定してつくるExcelのカレンダー

この記事には広告を含む場合があります。

記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。

こんにちは。かわべです。

手元にあるカレンダーが使いにくいときは、Excelでカレンダーを作ってみるのも良いでしょう。

テンプレートも用意されていますが、オリジナルのカレンダーを作ってみました。今日は、Excelでオリジナルのカレンダーを作るときの私なりの工夫をまとめてみました。

(使用Excel;2010、2013)


年月を指定してつくるExcelのカレンダー

Excelでは、セルに数字を1つ1つ入力してカレンダーを作成することもできます。この方法でも1ヶ月分のカレンダーであれば作業手数もそれほどではありませんが、1年分となると手間に感じます。

そこで「年」と「月」を入力して、その入力した年月のカレンダーが表示されるようにしました。

カレンダーは日曜日始まりで、とりあえず数字だけを表示するものにしました。

 

Excelでカレンダーをつくる

祝日データのダウンロード

Excelでカレンダーを作成する場合、「国民の祝日」をどのように表示するかがポイントになります。

そこで、私は国民の祝日を確認するため、内閣府のサイトで祝日のcsvファイルを公開しているのでダウンロードしました。

LINK 内閣府;「国民の祝日」について平成28年(2016年)から平成30年(2018年)国民の祝日(csv形式:2KB)

ダウンロードした祝日のデータはカレンダーファイルに取り込みました。(祝日を確認するだけならcsvファイルのまま保存しておいても問題ないかと思います。

年月の入力セルの設定

最初に作成するカレンダーの「年」と「月」を入力するセルを決めます。

私はA2セルに「年」、B2セルに「月」を入力するようにしました。また、B2セルには入力規則で「1」から「12」以外の数値を入力した場合にエラーメッセージを表示するようにしました。

たとえば「13」を入力すると、次のようなメッセージが表示されます。

[aside type=”yellow”]入力規則の機能を使わず「13」以上の数値を入力できるようにした場合は、DATE関数によって、入力年の1月からカウントした月を表示します。たとえば「2017」年の「15」月であれば、2018年3月を表示します。[/aside]

作成月の最初の日と曜日を表示

次に作成するカレンダーの「月」(上記のA2セルとB2セルに入力した年月)の最初の日と曜日を表示するセルを設定します。

A5セルにDATE関数を利用して「作成月の最初の日」を、C5セルにTEXT関数を利用して最初の日の「曜日」を表示するようにしました。

 

 

入力した式

● A5セル・・・『=DATE($A$2,$B$2,1)』

● B5セル・・・『=TEXT(A5,”aaa”)』

表示させる理由

作成月の最初の日と曜日を表示する理由は、作成するフォーマットで最初の日をどこの位置(曜日)に表示するかをIF関数を使って自動で表示するような仕組みにするためです。

表示させなくても良いのですが、確認のためにセルを設定し表示させました。

 

作成月の末日と曜日を表示

A8セルには「作成月の末日」をDATE関数によって、C8セルには作成月の末日の曜日をTEXT関数によって表示するようにしました。

入力した式

● A8セル・・・『=DATE($A$2,$B$2+1,1)-1』

月末を表示するためにDATE関数によって「作成月の翌月の1日の1日前」を表示するような式を記述しました。

● B8セル・・・『=TEXT(A8,”aaa”)』

 

表示させる理由

月次のカレンダーの最後の日を確認するためです。これも表示させなくても良いのですが、確認のために表示するようにしました。

 

カレンダーの数値部分のセルに入力した式

カレンダーの1行目の日曜日に入力した式

カレンダーの1行目(Excelの5行目)には、その月の「1」をどの曜日に表示するかをIF関数を使って自動で表示するような式を記述しました。先ほどの「作成月の最初の日」の「曜日」情報を表示しているセル(C5セル)を利用します。

● E5セル・・・『=IF($C5=E4,$A5,””)』

1行目の日曜日は、カレンダーの一番最初のセルになるので「C5とE4が同じ値(曜日)であれば、A5を表示する」というシンプルな式です。月曜日(F6セル)以降はちょっと複雑になります。

[aside type=”yellow”]数字の「1」を表示させても良いでしょう。私は日付データ(A5)を表示し、セルの書式設定で「日」の部分だけを表示するように設定しました。[/aside]

 

カレンダーの1行目の月曜日から土曜日に入力した式

1行目の月曜日から土曜日には、2つのIF関数を利用した式を記述しました。

● F5セル・・・『=IF($C5=F4,$A5,IF(E5<>””,E5+1,””))』

黄色の下線のIF関数では「C5セルとF4セルのデータを比較し、同じ値(曜日)であればA5セルを表示し、そうでなければ、ピンク色のIF関数を実行する」と記述しました。

ピンク色の下線のIF関数では「E5セル(1行目の日曜日)が空欄でなければ、E5に1を加えた日を表示する」と記述しています。つまりE5セルに「1」が表示されていれば「2」が表示されます。

火曜日以降も同じ構造の式を入力しました。

カレンダーの2行目から4行目に入力した式

カレンダーの2行目から4行目は「前日+1」という式を記述しています。

 

カレンダーの5行目の日曜日に入力した式

カレンダーの5行目と6行目は、月によっては表示する数値がないため、A8セルに表示した作成月の末日を使って次のような式を記述しました。

● E9セル・・・『=IF(K8+1>$A$8,””,K8+1)』

5行目の日曜日であるE9セルには、「K8セル(4行目の土曜日)に『+1』をした日が作成月の末日よりも大きければ『””』(空)とし、そうでなければ、K8セルに『+1』した日を表示する」と記述しました。

カレンダーの5行目の月曜日から6行目の土曜日までに入力した式

カレンダーの5行目の月曜日から6行目の土曜日(カレンダーの数値を表示する最後のセル)には、2つにIF関数を使って次のような式を記述しました。

● F9セル・・・『=IF(E9=””,””,IF(E9+1>$A$8,””,E9+1))』

黄色の下線のIF関数では、「E9セルが『””』(空)なら『””』(空)を表示し、そうでなければピンクの下線のIF関数を実行する」という式を記述しました。

ピンクの下線のIF関数では「E9セルに『+1』した日が作成月の末日(A8セル)より大きければ『””』(空)とし、そうでなければ、E9セルに『+1』した日を表示する」と記述しました。

 

カレンダーの祝日を色づけする

上記の式を入力すれば、A2セルに「年」を、B2セルに「月」を入力するだけでその月のカレンダーが表示されると思います。

最初にダウンロードした国民の祝日情報を確認しながら、祝日を色づけして完成です。

(私は、マクロを使って色づけしましたが、また別途記事にします。)


■□◆◇ 編集後記 ◇◆□■

 ドラマ「スリル」。なかなか面白い。