1か月分を1シートにして日付を縦に並べて土日・祝日に色を変えたり、31日の表示を消したりと毎月調整が必要だったため、毎月月初日を指定するだけですべての調整を自動で行うExcelを作成します。
カレンダーの指定方法
下記のようなExcelファイルの作成を目指します。A1セルに月初日を入力すると土曜日・日曜日・祝日の色分けと29日・30日・31日の表示を制御します。また、非表示となった日付はグレーでセルを塗りつぶします。
日付(A列)・曜日(B列)はそれぞれ「d」「aaa」とします。
タイトル(年月の決定)の指定
タイトルは「XXXX年YY月度 活動報告」となっていますが、これは書式で指定したものです。データは月初日を指定します。
月初日(1日目)の指定
月初日は単純にタイトルで設定した日付のセル「=A1」とします。
2日~28日の指定
2日~28日まで毎月必ず存在しますので、「一つ上の行+1」を指定します。2日に「=A3+1」と指定したら28日までコピーします。
29日・30日・31日の指定
29日・30日・31日は少し面倒ですが、下記の考え方で指定します。
「28日の年月と各日の年月が同じだったら表示する。違う月だったら非表示とする」
具体的には下記の式を指定します。
29日 | =IF(TEXT(A30+1,”yyyymm”)=TEXT(A30,”yyyymm”),A30+1,””) |
30日 | =IF(TEXT(A30+2,”yyyymm”)=TEXT(A30,”yyyymm”),A30+2,””) |
31日 | =IF(TEXT(A30+3,”yyyymm”)=TEXT(A30,”yyyymm”),A30+3,””) |
29日は28日+1・30日は28日+2・31日は28日+3としています。
土曜日・日曜日・祝日・非表示の色指定
曜日・祝日毎にセルの色表示を変更するには「条件付き書式」を使います。ここでは下の画像のように、上から非表示セル(月毎に非表示になる31日等)・祝日セル・土曜日セル・日曜日セルの4つの条件付き書式を作成します。
では具体的な条件付き書式の作り方です。
祝日一覧の作成
祝日については計算ができないため、事前に祝日リストを作成しておきます。祝日リストは新しいシートを作成します。祝日リストが書けたら、祝日リストの範囲を「祝日リスト」と名前を付けます。
土曜日・日曜日セルの条件付き書式作成
カレンダー全体を選択し、[ホーム]→[条件付き書式]→[新しいルール]をクリックし設定を行います。
「書式ルールの編集」画面で「数式を使用して、書式設定するセルを決定」を選択し書式を指定します。「=WEEKDAY($A3)=7」とすることで土曜日の指定になります。書式が指定できたら、「書式」ボタンでセルの色を決定します。同じように日曜日も指定しますが。書式は「=WEEKDAY($A3)=7」と指定します。
WEEKDAY関数は指定された日付の曜日インデックスを返します。
インデックスは1:日曜日、2:月曜日・・・・・7:土曜日となります。
祝日の条件付き書式作成
祝日は「土曜日・日曜日セルの条件付き書式作成」と同じく条件付き書式を作成しますが、書式には「=COUNTIF(祝日リスト,$A3)=1」と指定します。「祝日リスト」は事前に指定したセルの範囲の名前です。セルの範囲を直接してもよいのですが、簡単に指定できる名称にしています。
COUNTIF関数は「指定された範囲」と「検索条件」を指定し一致する数を返します。
今回は日付列の日付で祝日リストを検索し、祝日リストに日付がある場合は「1」を返しますのでそこでセルの色を変更する仕組みとなります。
非表示日の条件付き書式作成
非表示日は「土曜日・日曜日セルの条件付き書式作成」と同じく条件付き書式を作成します。書式には「=$A3=””」と指定します。日付が表示されない場合ですね。
まとめ
今回作成したカレンダーは他のことにも応用できるテクニックもあります。業務の効率化を検討されている場合は是非活用してみてください。