条件付き書式 ~ 指定した条件で書式を変える ~

る特定の条件に一致したとき、自動的にセルの色や文字の色を変更して強調したいと思ったことはないでしょうか?

また、あるセルだけではなく、そのセルを含む行全体の書式を変更したい場合もよくあると思います。もちろんExcelで設定することが可能ですが、こうした方法については、やり方を知っていなければ手動で一つひとつ設定していくしかありません。

Excelの本質的な操作ではないので、なかなか認知されていない機能かもしれませんが、操作自体は非常に簡単で、また複雑な条件も指定することができます。その機能は、

条件付き書式

という機能になります。文字通り、条件と書式を設定しておく機能です。

さて、ここまでの説明で気づかれた方は、もうExcelの上級者です。すでに本編でこの機能を学習しているからです。それは、重複したセルやデータを含むレコードを抽出する で学習した「重複のチェック」機能です。

重複のチェックは、まさに条件付き書式の機能です。すなわち、「重複する値」を条件として、その条件に一致するセルを強調表示させる設定だからです。

したがって、操作方法についても、重複したセルやデータを含むレコードを抽出する で学習した操作方法と同じです。そこで本稿では、主にその他の条件指定について学習したいと思います。

まず、簡単に復習しましょう。重複セルを抽出して強調表示するには、抽出したい範囲をマウスで範囲指定、もしくは列や行などを全選択した状態で「ホーム」タブの「条件付き書式」ボタンをクリックします。

「ホーム」タブの「条件付き書式」ボタン

すると、下図のようにリストメニューが表示されます。「セルの強調表示ルール」を選択して、さらに「重複する値」を選択します。

「条件付き書式」ボタンのメニューのイメージ

そして、「重複する値」画面で書式を設定すると、下図のように重複セルが強調表示されます。

重複するセルが強調表示されているイメージ

すなわち、条件付き書式を設定する場合は、まず対象となる範囲を選択してから、この「条件付き書式」ボタンより行うことになります。

それでは、おそらく誰もが一度は作成した経験がある「カレンダー」を作成しながら、条件付き書式の多彩な機能を学習していきましょう。

作成するカレンダーは、土曜日、日曜日、祝祭日のセルや、そのセルを含む行の書式を自動的に変更するように設定します。そのためには、どのような条件と書式設定が必要になるでしょうか?

まず、カレンダーに必要になるのは日付と曜日です。

日付はもちろん、時間計算 で学習したシリアル値の日付で、Excelに日付認識させる必要があります。文字列認識の場合では、曜日を関数などで求めることができません。

シリアル値で日付認識されているイメージ

また、曜日を返す関数については、基本操作編 その他の基本的な関数 で学習しましたが、ここではもっと応用的に、自動的に日付から曜日を表示させてみましょう。

その方法は、書式のユーザー定義 で学習した「ユーザー定義」を使って、非常に簡単に曜日を求めることができます。同項の表にもあるとおり、「aaa」が曜日を返す定義になります。

ユーザー定義で「m/d(aaa)」と定義するだけです。

「セルの書式設定」画面のイメージ

すると、下図のように、日付と曜日を自動的に同じセルで表示させることができます。

同じセルに日付と曜日が表示されたイメージ

もちろんこの日付は文字列ではなく、シリアル値で日付認識されています。このセルをオートフィルでコピーして30日まで作成し、カレンダー用に表の体裁を整えます。

9月のカレンダー用の表のイメージ

次に、土曜日は青系色、日曜日は赤系色の書式に自動変換するように条件付き書式を設定します。

まず、重複のチェックと同様に、表全体を範囲指定した状態で「条件付き書式」ボタンをクリックしたいところですが、詳しくは後述するので、とりあえず「B3」セルのみを選択した状態で「条件付き書式」ボタンをクリックします。

次に、メニューのどれを選ぶべきか悩ましいところですが、基本的に「新しいルール」を選択すれば、どんな条件でも作成することができます。

「条件付き書式」ボタンのメニューのイメージ

すでに学習した「セルの強調表示ルール」や、その下の「上位/下位ルール」はよく利用されるものを抜き出したショートカットのイメージです。

ただ、この場合は「セルの強調表示ルール」に該当するでしょうか?「土曜日」と「日曜日」の書式を変更して強調するのですから、該当するような気がします。

「条件付き書式」ボタンのメニューのイメージ

そうなると、「セルの強調表示ルール」の「指定の値に等しい」から、下図のように当該セルの文字列「9/1(土)」を指定すると、そのセルが強調表示されるはずです。(「文字列」を選択しても同条件)

「指定の値に等しい」画面のイメージ

ところが、このように設定しても「9/1(土)」のセル(B3)は何の変化もありません。

