ExcelのNested IF - 複数の条件を持つ数式

  • これを共有
Michael Brown

このチュートリアルでは、Excelで複数のIFを使用する方法を説明し、最も一般的なタスクのためのいくつかのネストされたIf式の例を提供します。

最もよく使うExcel関数は何かと聞かれたら、あなたは何と答えますか? ほとんどの場合、ExcelのIF関数でしょう。 単一の条件をテストする通常のIf式は、非常にわかりやすく簡単に書けます。 しかし、複数の条件でより複雑な論理テストが必要なデータではどうでしょうか。 この場合、一つの数式に複数のIF関数を含めることができ、この複数のIf関数が、ExcelのIF関数に含まれます。という文があります。 エクセルのネストIF ネストされたIf文の最大の利点は、複数の条件をチェックし、その結果に応じて異なる値を返すことを、すべて1つの数式で実現できることです。

Microsoft Excelには限界があります。 入れ子のIFのレベル Excel 2003以下では7段階まででしたが、Excel 2007以降では1つの数式に64個までのIF関数を入れ子にすることができます。

このチュートリアルでは、ExcelのネストされたIfの例と、その構文とロジックの詳細について説明します。

    例1.古典的な入れ子式IF式

    ここでは、複数の条件を持つExcelのIfの典型的な例を紹介します。 A列に学生のリスト、B列に試験の成績があり、以下の条件で成績を分類するとします。

    • 優秀:249点以上
    • 良好:249以上200未満、以下同じ
    • 満足:199以上150未満(含む
    • 貧乏:150以下

    そして今度は、上記の条件をもとにネストされたIF関数を書いてみましょう。 関数は、最も重要な条件から始めて、できるだけシンプルにするのが良いとされています。 私たちのExcelネストされたIF式は次のようになります。

    =IF(B2>249, "Excellent", IF(B2>=200, "Good", IF(B2>150, "Satisfactory", "Poor")))

    そして、その通りに機能する。

    ExcelのネストされたIFロジックを理解する

    ExcelのマルチIfで頭がおかしくなりそうだという声も聞きますが :) 違う角度から見てみてください。

    この数式がExcelに実際に行うのは 論理テスト で指定された値を返します。 value_if_true 引数で、1番目のIf関数の条件を満たさない場合、2番目のIf文のテストを行い、以下同様とする。

    IF( 照合 B2>=249。 が真であれば - を返します。 "エクセレント "です。 でないと

    IF( 照合 B2>=200。 が真であれば - を返します。 "良い "です。 でないと

    IF( 照合 B2>150。 が真であれば - を返します。 "Satisfactory "であること。 を偽ると

    return "Poor"))

    例2.算術演算を伴う複数If

    指定された数量によって単価が変わるので、特定のセルに入力された任意の数量の合計金額を計算する数式を作成したい。 つまり、数式は複数の条件をチェックし、指定された数量がどの数量範囲に入るかによって異なる計算を行う必要がある。

    単位 数量 1台あたりの価格
    1~10 $20
    11~19歳 $18
    20~49歳 $16
    50〜100 $13
    101以上 $12

    この作業は、複数のIF関数を使うことでも実現できます。 ロジックは上記の例と同じですが、唯一の違いは、指定した数量に入れ子になったIFが返す値(つまり、対応する単位当たりの価格)を乗じることです。

    ユーザーがセルB8に数量を入力したと仮定すると、計算式は次のようになる。

    =B8*IF(B8>=101, 12, IF(B8>=50, 13, IF(B8>=20, 16, IF( B8>=11, 18, IF(B8>=1, 20, ""))) ) ))

    そして、結果はこのような感じになります。

    この例では、一般的なアプローチを示しているだけで、特定のタスクに応じて、このネストされたIf関数を簡単にカスタマイズできることはご理解いただけると思います。

    例えば、価格を計算式にハードコーディングする代わりに、その値を含むセル(セルB2~B6)を参照することで、ユーザーは計算式を更新することなくソースデータを編集することができます。

    =B8*IF(B8>=101,B6, IF(B8>=50, B5, IF(B8>=20, B4, IF( B8>=11, B3, IF(B8>=1, B2, "")))))

    あるいは、量の範囲の上限、下限、またはその両方を固定するIF関数(複数可)を追加したい場合もあります。 量が範囲外の場合、数式は「範囲外」のメッセージを表示します。 たとえば、次のようになります。

    =IF(OR(B8>200,B8=101,12, IF(B8>=50, 13, IF(B8>=20, 16, IF( B8>=11, 18, IF(B8>=1, 20, "")))) ))

    上記のネストされた IF 式は、すべてのバージョンの Excel で動作します。 Excel 365 および Excel 2021 では、IFS 関数を使用して同じ目的で使用することもできます。

    配列式に慣れたExcel上級者なら、前述のIF関数のネストと基本的に同じことをするこの式を使うことができます。 配列式は理解するのも書くのもはるかに難しいのですが、議論の余地のない利点があります。を使えば、ユーザーが既存の条件を変更したり、新しい条件を追加したりしても、数式内の1つの範囲参照を更新するだけで済み、より柔軟に対応できるようになります。

    ExcelのネストされたIF - ヒントとトリック

    今見ていただいたように、Excelで複数のIFを使用することは、ロケット科学ではありません。 以下のヒントは、ネストされたIF式を改善し、よくある間違いを防止するのに役立ちます。

    ネストされたIFの制限

    Excel 2007 - Excel 365では、最大64個のIF関数をネストできます。 Excel 2003以下の古いバージョンでは、最大7個のIF関数をネストできます。 しかし、1つの数式に多くのIFをネストできるという事実は、ネストすべきことを意味しません。レベルが増えるごとに、数式は理解やトラブルシューティングがより困難になることを覚えておいてください。 数式のネストレベルが多すぎると、次のような可能性が生じます。のいずれかを使用して最適化することをお勧めします。

    ネストされたIF関数の順番が重要

    Excel のネストされた IF 関数は、論理テストを数式に現れる順に評価し、条件の 1 つが TRUE と評価されるとすぐに、後続の条件はテストされません。 つまり、数式は最初の TRUE 結果の後で停止します。

    B2が274の場合、以下のネストされたIF式は、最初の論理テスト(B2>249)を評価し、この論理テストがTRUEなので「Excellent」を返します。

    =IF(B2>249, "Excellent", IF(B2>=200, "Good", IF(B2>150, "Satisfactory", "Poor")))

    では、IF関数の順番を逆にしてみましょう。

    =IF(B2>150, "満足", IF(B2>200, "良好", IF(B2>249, "優秀", "不良")))

    この式は、最初の条件をテストし、274は150より大きいので、この論理テストの結果もTRUEです。 その結果、この式は他の条件をテストせずに「Satisfactory」を返します。

    IF関数の順番を変えると結果が変わるのはご存知の通りです。

    数式ロジックを評価する

    ネストされたIF式の論理的な流れを順を追って見るには、"Evaluate Formula "機能を使ってください。 タブで フォーミュラ・オーディティング 下線部が現在評価されている部分です。 評価する ボタンをクリックすると、評価プロセスの全ステップが表示されます。

    例えば、以下のスクリーンショットに示されたネストされたIF式の最初の論理テストの評価は、次のようになります: B2>249; 274>249; TRUE; Excellent.

    ネストされたIF関数の括弧のバランスをとる

    Excelで入れ子にしたIFの主な課題の1つは、括弧のペアの一致です。 括弧が一致しないと、数式は機能しません。幸い、Microsoft Excelには、数式を編集するときに括弧のバランスをとるのに役立つ機能がいくつか用意されています。

    • 複数の括弧がある場合、括弧のペアは異なる色で影が付けられ、開始括弧が終了括弧と一致するようになります。
    • 括弧を閉じると、一致するペアが短くハイライトされます。 矢印キーを使って数式を移動しても、同じように太字になったり、「ちらつき」たりします。

    詳しくは、「Excelの計算式で括弧のペアを一致させる」をご覧ください。

    文字と数字を区別して扱う

    ネストされたIF式の論理テストを構築する際、テキストと数値は異なる扱いをすることを忘れないようにしましょう。テキストの値は常に二重引用符で囲み、数値は決して引用符で囲んではいけません。

    そうですね。 =IF(B2>249, "Excellent",...)

    間違っている。 =IF(B2>"249", "Excellent",…)

    B2の値が249より大きくても、2番目の式の論理テストはFALSEを返す。 なぜかというと、249は数字、249は数字文字列で、それぞれ異なるものだからである。

    ネストしたIFを読みやすくするため、スペースや改行を追加する

    複数のIFレベルが入れ子になっている数式を作る場合、異なるIF関数をスペースや改行で区切ることで、数式の論理を明確にすることができます。 Excelは数式内の余分なスペースを気にしないので、こじつけを気にする必要はないかもしれません。

    数式内のある部分を次の行に移動するには、改行したい場所をクリックして、Alt + Enter を押します。 その後、数式バーを必要なだけ展開すると、ネストした IF 式がより分かりやすくなっていることが分かります。

    ExcelのネストされたIFの代わりとなるもの

    Excel 2003 およびそれ以前のバージョンでは、IF 関数のネストは 7 つまでという制限を回避し、数式をよりコンパクトかつ高速にするために、以下の Excel IF 関数のネストに代わるものの使用を検討してください。

    1. 複数の条件をテストし、その結果に基づいて異なる値を返すには、ネストされたIFの代わりにCHOOSE関数を使用します。
    2. 参照表を作成し、この例のように近似一致でVLOOKUPを使用します:ExcelのネストされたIFの代わりにVLOOKUP。
    3. IFと論理関数OR/ANDの使い分けは、以下の例で示したとおりです。
    4. この例のように、配列式を使用します。
    5. CONCATENATE関数または連結演算子(&)を使用して、複数のIF文を結合します。 計算式の例は、こちらでご覧になれます。
    6. Excel の経験豊富なユーザーにとっては、複数の IF 関数をネストして使用する代わりに、VBA を使用してカスタム ワークシート関数を作成するのが最適かもしれません。

    以上、エクセルで複数の条件を指定してIf式を使う方法でした。 読んでいただきありがとうございました!来週のブログもよろしくお願いします。

    練習用ワークブック(ダウンロード

    ネストされたIf Excelステートメント (.xlsx ファイル)

    Michael Brown は、ソフトウェア ツールを使用して複雑なプロセスを簡素化することに情熱を注ぐ熱心なテクノロジー愛好家です。テクノロジー業界で 10 年以上の経験があり、Microsoft Excel と Outlook、さらに Google Sheets と Docs のスキルを磨いてきました。 Michael のブログは、彼の知識と専門知識を他の人と共有することに特化しており、生産性と効率を向上させるためのわかりやすいヒントとチュートリアルを提供しています。経験豊富なプロフェッショナルであろうと初心者であろうと、Michael のブログでは、これらの重要なソフトウェア ツールを最大限に活用するための貴重な洞察と実践的なアドバイスを提供しています。