目次
このチュートリアルでは、ExcelでANDとORの論理で複数のIF文を作成する方法を紹介します。 また、IFを他のExcel関数と一緒に使用する方法についても学びます。
Excel IFチュートリアルの最初のパートでは、テキスト、数字、日付、空白、非空白について、1つの条件でシンプルなIF文を作成する方法を見ました。 しかし、強力なデータ分析のためには、しばしば一度に複数の条件を評価する必要があります。 以下の式の例では、これを行う最も効果的な方法を説明します。
複数の条件を指定してIF関数を使用する方法
要するに、2つのタイプがあるのです。 AND / ORロジックに基づく複数条件のIF式 その結果、IF式の論理テストでは、これらの関数のいずれかを使用する必要があります。
- AND関数 - 以下の場合に真を返します。 ぜんじょうけん を満たした場合、FALSE を返す。
- OR関数 - 以下の場合に真を返します。 一律条件 を満たす場合は FALSE を、それ以外の場合は
この点をよりよく説明するために、実際の数式の例を調査してみよう。
Excel IFステートメントで複数の条件(ANDロジック)を指定する。
2つ以上の条件を持つExcelのIFの一般的な計算式はこうです。
IF(AND)(アンド) 条件1 , 条件2 , ...), value_if_true, value_if_false).人間の言葉に置き換えると、「条件1が真で、かつ条件2が真なら、返す」という式になります。 value_if_true ; else return value_if_false .
B列とC列に2つのテストの点数が記載された表があるとします。最終試験に合格するためには、両方の点数が50点以上である必要があります。
論理テストでは、次のようなAND文を使用します: AND(B2>50, C2>50)
両方の条件が真であれば、数式は「合格」を返し、いずれかの条件が偽であれば、「不合格」を返します。
=IF(AND(B2>50, B2>50), "合格", "不合格")
以下のスクリーンショットは、私たちのExcel IF /AND式が正しく機能していることを証明しています。
同じように、ExcelのIF関数で、複数の 実行条件 .
例えば、B2とC2の両方が50より大きい場合は「良い」、そうでない場合は「悪い」と出力する場合、数式は次のようになります。
=IF(AND(B2="pass", C2="pass")), "Good!", "Bad")
重要!AND関数のチェック ぜんじょうけん 多くのプログラミング言語では、前のテストが FALSE を返した場合は、後の条件はテストされないからです。
実際には、この特異性のために、一見正しいIF文がエラーになることがある。 例えば、以下の数式は、セルA2が0に等しい場合、#DIV/0!(「ゼロで割る」エラー)を返す。
=IF(AND(A20, (1/A2)>0.5), "Good", "Bad")
これを避けるには、IF関数をネストして使用する必要があります。
=IF(A20, IF((1/A2)>0.5, "良い", "悪い"), "悪い")
詳しくは、「ExcelのIF AND式」をご覧ください。
Excel IF関数で複数条件(ORロジック)を指定する方法
もし、あることをするために 任意条件 を満たした場合、それ以外の場合は、このIFとOR関数の組み合わせで行います。
IF(OR)(イフ) 条件1 , 条件2 , ...), value_if_true, value_if_false).前述の IF / AND 式との違いは、指定した条件のいずれかが真であれば、Excel は TRUE を返すという点です。
そこで、先ほどの式で、ANDの代わりにORを使用するとします。
=IF(OR(B2>50, B2>50), "合格", "不合格")
このような条件であれば、生徒たちは最終試験に合格する可能性が高くなります(イヴェットは特に不運にも1点差で不合格でした)。
ヒント テキストを含む複数のIF文 で、1つのセルの値をOR論理でテストする(つまり、セルは「this」にも「that」にもなる)と、配列定数を使ってよりコンパクトな数式を構築することができます。
例えば、セルB2が「納品済み」または「支払い済み」の場合に販売を「終了」とする場合、数式は次のようになります。
=IF(OR(B2={"delivered", "paid"}), "Closed", "")
その他の計算式の例は、ExcelのIF OR関数で見ることができます。
IFと複数のAND & OR文
もし、複数の条件を組み合わせて評価する必要がある場合は、AND & OR関数の両方を同時に使用する必要があります。
サンプルの表で、試験結果を確認するための基準が以下のようにあったとします。
- 条件1:試験1>50と試験2>50
- 条件2:試験1>40、試験2>60
どちらかの条件を満たした場合、期末試験は合格とします。
一見、少しトリッキーな式に見えますが、実はそうではありません!上記の条件をそれぞれAND文で表現し、OR関数でネストするだけです(両方の条件を満たす必要はないので、どちらかで十分です)。
OR(AND(B2>50, C2>50), AND(B2>40, C2>60))
そして,IFの論理テストにOR関数を使用し,目的の value_if_true と value_if_false その結果、複数の AND / OR 条件を持つ次のような IF 式が得られます。
=IF(OR(AND(B2>50, C2>50), AND(B2>40, C2>60), "合格", "不合格")
下のスクリーンショットは、計算式が正しくできていることを示すものです。
もちろん、IF式で使用するAND/OR関数は2つだけとは限りません。 ビジネスロジックが必要とする数だけ使用することができます。
- Excel 2007以降では、引数は255個まで、IF式の長さの合計は8,192文字までとなっています。
- Excel 2003以下では、引数は30個まで、IF式の長さの合計は1,024文字までです。
複数の論理テストをチェックするIF文のネスト
一つの数式で複数の論理テストを評価したい場合、複数の関数を互いに入れ子にすることができます。 このような関数は、以下のように呼ばれます。 ネストされたIF関数 論理テストの結果に応じて異なる値を返したい場合に、特に有効です。
ここでは典型的な例として、生徒の成果を "認定 "するとします。 良い ", " 満足 " と " 悪い " を以下の点数で評価しました。
- 良好:60以上(>=60)
- 満足:40以上60未満(>40以上<60未満)
- 悪い:40以下(<=40)
数式を書く前に、ネストする関数の順番を考えてください。 Excel は、論理テストを数式に現れた順に評価します。 ある条件が TRUE と評価されると、それ以降の条件はテストされません。つまり、数式は最初の TRUE 結果の後で停止します。
この場合、関数は大きいものから小さいものへと並べられます。
=IF(B2>=60, "Good", IF(B2>40, "Satisfactory", "Poor")))
もちろん、必要に応じてより多くの関数をネストすることができます(最近のバージョンでは最大64個)。
詳しくは、「Excelで複数のIF文を入れ子にして使用する方法」をご覧ください。
Excel IF 配列式で複数の条件を指定する
ExcelのIFで複数の条件をテストさせるもう一つの方法は、配列式を使用することです。
ANDロジックで条件を評価する場合は、アスタリスクを使用します。
IF( 条件1 ) * ( 条件2 ) * ..., value_if_true, value_if_false)ORロジックで条件を試す場合は、プラス記号を使用します。
IF( 条件1 ) + ( 条件2 ) + ..., value_if_true, value_if_false).CtrlキーとShiftキーとEnterキーを同時に押すと、正しく数式が完成します。 Excel 365とExcel 2021では、動的配列に対応しているため、通常の数式としても機能します。
例えば、B2とC2の両方が50より大きい場合に「合格」を得るには、次のような計算式になります。
=IF((B2>50) * (C2>50), "合格", "不合格")
私のExcel 365では、通常の数式で問題なく動作します(上のスクリーンショットをご覧ください)。 Excel 2019以下では、Ctrl + Shift + Enterのショートカットで、配列数式にすることを忘れないでください。
複数の条件をOR論理で評価する場合は、以下の式になります。
=IF((B2>50) + (C2>50), "合格", "不合格")
IFと他の機能を併用する
ここでは、IFを他のExcel関数と組み合わせて使用する方法と、それによって得られるメリットについて説明します。
例1.VLOOKUPで#N/Aエラーが発生した場合
VLOOKUPや他のルックアップ関数は、何かを見つけることができなかった場合、#N/Aエラーを返します。 テーブルをより美しく見せるために、#N/Aの場合はゼロ、空白、または特定のテキストを返すことができます。
if(isna(vlookup(...)), 値_if_na , vlookup(...))例えば、こんな感じです。
N/Aの場合は0を返します。
E1 のルックアップ値が見つからない場合、数式は 0 を返す。
=if(isna(vlookup(e1, a2:b10, 2,false )), 0, vlookup(e1, a2:b10, 2, false))
N/Aの場合、空白を返します。
ルックアップ値が見つからない場合、数式は何も返しません(空文字列)。
=if(isna(vlookup(e1, a2:b10, 2,false )), "", vlookup(e1, a2:b10, 2, false))
N/Aの場合、特定のテキストを返します。
ルックアップ値が見つからない場合、数式は特定のテキストを返します。
=IF(ISNA(VLOOKUP(E1, A2:B10, 2,FALSE )), "Not found", VLOOKUP(E1, A2:B10, 2, FALSE))
その他の計算式の例については、ExcelのIF文によるVLOOKUPをご覧ください。
例2.SUM、AVERAGE、MIN、MAX関数を使ったIF
特定の条件に基づいてセルの値を合計するために、ExcelにはSUMIFとSUMIFS関数があります。
状況によっては、ビジネスロジックでIFの論理テストにSUM関数を含める必要があります。 たとえば、B2とC2の値の合計によって異なるテキストラベルを返すには、次のような式になります。
=IF(SUM(B2:C2)>130, "Good", IF(SUM(B2:C2)>110, "Satisfactory", "Poor"))。
合計が130より大きい場合は「良好」、110より大きい場合は「満足」、110以下の場合は「不良」となります。
同様に、IFの論理テストにAVERAGE関数を埋め込んで、平均点によって異なるラベルを返すことができます。
=IF(AVERAGE(B2:C2)>65, "Good", IF(AVERAGE(B2:C2)>55, "Satisfactory", "Poor"))
総得点がD列にあると仮定すると、MAX関数とMIN関数の助けを借りて、最高値と最低値を特定することができます。
=IF(D2=MAX($D$2:$D$10), "最高の結果", "")
=IF(D2=MAX($D$2:$D$10), "最高の結果", "")
1つの列に両方のラベルを表示させるには、上記の関数を1つずつ入れ子にしてください。
=IF(D2=MAX($D$2:$D$10), "Best result", IF(D2=MIN($D$2:$D$10), "Worst result", ""))
同様に、IFをカスタム関数と一緒に使うこともできます。 例えば、GetCellColorやGetCellFontColorと組み合わせて、セルの色に基づいて異なる結果を返すことができます。
また、Excelには条件に基づいてデータを計算するための関数が多数用意されています。 詳しい計算式の例については、以下のチュートリアルをご覧ください。
- COUNTIF - 条件を満たすセルをカウントする
- COUNTIFS - 複数の基準でセルをカウントします。
- SUMIF - 条件付きでセルを合計する
- SUMIFS - 複数の条件を持つセルの合計を表示します。
例3.ISNUMBER、ISTEXT、ISBLANKを使ったIF
テキスト、数値、空白セルを識別するために、Microsoft ExcelはISTEXT、ISNUMBER、ISBLANKといった特殊な関数を提供しています。 3つのIF文の入れ子の論理テストにそれらを配置することによって、すべての異なるデータ型を一度に識別することができます。
=IF(ISTEXT(A2), "Text", IF(ISNUMBER(A2), "Number", IF(ISBLANK(A2), "Blank", "")))
例4.IFとCONCATENATE
IFの結果と何らかのテキストを1つのセルに出力するには、CONCATENATEまたはCONCAT(Excel 2016 - 365の場合)とIF関数を併用します。 例えば、以下のような感じです。
=CONCATENATE("You performed ", IF(B1>100, "fantastic!", IF(B1>50, "well", "poor")))
=CONCAT("You performed ", IF(B1>100, "fantastic!", IF(B1>50, "well", "poor")))
下のスクリーンショットを見れば、この数式が何をするものなのか、ほとんど説明する必要はないでしょう。
ExcelのIF ISERROR / ISNA式
Excelの最新バージョンでは、エラーをトラップして別の計算または定義済みの値に置き換える特別な関数、IFERROR(Excel 2007以降)およびIFNA(Excel 2013以降)があります。 Excelの以前のバージョンでは、代わりにIF ISERRORおよびIF ISNAの組み合わせを使用することができます。
IFERRORとISERRORは、#VALUE!, #N/A, #NAME?, #REF!, #NUM!, #DIV/0!, #NULL!など、Excelで起こりうるすべてのエラーを処理します。 IFNAとISNAは#N/Aエラーだけに特化しているのに対して。
例えば、「ゼロで割る」エラー(#DIV/0!)をカスタムテキストに置き換えるには、次の式を使用します。
=if(iserror(a2/b2), "n/a", a2/b2)
以上、ExcelのIF関数の使い方についてでした。 読んでくださってありがとうございました!また来週のブログでお会いしましょう
練習用ワークブック(ダウンロード
Excel IF 複数条件 - 例 (.xlsx ファイル)