曜日の色を自動的に変える


下図のように日付が入力されているとします。この中で、土曜日の日付は青色、日曜日の日付は赤色で表示されるようにしてみましょう。これには、条件付き書式を使います。

一般的に、条件付き書式では「セルの値が○以上だったら」のような解説が多いですが、今回は「日付が○曜日だったら」という条件になりますので、何とかして日付が何曜日かを調べなければなりません。これには、いくつかの関数を使えますが、ここではTEXT関数を使います。TEXT関数の詳細については「TEXT関数」を参照してください。また、「曜日を表示する」の最後では、TEXT関数を使ってワークシート上で曜日を判定する方法も解説しています。

まず、条件付き書式を設定したいセル範囲を選択します。ここでは、セルA2:A10です。このとき、アクティブセルの位置が重要です。下図では、セルA2がアクティブセルです。

この状態で、[ホーム]タブ[スタイル]グループの[条件付き書式]ボタンをクリックしてください。続いて、表示されるメニューの[新しいルール]をクリックします。

実行すると[新しい書式ルール]ダイアログボックスが表示されます。[ルールの種類を選択してください]リストで[数式を使用して、書式設定するセルを決定する]を選択します。

[次の数式を満たす場合に値を書式設定]ボックスに「=TEXT(A2,"aaa")="土"」と入力します。ここがポイントなので少し解説します。まず、今回設定している条件付き書式は「セルの中の値が~」ではなく、ユーザーが自由に考えた「数式の結果が~」というタイプです。ですから、まずは数式を入力します。入力する数式は基本的に「○○と××が△△である」という形式にします。たとえば

  • =A1=100 → セルA1 と 100 が 等しい
  • =LEFT(A1, 1) <> "A" → LEFT関数の結果 と "A" が 等しくない
  • =A1+B2 > 50 → セルA1とセルB2の合計 が 50 より 大きい

みたいな感じです。左端の「=」は、"これは数式だよ"の「=」です。セルに数式を入力するとき「=A1+B3」とか「=SUM(A1:A5)」のように、最初(左端)は「=」から始めますよね。それと同じです。そして、この「○○と××が△△である」が正しいとき、次に指定する書式が適用されます。上図で指定した「=TEXT(A2,"aaa")="土"」は、正確に書くと「TEXT関数で変換した結果が"土"である」という意味です。要するに、曜日が"土曜日"かどうかを判定しています。

さて、このように指定する数式で重要なことは、数式内で指定しているセル(ここではA2)には、アクティブセルのアドレスを指定するということです。これは、次のように考えてください。

今回の条件付き書式で指定するような数式を、セルに入力するとします。

まずは、先頭のセルに数式(条件)を入力します。この数式を、条件付き書式を設定したいセル全体にコピーします。

ワークシート上で、このような操作をすると、最初のコピー元セル(ここではセルB2)に入力した数式のうち、相対参照で指定した「A2」が、自動的に変化します。これが、複数のセルに[数式を使用して、書式設定するセルを決定する]で条件付き書式を設定するときのイメージです。このとき、数式の結果が「TRUE」になるセルだけに書式が適用されます。もうお分かりですね。条件付き書式のダイアログボックスに入力する数式とは、ここで言う「先頭のセルに入力する数式」であり「コピー元の数式」です。だから、アクティブセルのアドレスが重要になってくるわけです。

書式はお好みで設定してください。下図は、青っぽい塗りつぶしにしました。

[OK]ボタンをクリックすると、下図の画面が表示されます。

[OK]ボタンをクリックすると、このダイアログボックスを閉じます。[適用]ボタンをクリックすると、ダイアログボックスは閉じずに、設定した条件付き書式を選択範囲に適用します。正しく設定できたかを確認するときに便利です。もし、さらに「日曜も色を変える」という新しい条件付き書式を設定したいのであれば、[新規ルール]ボタンをクリックしてください。

結果は、こんな感じです。

複数セルの色を変える

実務では、上記のように「日付が入力されているセルだけ」色を変えるだけでなく、下図のようにしたいことも多いでしょう。

こうなると、チョコッとだけ難易度が上がりますけど、これができると便利なのでがんばってください。まずは、条件付き書式で色を変えたい「セル範囲全体」を選択します。このとき、アクティブセルの位置が重要です。まぁ、普通に選択すれば左上のセルがアクティブセルになると思います。今回でしたら、セルA2です。

上記と同じ手順で[新しい書式ルール]ダイアログボックスを開きます。さて、ここで指定する数式(条件)は、アクティブセルに入力するようなイメージでしたよね。

選択したセル範囲の左上セルに入力した数式(条件)を、選択したセル範囲全体にコピーするイメージを持ってください。

では、先に解説した「1列だけ色を変える」で使ったのと同じ数式を指定したとします。

セルA2の数式を右方向にコピーすると、下図のようになります。

TEXT関数で日付を調べるのですが、その元となる日付は「セルA2」に入力されています。上図のように、数式のコピーによってアドレスが変わっては困ります。なので、最初にセルA2へ入力する数式で、セルA2のアドレスを絶対参照にします。

しかし、これでは下方向へコピーするとき困ったことになります。

A列の、数式をコピーしたすべてのセルで「セルA2」の曜日を判定しています。これは望む結果ではありません。ということは、最初にセルA2へ入力する数式は「右方向にコピーしたとき、列は変わって欲しくない。しかし、下方向にコピーしたとき、行は自動的に変わって欲しい」ということですから、「$A2」のように、列だけ絶対参照にしなければなりません。

もちろん、他のセルにコピーしたときも、すべての数式で「同じ行のA列」を参照しています。

したがって、条件付き書式の条件に指定する数式は、こうなります。

条件付き書式の条件に"数式"を使うときは、その数式がアクティブセルに入力され、アクティブセルに入力された数式が、条件付き書式を適用する別のセルにコピーされるイメージを持ってください。そして、今回のように行方向と列方向にコピーするケースでは、自動的に変化させたくない行や列を絶対参照にします。最初からすべてを頭の中だけで考えるのは難しいですから、上記でやったように、その数式をセルに入力し、実際にコピーして確認するといいです。