なぜなら、これらのセルの値はユーザー定義で曜日を表示しているシリアル値だからです。したがって、「土曜日」とか「日曜日」なども同様で、文字列を指定しても一致しないのです。

ではどうするのかというと、ここで関数を使用します。曜日を求める関数を使用して、曜日に対応付けられた数値を指定するのです。

使用するのは基本操作編 その他の基本的な関数 で学習した「WEEKDAY」関数を使用します。関数式と曜日に対応する数字は同項のとおりですが、「1~7」が「日~土」に割り当てられています。

では、現在「B3」セル(9/1)を選択した状態で「条件付き書式」ボタンより「新しいルール」を選択し、「新しい書式ルール」画面が表示された状態です。

「新しい書式ルール」画面のイメージ

6つある書式設定項目のうち、今回は関数を使用するので「数式を使用して、書式設定するセルを決定」を選択します。すると「次の数式を満たす場合に値を書式設定」の入力エリアに関数式を入力できるようになります。

このエリアは、アイコンの操作などで簡単に関数を入力することができません。そのため、直接関数式を記述する必要があります。関数式は、

=WEEKDAY(B3)=7

と記述します。「B3」の部分のみセルをクリックして記述することもできます。ここでは絶対参照でも相対参照でもかまいません。意味は「B3」セルが「7」の場合、つまり「7=土曜日」の場合、という条件になります。

「新しい書式ルール」画面のイメージ

次に、書式を設定します。「書式」ボタンより任意の書式を設定します。設定した書式は「プレビュー」で確認することができます。「OK」ボタンをクリックすると、さらに「条件付き書式ルールの管理」画面が表示されますが、この画面は、現時点で設定されている条件付き書式(ルール)の管理画面になります。

「条件付き書式ルールの管理」画面のイメージ

デフォルト(初期設定)では、「書式ルールの表示」のリストメニューが「現在の選択範囲」となっており、この場合では「B3」セルに設定されている条件のみが表示されています。このリストメニューより、シート全体や他のシートなど、表示範囲を切り替えることができます。

さて、これで「B3」セルが「土曜日」の場合、「B3」セルのみ書式が自動的に変換されるようになります。

条件付き書式が設定されたセルのイメージ

このような要領で条件の指定と書式の設定を行います。複数条件として「日曜日」の場合の条件も追加することができます。

新たに条件を追加する場合は、同様に「条件付き書式」ボタンより「新しいルール」を選択するか、「ルールの管理」より「条件付き書式ルールの管理」画面から「新規ルール」を選択して条件を追加します。

「条件付き書式ルールの管理」画面のイメージ

同様に、「日曜日」の条件(「=WEEKDAY(B3)=1」)と書式を設定します。

「新しい書式ルール」画面のイメージ

すると、「条件付き書式ルールの管理」画面の一覧に条件が追加されます。

「条件付き書式ルールの管理」画面のイメージ

条件を変更したり書式を変更したい場合は、この画面の一覧からそのルールを選択して、「ルールの編集」より、条件や書式を編集することができます。また、条件が不要になった場合も同様に「ルールの削除」で、ルールを削除することができます。

以上で「B3」セルに「土曜日」と「日曜日」の2つの条件と書式が設定されました。

しかし、繰り返しますが、これではあくまで「B3」セルのみに条件と書式が設定されただけです。表全体に設定しようと思うと、このセルの書式をすべてのセルにコピーしなければならないのでしょうか?

すべてというのは、日付の「B列」だけでなく「C列や「D列」も含めた表全体です。というのも、日付のセルだけ書式が変わってもおかしいので、土曜日なら土曜日の「行」すべてに書式が適用されなければなりません。つまり、土曜日の行はすべて青系色、日曜日の行はすべて赤系色に変更されなければならないということです。

セルをコピーして設定することもできなくはない(結果的には同じになる)のですが、このように、行すべてに書式を適用したい場合は、少しの知識があれば、もっと簡単に設定することができます。

話を戻しますが、最初に「B3」セルのみを選択した状態で条件付き書式を設定しました。そうではなく、表全体を範囲指定した状態で「条件付き書式」ボタンより設定すればいいのです。

なぜそうしなかったのかというと、少しだけ知識が必要になるためで、条件の指定と書式設定の方法をまず知っておくべきだからです。

もう一度はじめからやってみましょう。「条件付き書式ルールの管理」画面で「B3」セルに設定されているルールを削除しておいてください。

今度は、表全体を範囲指定して、「条件付き書式」ボタンより「新しいルール」、「数式を使用して、書式設定するセルを決定」と進みます。画面には何の違いもありませんが、

最初に範囲指定しておくことで条件の適用範囲をあらかじめ指定している

というのが肝心なことなのです。ここに同じ「WEEKDAY」関数を記述します。記述式は、

