前編 で状況と関数を用いた対応について書きましたので、先にそちらをご覧ください。

■準備しているデータ

  • 左側のカレンダーの日付の祝日に塗りつぶしの色を設定するために条件付き書式を使いたい。
  • 該当の祝日を右側のテーブルにまとめて「祝日2022」というテーブル名を付けてある。
  • 祝日のリストをテーブルにしてあるのは、「特別休暇」などが増えた場合に対応したいため。

 

テーブルの [日付] 列のデータ部分に「祝日」という名前を定義しています。

祝日をまとめた表をテーブルに変換して「祝日2022」というテーブル名を付けたあとに、日付のデータ部分を選択して [名前ボックス] で「祝日」と設定しました。

数式を使った条件付き書式では、TRUE が返るときに書式が適用されます。

ダイアログ ボックスで数式を作るのはエラーのもとなので、事前に C 列に数式を作ってコピーして利用する予定です。

ここでは、MATCH 関数と ISERROR 関数と NOT 関数を使って、A 列の日付が「祝日」 (という名前が定義されているセル範囲) に存在している場合に C 列に TRUE が返る数式を作っています。

たとえば、セル C2 の数式は「=NOT(ISERROR(MATCH(A2 , 祝日 , 0)))」です。
 
2022/4/29 や 2022/5/3 などは、テーブルの [日付] 列に存在しているので TRUE が返っていることがわかります。

■条件付き書式の作成

  1. 作成した数式をコピーします。

  1. 条件付き書式を設定するセル範囲を選択し、リボンの [ホーム] タブの [スタイル] グループの [条件付き書式] をクリックし、[新しいルール] をクリックします。

  1. [新しい書式ルール] ダイアログ ボックスで [数式を使用して、書式設定するルールを決定] を選択し、下部のボックスにコピーした数式を貼り付けます。

  1. A 列を固定するように数式を編集 ($ をつけて列を固定) し、[書式] をクリックします。

  1. [セルの書式設定] ダイアログ ボックスの [塗りつぶし] タブを選択し、祝日に適用する色を選択して [OK] をクリックします。

  1. [新しい書式ルール] ダイアログ ボックスの [OK] をクリックします。

  1. 条件付き書式が設定され、該当する日付のセルに塗りつぶしの色が適用されます。

  1. テーブルに祝日を追加した場合、条件付き書式のルールを編集しなくてもカレンダーの該当する日付に色が適用されます。


    ご質問の内容は、条件付き書式の作成をするときにうまくいかなかった、ということ。

    その原因は、祝日をまとめた表がテーブルになっているけれど、テーブル名と列名を認識できていないこと。

    その対応策の 2 つ目として、テーブルの列のデータ部分に名前を定義すること。

    についてご紹介しました。

    祝日をまとめた表をテーブルに変換して条件付き書式の数式を作成するときには INDIRECT 関数を組み合わせます。しかし数式が長くなって誰にでもわかりやすいとは言い難いので名前を定義する方法についても書きました。

    対応策の 1 つ目である INDIRECT 関数を使用した対応については前編でご紹介しています。

    やりたいことができるのなら前編の INDIRECT 関数を組み合わせる方法でも、後編の名前を組み合わせる方法でもどちらでもよいのです。

    石田 かのこ