Excel(エクセル)関数でカレンダーA 土日、祝日を自動的に塗りつぶし。

カレンダーを自分好みに作成する。
土日に加えて祝日や有休も自動的に塗りつぶして、手間を省く。

仕事でスケジュール表を作成することが多くなり、休日がわかるように塗りつぶしをしたい。

前回は土日のみ塗りつぶすカレンダーを作成したが、祝日や有休も自動的に塗りつぶすように作成する。

テンプレートはこちら(右クリックで対象をファイルに保存でダウンロード)。

まずは休日表の作成。

まず最初に休日表を作成する。残念ながら、これは手動で作成する。テンプレートで作成してあるので、利用してください。国民の休日とか振り替え休日が難しいので、今回はやめておく。

会社では、祝日が出勤日になったり、有休を設定して休むので、ここに休日を書き込めば、自動的に塗りつぶすことが可能(逆転の発想??)。

次に、A3:1月1日のところを選択し、条件付き書式を設定する。

A3(1月1日)のところを選択して条件付き書式を設定する。

【書式】→【条件付き書式】を選ぶと図のようなダイアログが出てくる。

条件1として、「数式が」を設定し、

=WEEKDAY($A3)=1(日曜日)を条件として入れる。

日付が入っているのはA列なので、WEEKDAYの中身は$A*でA列固定として、コピーした時に列がずれないようにする。$A3の3の部分は、日付の判定をA列の日付とともに変えたいので、$はつけずに固定しない。A3(1月1日)が日曜日だったら塗りつぶす条件を設定。

条件を追加したいので、追加ボタンを押し、条件2として「数式が」を設定し、

=WEEKDAY($A3)=7(土曜日)を条件として入れる。A3(1月1日)が土曜日だったら塗りつぶす条件を設定。

さらに条件を追加したいので、追加ボタンを押し、条件3として「数式が」を設定し、

=ISERROR(MATCH($A3,INDIRECT("休日表!A2:A50"),0))=FALSEを条件として入れる。

作成したシート:休日表のA2からA50にA3の値である1月1日があるかどうかを検索し、あれば塗りつぶすという条件式。

MATCH関数で$A3が休日表!A2:A50に完全一致であるかどうか検索している。

MATCH($A3,休日表!A2:A50,0)としたいところだが、これでは「検索抽出は他のシートを参照できません」というようなエラー表示がでて設定できない。

エラー回避のためINDIRECT("休日表!A2:A50")とする。他のシートを参照するときはINDIRECTを使用すると覚えるしかない。

MATCH関数で他のシートを検索して、値があるかどうかをISERROR関数で判定する。

MATCH関数での検索結果で、値がなければN/Aとエラーを返す。

ISERROR関数はエラー(N/A)があればTRUE(1)、なければFALSE(0)を返すので、

ISERROR(MATCH関数)=FALSEで、MATCH関数で値を検索し、検索値がなくエラー(N/A)ではない時、つまり、1月1日が検索されたときは塗りつぶすと設定できる。

以上で設定完了。

最後に、A3で設定した条件付き書式を1月31日の行まで、A列、B列、C列、D列すべてにコピーする。
そうすると、A列の日付によって、土日、休日表の日付の時は塗りつぶす設定となる。

条件付き書式を設定したA3(1月1日)を選択してコピーし、図のようにA3からD33を選択する。

次に、ツールバーの【編集】→【形式を選択して貼り付け】を選ぶと図のようなダイアログが出てくる。

【貼り付け】の【書式】を選択して、OKボタンを押せば、選択したA3からD33まで条件付き書式がコピーされ、自動的に塗りつぶされる。

以上で完了。後は2月〜12月分を同じように作成してすべての月について完了。

列を増やしたければ、A3を選択して、E列、F列について同じようにコピーすれば同じように塗りつぶされる。

お試しあれ!!

忍者Admaxのテキスト広告で収入UP!

実践!ExcelデータベースTOP