Excel Tips【その5】自動カレンダー

20160330-1今回はExcelでカレンダーを作る解説です。具体例として、昨年末に作成した素材を選びました。作業の順を追って、簡単に説明します。実際のExcelファイルはここをクリックしてダウンロードし、解凍閲覧できます。

1.レイアウト
添付のカレンダーは2Lサイズなので、まずレイアウトをそのサイズに合わせます。上部の写真はデジカメの標準の縦横サイズ(3X4)を縮小して貼り付けるとして、残ったエリアを中段に年月表示(写真例では、前後の月のミニカレンダーを配置)し、下段に日付エリアにすると、日付の1セルあたりのサイズは縦0.85cm、横1.69cmとなり、余りを外枠としました。日付エリアの最上部には7行の曜日欄を作ります。大外の青の部分を印刷範囲とし、これが2Lサイズの 178X127 mmとなります。この青枠のエリアを縦方向に12ヶ月分、コピーしてレイアウトの出来上がりです。

2.計算式による日付の作成
カレンダーの日付を計算式でレイアウト表のセルに自動配置できるのはExcelの醍醐味です。詳細はダウンロードしたファイルの各セルの計算式を見ていただくこととし、以下の表から概略説明をします。
20160330-2このカレンダーはK15のセルに年号を入力すると、その年のカレンダーを自動作成するものです。そのロジックは、
①年号を入力すると、その下のセル(K16)にその年の第1日曜日が何日であるか(第1日曜日が1月1日の時のみ第2日曜日の日付)を表示させます。この表示は年月日なので、年月を省いた日付を取得して、これをK18のセルに表示させます。このK18の日付がその月の全日付を配置する大事なデータです。
②第1日曜日の日付が決まり、これがC19のセルに配置されます。後はこの日の前後を遡れば、1日から31日まで自動配置されます。コツは、日付が0以下になれば非表示とし、また1月は31日までなので、K17のセルに入力した31を超える場合も非表示にすることで、1月の日付が自動配置されます。
③さて、難問は翌月の初日の曜日をどう計算式で表すかの問題です。さんざ悩んだ末に以下を思いつきました。
20160330-3その月の基準となる第1日曜日の日付を前の月からどう割り出せば良いか、つまり作表した7つの曜日の中で最後の週(行)では空欄がいくつあったか数えれば、明確となることに気づきました。上の表で基準日のK42のセルの計算式は、
=IF(I22=””,COUNTIF(C22:I22,””)+1,COUNTIF(C23:I23,””)+1)
空欄の数に1を加えた数値が正解で、基準の日曜日から前にさかのぼること、この空欄数が前月の最終日に合致して、問題解決です。なお、IF文にして、カウントする対象を2行にしたのは、前月が第何週で終わるか年によって変化するので、これに対応した計算式です。
④各月の日数は固定ですが、うるう年の2月だけ異なります。自動計算に対応するため、上表のK41は計算式は、
=IF($K$15/4=INT($K$15/4), 29, 28)
とし、最初に入力した年号を4で割って数値が整数ならば、その月は29日、そうでなければ、28日にするものです。今年は29日ですね。

以上で、完成しました。さて、添付のExcelファイルは祝日などの文字編集や追加文字の対応をしていません。例えば、2月11日の建国記念日を対象セルに入力すると、それ以降の日付がバグってしまいます。さあ、どうしましょう!本日はちょっと時間がオーバーしましたので、続きは後日にて...

カテゴリー: IT/PC/HP関連 パーマリンク

コメントを残す

メールアドレスが公開されることはありません。