
画像: milindri、ゲッティイメージズ/iStock Photo
Microsoft Excelの条件付き書式は、データを更新するとすぐに書式設定を適用できる柔軟なツールです。ルールに従って書式も更新されます。簡単に適用できますが、期待通りに動作しないこともあります。期待通りに動作していないことに気づかないこともあります。
この記事では、Excelの数式ルールが、ある状況では機能するが、別の状況では機能しないケースを見ていきます。まず、4列のデータセット内の特定の値を強調表示する簡単な式から始めます。次に、同じルールをラベルセットに適用してみると、うまくいかないケースを見ていきます。
開示事項: TechRepublicは、このページで紹介されている一部の製品から手数料を受け取る場合があります。TechRepublicと著者は、この独立したレビューに対して報酬を受け取っていません。
私は(デスクトップ版の)Office 365を使用していますが、以前のバージョンでもご利用いただけます。手順を確認するには、デモ用の.xlsxファイルをダウンロードしてください。ブラウザは既存の条件付き書式ルールをサポートしますが、ブラウザで数式ルールを実装することはできません。
効果的な条件付き書式ルール
Excelで数式ルールを使ったことがあるかもしれません。実装は簡単ですが、扱いが難しい場合もあります。データセット(基本的には配列)にルールを適用すると、選択した値の書式を1つのルールで設定できます。例として、図Aに示すシンプルなデータセットで、値21以下の値をハイライト表示します。(数値21と等号演算子は、この例において任意です。)
図A

まず、Excel で書式設定するデータ (この場合は C3:F6) を選択し、次の操作を行います。
- [ホーム] タブで、[条件付き書式] ([スタイル] グループ内) をクリックし、[新しいルール] を選択します。
- 上部のペインで最後のルール (数式の使用) を選択します。
- 2番目のペインに次の式を入力します:
=C3:F6<=21 - 「書式」タブをクリックし、適用する書式を選択します。「フォント」タブの「色」ドロップダウンから赤を選択しました。
- [OK] をクリックして数式と形式 (図 A ) を確認し、[OK] をクリックすると、図 Bに示す結果が表示されます。
参照:チートシート: Windows 10 (無料 PDF) (TechRepublic)
図B

これはExcelのシンプルなルールで、おそらく皆さんも似たようなものをご自身の作業に適用したことがあるでしょう。そのままでもうまく機能しますが、対応する名前だけを強調表示し、値は強調表示したくない場合はどうすればよいでしょうか?名前にも同じように機能すると思うかもしれませんが、条件付き参照に複数の列が含まれているため、そうではありません。どうなるか見てみましょう。
参照:すべてのユーザーが習得すべき Excel のヒント 50 個(TechRepublic)
条件付き書式のモンキーレンチを追加する
条件付き書式を適用する際は、書式設定したい範囲を選択します。例えば、値ではなく、列Bの対応する名前に書式を適用したいとします。同じルールをB3:B6に適用すると、図Cに示すような結果になります。Aを見るとわかるように、期待通りに動作しません。(同じ式、C3:F6<=21を入力しました。)
図C

このルールの最大の問題は、実際に機能しているものの、期待通りに機能していないことです。前のセクションで結果をまだ見ていなかったら、この問題に気づいたでしょうか?データセットが小さい場合は気付いたかもしれませんが、大きなデータセットでは気付かないかもしれません。
これは、説明よりもスクリーンショットの方が効果的な場合の一つです。図Dは、同じ式をG3に入力し、G6にコピーした結果です。ご覧の通り、結果は「配列」、つまり各行に4つのTRUEまたはFALSE値があります。列GのTRUE値は、列Bの書式設定された値と一致します。ルールでは、これらの結果すべてを1つの列の値にまとめることはできません。これは列間のルールです。Excelは、ルール範囲の最初の列である列CのTRUE/FALSE結果を、列Bの値に適用します。
図D

もう1つの問題が明らかになったことにお気づきかもしれません。なぜ空白セルG3がTRUEを返すのでしょうか?等価演算子<=に注目してください。等価演算子を使って値を比較する場合、Excelは空白セルを0として評価します。つまり、空白セルは21以下であるということです。
この時点で、おそらく Excel では何が機能するのか疑問に思われるでしょう。
条件付き書式で論理OR演算子を使用する
前のセクションで使用した等価演算子は実装が簡単でしたが、単一列の範囲に適用すると期待どおりに動作しません。この場合の解決策はOR演算子です。列数が多い場合はルールの記述と管理が難しくなりますが、期待どおりに動作します。
OR 演算子に詳しくない場合は、次の基本事項をご確認ください。
- OR 演算子を使用すると、複数の条件を比較できます。
- いずれかの条件が TRUE と評価された場合、OR 演算子は TRUE を返します。
私たちの表現は次の通りです:
=OR(C3<=21,D3<=21,E3<=21,F3<=21)
OR演算子を使用すると、データセットを配列として表現する代わりに、データセット内の各値を明示的に比較できます。いずれかの条件がTRUEを返す場合、OR式もTRUEを返し、結果としてExcelは図Eに示すように条件付き書式を適用します。
図E

Excelの書式設定の間違いを避ける方法
動作しないものを見るのは役に立たないと思うかもしれませんが、この場合は役に立っていると思います。Excelが範囲をどのように評価するかを理解する良い練習になります。「裏側」の仕組みをより深く理解すれば、期待通りに動作しないルール、あるいはもっと悪いことに、検出されないルールを回避できるようになります。
Microsoft Officeに関するご質問をお送りください
読者の質問には可能な限りお答えしますが、必ずお答えできるとは限りません。リクエストがない限り、ファイルは送信しないでください。添付ファイル付きの初回サポートリクエストは未読のまま削除されます。ご質問を明確にするために、データのスクリーンショットを送信していただくことも可能です。お問い合わせの際は、できるだけ具体的にご記入ください。例えば、「ワークブックのトラブルシューティングを行い、問題点を修正してください」といった質問では返答がないかもしれませんが、「この数式が期待どおりの結果を返さない理由を教えていただけますか?」といった質問であれば、回答が得られるかもしれません。ご使用のアプリとバージョンを明記してください。読者サポートにあたり、TechRepublicから時間や専門知識の報酬を受け取ることはありません。また、サポートした読者から料金を請求することもありません。お問い合わせは[email protected]までお願いいたします。