=WEEKDAY($B2$B32)=7

と記述します。「B2」~「B32」というのは、表のB列のことです。どうして「B2」なのかというと、最初に表全体を範囲指定しているので、タイトル行も含んでいるためです。ここで「B3」から指定してしまうと、書式が適用されるセル(行)が1行ずれてしまいます。

そして、もっとも重要なのが引数「$B2$B32」の「$」記号です。これは基本操作編 数式の複写(1) で学習した「絶対参照」の記号です。「$B2$B32」は「絶対列参照」の意味になります。

絶対列参照により、そのセルがある行の「B列」のセルの値を参照します。つまり、それぞれのセルで列は「B列」、行は自分のセルを含む行を参照するということになります。

引数の部分はマウスでドラックして記述することもできますが、必ず「F4」キー等で「絶対列参照」に修正しておく必要があります。

この記述だけで「B列」に「土曜日」の値が入力されると、そのセルを含む行すべての書式が変わります。すべてというのは、最初に指定した範囲の行全体です

あとは同様に書式を設定するだけです。

「新しい書式ルール」画面のイメージ

そして、日曜日の場合も同様に条件追加して完成です。範囲を指定して引数を絶対列参照するだけで、行すべてに対してまとめてルールを設定することができます。

表の行全体の書式が変更されたイメージ

設定したルールを確認してみましょう。「条件付き書式ルールの管理」画面の一覧では、ルールの適用範囲が表の範囲になっています。

「条件付き書式ルールの管理」画面のイメージ

したがって、「B3」セルのみに条件付き書式を設定した場合でも、あとからこの画面で適用範囲だけ変えてしまえば、表全体にルールを適用させることができます。

また、「=WEEKDAY($B3)=1」とする「絶対列参照」でオートフィルの「書式のみコピー」でセルを全体にコピーしてもこの画面に作成されるルールは結果的に同じ範囲となり、同じルールになります。(書式のみコピーについては、書式のユーザー定義 を参照してください)

このように、ルールを設定したカレンダー表のフォーマットを作成しておくと、シートをコピーするだけで月ごとに何度も使うことができて、非常に便利です。

では、さらに応用して、祝日も自動的に書式設定してみましょう。

祝日はどのように条件として記述したらいいでしょうか?さすがに祝日を求める関数はありません。そこでまず、別表に祝日だけのリストを作成します。

2018年の祝日一覧表のイメージ

同じシートに作成してもかまいませんが、祝日用に別シートにしておいたほうが、月ごとにシートを分ける場合には管理しやすいと思います。また、当然日付はシリアル値で日付認識させておく必要があります。

そして、この表に 名前の定義と管理 で学習した名前を定義します。ここでは、別シートに表を作成し、名前を「祝日2018」としました。

エリアに名前を定義したイメージ

この名前を関数の引数として使用するわけです。使う関数は、基本操作編 簡単なデータベースの作成(1) および 重複したセルやデータを含むレコードを抽出する で学習したCOUNTIF関数を使います。

COUNTIF(カウントイフ)関数は、指定した範囲の中から条件に合う「セルの個数」を返す関数です。(COUNTIF関数については本応用操作編の COUNTIF関数 でも詳しく解説します)

つまり、作成した祝日一覧表「祝日2018」の範囲の中から、日付のセル「B列」と一致する値の個数が1つある(1つ以上ある)ということを条件にするのです。そこで、COUNTIF関数式は、

=COUNTIF(祝日2018,$B3)、=COUNTIF(祝日2018,$B3)=1、=COUNTIF(祝日2018,$B3)>=1

と記述します。意味は、「B3」セルの一致する値(日付)が(1つ以上)ある場合という条件になります。ひとつのセルに一致する祝日は最大1で、2以上あるわけないのですが、概念としてはそういうことになります。

通常、祝日は「日曜日」と同じ書式になりますが、ここでは少し変えて黄色にしてみます。

「新しい書式ルール」画面のイメージ

ルールを適用すると、下図のように、祝日の書式が黄色に変更されます。

条件付き書式が設定された表のイメージ

ところで、どうして祝日の色を変えたのかというと、祝日は日曜日と重なる場合があるからです。例えば、上図の「9/23(日)」は、祝日であり日曜日でもあります。

その場合、どちらの書式が適用されるのかというと、「条件付き書式ルールの管理」画面で上位に表示されているルールが適用されます。優先順位を変更したい場合は、同画面の上下矢印ボタンで順番を入れ替えてください。

「条件付き書式ルールの管理」画面のイメージ

また逆に、ある特定の日付だけ休日の書式を解除したい場合もあると思います。

ある範囲だけ(1行だけ)のルールを解除するには、前述した「条件付き書式ルールの管理」画面から「現在の選択範囲」のセルのルールを削除する方法もありますが、もっと簡単に解除する方法があります。

