ワークシート上に日付データが入力されているとき、条件付き書式を使えば土曜日や日曜日のセルだけ自動的に書式を変更することができる。このテクニックで使用するWEEKDAY関数は、指定した日付の曜日を数値で返す関数だ。関数の結果を条件にして、土曜日や日曜日を判定することになる。

 だが、たとえば祝日も赤で表示したいとか、お父さんの誕生日は青で塗りつぶしたいようなケースでは、WEEKDAY関数だけで判定することは不可能だ。ここでは、そんな独自の休日も自動的に書式を変化させるテクニックを紹介しよう。

 図1を例に解説する。左側がカレンダー部分。右側の余白には、書式を変更したい祝日や誕生日などのデータを入力しておく。日付はどれもシリアル値で入力するようにしよう。

 条件付き書式を設定したいセル範囲を選択する。このとき、先頭の日付セルがアクティブセルになるようにしよう。「書式」→「条件付き書式」をクリックして「条件付き書式の設定」ダイアログボックスを開く。「条件1」で「数式が」を選び、右のボックスには次のように入力する(図2)。

=MATCH($A2,$D$2:$D$4,0)>0

 MATCH関数は、指定したデータをセル範囲から検索する関数だ。上記の式では、セルA2のデータをセル範囲D2:D4の中から探し、見つかった場合はその位置を返す。カレンダー部分の全セルにこの条件を指定したので、もしA列の日付がD2:D4内に存在すれば数値が返ることになる。これが条件付き書式の条件だ。図3が実行結果だ。

 ここまできたら、B列の行事も自動的に表示するようにしたい。これはVLOOKUP関数を使えば可能だ。セルB2に次の式を入力する。

=VLOOKUP(A2,$D$2:$E$4,2,FALSE)

 4番目の引数に「FALSE」を指定するのがポイントだ。しかし、これでは、該当しない日付にすべて「#N/A」というエラーが表示されてしまう。それは見栄えが悪いのでいやだという場合は、次の方法がある。

 ISNA関数とIF関数を使って、もしエラーになるようなら何も表示せず、該当する日付が存在する場合だけ行事が表示されるようにするのだ。セルB2に以下の式を入力して、下方向にもコピーしたのが図4だ。

=IF(ISNA(VLOOKUP(A2,$D$2:$E$4,2,FALSE)),"",VLOOKUP(A2,$D$2:$E$4,2,FALSE))

図1 独自の行事や祝日を別のセルに入力する


図2 書式メニューの条件付書式に「=MATCH($A2,$D$2:$D$4,0)>0」と入力。「書式」ボタンを押して、好みの書式を設定する


図3 指定した休日の色が変わった


図4 B2セルに「=IF(ISNA(VLOOKUP(A2,$D$2:$E$4,2,FALSE)),"",VLOOKUP(A2,$D$2:$E$4,2,FALSE))」と入力し、下のセルにもコピーする。日付の隣に行事名も表示できた