【Excel】土曜日/日曜日/祝日で色を変える・29日/30日/31日の表示・非表示を制御する。

【アイキャッチ】ExcelExcel

1か月分を1シートにして日付を縦に並べて土日・祝日に色を変えたり、31日の表示を消したりと毎月調整が必要だったため、毎月月初日を指定するだけですべての調整を自動で行うExcelを作成します。

カレンダーの指定方法

下記のようなExcelファイルの作成を目指します。A1セルに月初日を入力すると土曜日・日曜日・祝日の色分けと29日・30日・31日の表示を制御します。また、非表示となった日付はグレーでセルを塗りつぶします。

Excelセル色を変える1

日付(A列)・曜日(B列)はそれぞれ「d」「aaa」とします。

Excelセル色を変える2

タイトル(年月の決定)の指定

タイトルは「XXXX年YY月度 活動報告」となっていますが、これは書式で指定したものです。データは月初日を指定します。

Excelセル色を変える3

月初日(1日目)の指定

月初日は単純にタイトルで設定した日付のセル「=A1」とします。

2日~28日の指定

2日~28日まで毎月必ず存在しますので、「一つ上の行+1」を指定します。2日に「=A3+1」と指定したら28日までコピーします。

Excelセル色を変える4

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,””)
「A30」は28日のことです。
29日は28日+1・30日は28日+2・31日は28日+3としています。

土曜日・日曜日・祝日・非表示の色指定

曜日・祝日毎にセルの色表示を変更するには「条件付き書式」を使います。ここでは下の画像のように、上から非表示セル(月毎に非表示になる31日等)・祝日セル・土曜日セル・日曜日セルの4つの条件付き書式を作成します。

Excelセル色を変える5
作成する条件付き書式

では具体的な条件付き書式の作り方です。

祝日一覧の作成

祝日については計算ができないため、事前に祝日リストを作成しておきます。祝日リストは新しいシートを作成します。祝日リストが書けたら、祝日リストの範囲を「祝日リスト」と名前を付けます。

Excelセル色を変える6

土曜日・日曜日セルの条件付き書式作成

カレンダー全体を選択し、[ホーム]→[条件付き書式]→[新しいルール]をクリックし設定を行います。
「書式ルールの編集」画面で「数式を使用して、書式設定するセルを決定」を選択し書式を指定します。「=WEEKDAY($A3)=7」とすることで土曜日の指定になります。書式が指定できたら、「書式」ボタンでセルの色を決定します。同じように日曜日も指定しますが。書式は「=WEEKDAY($A3)=7」と指定します。

Excelセル色を変える7

WEEKDAY関数は指定された日付の曜日インデックスを返します。
インデックスは1:日曜日、2:月曜日・・・・・7:土曜日となります。

祝日の条件付き書式作成

祝日は「土曜日・日曜日セルの条件付き書式作成」と同じく条件付き書式を作成しますが、書式には「=COUNTIF(祝日リスト,$A3)=1」と指定します。「祝日リスト」は事前に指定したセルの範囲の名前です。セルの範囲を直接してもよいのですが、簡単に指定できる名称にしています。

COUNTIF関数は「指定された範囲」と「検索条件」を指定し一致する数を返します。
今回は日付列の日付で祝日リストを検索し、祝日リストに日付がある場合は「1」を返しますのでそこでセルの色を変更する仕組みとなります。

非表示日の条件付き書式作成

非表示日は「土曜日・日曜日セルの条件付き書式作成」と同じく条件付き書式を作成します。書式には「=$A3=””」と指定します。日付が表示されない場合ですね。

まとめ

今回作成したカレンダーは他のことにも応用できるテクニックもあります。業務の効率化を検討されている場合は是非活用してみてください。