該当するセルまたは行を範囲指定した状態で「条件付き書式」ボタンをクリックして、「ルールのクリア」から「選択したセルからルールをクリア」を選択すると、その部分だけルールを解除することができます。

「条件付き書式」ボタンのメニューのイメージ

以上で、カレンダーの作成は終了です。

最後に、いくつかよく使う条件の指定方法について知っておきましょう。すでにスキルは身についていますので、下図の表を使って、簡単に説明します。

社員別の特技と売上等の表のイメージ

ある値や文字列に一致するセル(行)を強調表示する

同様に表を範囲指定して、「条件付き書式」ボタンの「セルの強調表示ルール」より「次の値に等しい」もしくは「文字列」を選択します。

「条件付き書式」ボタンのメニューのイメージ

検索する対象が「完全一致」でなければならない場合は「次の値に等しい」を選択し、その文字を「含む」場合のすべてを対象にする場合は「文字列」を選択します。対象が数値なのか文字列なのかという意味ではないので注意してください。

ここでは「文字列」を選択します。すると、「文字列」画面が表示されます。

「文字列」画面のイメージ

検索する文字列等を入力する「次の文字列を含むセルを書式設定」エリアには、すでに文字列が入力されています。これは、範囲指定した表の最初のセルの文字列が自動的に入力されています。また、書式も設定されていて、ここではリストメニューからしか選択できなくなっています。

どちらも後から修正できますが、書式はそのままで、検索する値を任意の値に修正します。「文字列」は完全一致ではないので、例えば「11」と入力すると「11」をを含むセルが強調表示されます。

「11」を含むセルが強調表示されているイメージ

ここで、「条件付き書式ルールの管理」画面より、「ルールの編集」ボタンをクリックしてみましょう。下図のように、「文字列」の条件設定の詳細を確認したり編集することができます。

「書式ルールの編集」画面のルールのイメージ

ルールの内容をみてみると、「次の値を含む」となっています。リストメニューになっているので、左側「特定の文字列」から「セルの値」、右側「次の値を含む」から「次の値に等しい」に変更すると、完全一致検索(「次の値に等しい」と同条件)になります。

以上で、セルの強調表示が簡単にできます。

しかし、カレンダーと同様に行全体を強調表示することはできません。行を強調表示するには、やはり「数式を使用して、書式設定するセルを決定」に変更して数式を記述するしかありません。

また、複数の列を含む範囲を引数に指定することができません。したがって、この場合も同様に絶対列参照で、「=$D="ポージング"」のように設定します。

「書式ルールの編集」画面のルールのイメージ

すると、「D列」に「ポージング」の文字列があるセルの行全体が強調表示されます。

行全体が強調表示された表のイメージ

ただし、この式では「完全一致」するセルの行だけが強調表示されます。「文字列」のように「部分一致」検索をかけるには、どうすればいいでしょうか?

条件付き書式ではワイルドカードが使えない

という制約があるため、例えば「=$D1="ポージ*"」のようにワイルドカードで検索をかけてもヒットしません。例のとおり関数を併用しなければならないのです。(ワイルドカードについて詳しくは、文字列の検索と置換 を参照してください)

使用する関数は、またCOUNTIF関数式です。「=COUNTIF($D1,"ポージ*")」または「=COUNTIF($D1,"ポージ*")>=1」と記述すると、「ポージ」を含むセルの行全体が強調表示されます。

上位/下位の指定した順位までのセルを強調表示する

これもまた表を範囲指定して、「条件付き書式」ボタンの「セルの強調表示ルール」より「上位/下位ルール」を選択します。

「条件付き書式」ボタンのメニューのイメージ

ここでは「上位10項目」を選択します。すると、「上位10項目」画面が表示されます。

「上位10項目」画面のイメージ

何も「10項目」に決まっているわけではなく、上位に入る項目数を指定できるので、任意の数字に修正することができます。例えば「3」にすると、下図のように、上位3つの大きな数字が強調表示されます。

上位3位のセルが強調表示されたイメージ

単純な機能ですが、大きな表になると、並び替えをするまでもなく、手っ取り早く上位や下位の数字を探すのに役立ちます。

この場合も、行を強調表示するには「数式を使用して、書式設定するセルを決定」に変更して数式を記述するしかありませんが、この場合は数式が非常に複雑になるので、本項では割愛します。

以上で、条件付き書式については終了です。もうかなり高いレベルのスキルが身についていると思いますので、あとはいろいろな場面で応用してみてください。

更新履歴

2018年9月16日
ページを公開。

参考文献・ウェブサイト

当ページの作成にあたり、以下の文献およびウェブサイトを参考にさせていただきました。

文献
なし
サイト
なし