Excelの条件付き書式は、条件を決めるセルを複数にできるのか?
Excelの条件付き書式って、アクセス解析のときとか、結構、使い勝手がいいわねぇ、と思っている見習。今日は、ちょっと条件付き書式にトライです。(Excel2010を使用)
なんだかんだと使うことが多い、条件付き書式、最近、むむっと考え込んでしまうことがありました。そんなワケで、ビボー録。
それは、「Excelの条件付き書式は、条件を決めるセルを複数にできるのか?」ということ。日本語使用能力に難ありな見習の表現、なんと分かりやすいことでしょう。とにかく、こんなことがしたかったのです。
6人がテストを受けました。それも似たような試験をくり返し、3回。で、その3回の中で、一番高い得点を取ったのは誰?というのを、明確にしたい!ここでは、2回目のテストで95点をたたき出した石川さんの行にセルの背景に色がつけば、分かりやすいでしょ。って風です。
★条件付き書式のよくある使い方
ととと。条件付き書式って、「数式を使用して、書式設定するセルを決定」(2007以降、2010、2013などのバージョンの場合。2003バージョンなどだと、「数式が」という項目)を使うと、自セル以外のセルに入っている情報を元に、書式を決められたりするので、便利だったりします。
たとえば、こんな風。
英語のテストを受けた6人の中で、一番成績の良かった人の行すべてに色を塗ってみました。
この手順は…。
まず、書式設定したいセルを範囲選択します。
その状態で、「ホーム」タブ⇒「スタイル」⇒「条件付き書式」⇒「新しいルール」と選んでいきます。
すると「新しい書式ルール」ダイアログボックスが出るので、「ルールの種類を選択してください」の中の「数式を使用して、書式設定するセルを決定」をクリックした後、「ルールの内容を編集してください」の「次の数式を満たす場合に値を書式設定」のところに、数式を書き込んでいきます。
このときのポイントは、
- セル番地を入力するときは、マウスで直接セルを範囲選択すると、わざわざタイピングしなくてもセル番地が自動入力されること。
- セル番地の記述方法は、書式設定する(さきほど範囲選択した)セルの一番左上のキモチになって、絶対参照、相対参照、複合参照を見極めること。
とくに、絶対参照、相対参照、複合参照のあたりは、結構、キモかも。条件付き書式は、なんだかんだ言っても、「書式」の機能なワケなので、一番左上のセルに書式設定したあと、Excelが自動的に残りのセルに書式をコピー貼り付けしていると考えると、ピンとくるんじゃないかと。「絶対参照、相対参照、複合参照」って、要は、入力した後に、コピー貼り付けするときに、ポイントになるところなので…。もごもご(お茶を濁す音)。
ここの場合、A2セルのキモチになって、B2が、B2:B7の中で最高点なら、書式設定(背景に色を塗るなど)してほしいから、=$B2=max($B$2:$B$7)となります。ここで、B2の$マークの付く位置は、B2に書式をコピーしたときのことを考えると、B列は動いてほしくないので、Bの前に$がつく。けど、3行目に書式をコピーしたときのことを考えると、2の前には$マークが付くと困る。だから、$B2。
で、この数式のなかにも、関数が使えちゃう!
だから、最大値を求めるMAX関数が登場。=max($B$2:$B$7)の意味は、B2:B7の中での最大値と同じ値、という意味。どーして$B$2:$B$7というように絶対参照になっているかと言うと、テストの点数が入力されている範囲は、B2:B7。この範囲は、コピーしたときに、動いたら、絶対、困る。だから、絶対参照なり。
というよう数式を入力したら、「書式」をクリックして、適宜、書式設定をします。この「書式」をクリックすると「セルの書式設定」ダイアログボックスが出現するので、たとえば、塗りつぶしを設定したりできます。
今回は、見習のスキな黄緑色の塗りつぶしを設定しました。
後は、OKをクリックして、決定するだけ。
★じゃぁ、条件を決めるセルを複数にできるのか?
ではでは、早速、やってみます。
まずは手順どおり、書式を設定したいセルを範囲選択します。
「ホーム」タブ⇒「スタイル」⇒「条件付き書式」⇒「新しいルール」と選んで…。
「新しい書式ルール」ダイアログボックスにたどり着きます。
「ルールの種類を選択してください」の中の「数式を使用して、書式設定するセルを決定」をクリックした後、「ルールの内容を編集してください」の「次の数式を満たす場合に値を書式設定」のところに、$B2:$D2=max($B$2:$D$2)と入力。あとは、書式を設定します。
そして、OKをクリックしていくと…。
ありま、ダメだわ。
別のデータを入れたり、数式中に使う関数に別のものを使ってみたり、確かめてみたのですが、無理っぽい。ゼンゼン、書式が設定できていなかったり、範囲選択した条件範囲の一番左列のみを条件範囲として認識したり、なんだか、ワケがわからない、わけのきよまろ状態でした…。だれか、タスケテ。
Excelの条件付き書式は、条件を決めるセルを複数にできなっぽそう…。
★じゃあ、なんとかしとこう!
根本解決ではないけど、どうしても、条件を決めるセルが複数になってしまうときは、一回、列を追加して、計算させて、条件を検査させる列を1列にしてあげるしかなさそう。
こんな風に、E列に最高得点を出力しておきます。これはE2に=max(B2:D2)と入力して、オートフィルすれば、OK。
で、条件付き書式の作業に入ります。あとは、最初の基本パターンと同じ。
書式設定したいセルを範囲選択して、「ホーム」タブ⇒「スタイル」⇒「条件付き書式」⇒「新しいルール」と選んで…。
「新しい書式ルール」ダイアログボックスが出たら…。
「ルールの種類を選択してください」の中の「数式を使用して、書式設定するセルを決定」をクリックした後、「ルールの内容を編集してください」の「次の数式を満たす場合に値を書式設定」のところに、数式を書き込んでいきます。
数式は、=$2=max($E$2:$E$7)です。あとは、書式を設定して、OKをクリックしていくだけ。
とりあえず、ほしいカタチになりました。ちょっとE列いらないし!ということなら、E列を非表示にすれば、いいだけだし…。
★だいだいのバージョンで同じみたい…。
なんか、悲しい結果に終わってしまいました。「ちょっと、Excelさんってばぁ~」というキモチになったので、Excelの他のバージョンでも、チェックしてみました。Excel2003、2007、2010、2013のどれでも、おんなじ結果で、ダメみたいです。
ちょっとトホホ気分の見習ですが、気を取り直して、ゴゴゴゴゴゴォ~。
★追記★数式を工夫したら、できた!
この記事を公開したら、びっくり。Facebookのお友達が、チカラを貸してくれました。そして、解決策を見つけてくれたのです。
解決法とは…。
条件の中を複数のセル範囲にすることはできないけど、数式の中で、関数を組み合わせて、全部の条件を満たすようにしちゃえば、いいじゃん!ってなもの。
ではでは、やってみます。
まずは、条件付き書式を設定したいセル範囲A2:D6を選択します。「ホーム」タブ⇒「スタイル」⇒「条件付き書式」⇒「新しいルール」と選んで…。
「新しい書式ルール」ダイアログボックスにたどり着きます。
ホント、ここまで、さっきまでと一緒。
「ルールの種類を選択してください」の中の「数式を使用して、書式設定するセルを決定」をクリックした後、「ルールの内容を編集してください」の「次の数式を満たす場合に値を書式設定」のところに入力する数式。ここを工夫すれば、いい!
- =OR($B2=MAX($B$2:$D$7),$C2=MAX($B$2:$D$7),$D2=MAX($B$2:$D$7))
- =MAX($B2:$D2)=MAX($B$2:$D$7)
- =RANK(MAX($B2:$D2),$B$2:$D$7)=1
今回のような場合だと、この3つのどれでもOKです。あとは、書式を設定するだけ。どれでやっても、こんな風になります。
要は、どんな数式を思いつけるか、ということかしらん。
とくに、1番目のは、汎用性があるかも。
=OR(条件1,条件2,条件3,条件4)
というように、列の数だけORの中の引数を入れて、順繰りに条件を見ていく。そして引数のどれかが該当したら、書式を設定する。という風に、考えれば、結構、どんなのでも行けそうです。
たとえば、こんなのも、アリですよね。
進捗管理で、それぞれのチェックポイントの日にちが本日を過ぎていたら、その商品の行に書式を設定するとか。
このとき「次の数式を満たす場合に値を書式設定」のところに入力する数式は、
=OR($B2<=TODAY(),$C2<=TODAY(),$D2<=TODAY())
なんていうのが、よさそう。
★結論
条件を決めるセルを複数にしたいときは、セルの列数だけORを使って条件をつなげちゃえば行ける!
- 条件付き書式を設定したいセル範囲を選択して、「ホーム」タブ⇒「スタイル」⇒「条件付き書式」⇒「新しいルール」と選んで…。
- 「新しい書式ルール」ダイアログボックスへ…。
- 「ルールの種類を選択してください」の中の「数式を使用して、書式設定するセルを決定」をクリックした後、「ルールの内容を編集してください」の「次の数式を満たす場合に値を書式設定」のところに入力する数式を、=OR(条件1,条件2,条件3,条件4)にする。
- そして、書式を設定する。
これでOKです。やったー。とっても、とっても嬉しい見習です。
見習にチカラを貸してくれたFacebookのお友達、ホント、ありがとうです!それにしても、Facebook、スゴイなぁ…。