条件判断の使い方

単純条件や複合条件の書き方を紹介します。
プログラム的ですが....   「判断、分岐、繰り返し」というのはプログラムの基本的な構成要素です。
Excelの数式/関数でもある程度の「判断、分岐」の処理が可能です。
「繰り返し」については数式内での「繰り返し」は難しいかも知れませんが、元々Excelは大量な「行」について各行について数式を埋め込めるわけですから、 各行の「繰り返し」の中で「判断、分岐」を行なうことは可能と考えることもできます。



このページではまず「判断、分岐」を単純なサンプルで見てみましょう。





単純な判断、分岐
「判断、分岐」とは単純なケースでは、「もし○○だったら、□□、そうでなければ△△」といったことを数式で具現化させるものです。
この「□□」「△△」は単に「値」だったり、「処理(数式)」だったりしますが、ここでは単に固定の「値」としてみます。

IF関数サンプル①
(画像をクリックすると、このページのサンプルがダウンロードできます)
03_IF1N.xlsx」ブックの「単純判断1」シートでは、「値(B2セル)」の値を変えてみると、 「1」の時だけ「判定(D2セル)」が「正解」になります。
ここでは「IF関数」を使います。数式は、

 =IF($B$2=1,"正解","不正解")
このようになります。



関数概略説明
 IF関数  比較判断を行ない、肯定時と否定時に分けます。引数は以下の通りです。
 ① 比較判断式
 ② 肯定時の値(または処置式)
 ③ 否定時の値(または処置式)

上のサンプルの「そうでなければ△△」のところにもう一つ判断を加えてみます。

IF関数サンプル②

03_IF1N.xlsx」ブックの「単純判断2」シートでは、「値(B2セル)」の値を変えてみると、 「1」と「2」の時に「判定(D2セル)」が「正解」になります。
ここでも「IF関数」を使います。数式は、

 =IF($B$2=1,"正解",IF($B$2=2,"正解","不正解"))
このようになり、「IF関数」が2回出てきます。
IF関数」には3個の引数がありますが、1行で書かれた数式の中での関係性が判りにくい時は改行を入れて、引数の桁位置を揃えましょう。

 =IF($B$2=1
    ,"正解"
    ,IF($B$2=2
       ,"正解"
       ,"不正解"
       )
    )
このように関数の次の「(」、各引数の前の「,」、関数の終了の「)」が縦に揃うようにさせると、 引数と関数の関係性が判りやすくなります。



ここでは「IF関数」を重ね合わせる方法にしましたが、他の方法もあります。
上の数式では「正解」が2回発生しますが、「値が12だったら」を具現化させるなら、 「OR関数」の方が良いかも知れません。

 =IF(OR($B$2=1,$B$2=2),"正解","不正解")
こうすれば「正解」は1回になり、見やすい式になったと思います。 「OR関数」は次のサンプルで説明します。

OR条件」判断
どちらかが」や「どれかが」という条件を数式にします。

IF関数サンプル③

03_IF1N.xlsx」ブックの「OR条件」シートでは、B列に「値」セルが2個あります。 値を変えてみると、どちらかが「1」の時に「判定(D2セル)」が「正解」になります。
ここでは「IF関数」の中で「OR関数」を使います。数式は、

 =IF(OR($B$2=1,$B$4=1),"正解","不正解")
このようになります。



関数概略説明
 OR関数  OR関数は、いずれかの引数が TRUEと評価された場合は TRUEを返し、すべての引数が FALSEと評価された場合は FALSEを返します。 引数は複数の論理式です。
難しい説明になりました。「TRUE」「FALSE」は初心者では理解しにくいかも知れません。
TRUE」「FALSE」というのは日本語では「正」「誤」とか「肯定」「否定」です。 どちらにもならない結果はありません。



実験してみましょう。数式バーで上の数式の「OR($B$2=1,$B$2=2)」の部分だけをコピーして、先頭に「=」を付けて、どこか未使用のセルに書き込みます。 これで「OR関数」の結果が直接セル上に表示されます。

IF関数サンプル③補足

ヘルプ等の説明の通り、確かに「TRUE」「FALSE」になることが確認できたと思います。 こういった論理関数は数式の先頭で使われることがないので、既に数式を利用されている方でも実際にシート上で「TRUE」「FALSE」の文字を見ることはあまり無いと思います。

AND条件」判断
続いて「両方とも」や「全部が」という条件を数式にします。

IF関数サンプル④

03_IF1N.xlsx」ブックの「AND条件」シートでは、B列に「値」セルが2個あります。 値を変えてみると、両方とも「1」の時に「判定(D2セル)」が「正解」になります。
ここでは「IF関数」の中で「AND関数」を使います。数式は、

 =IF(AND($B$2=1,$B$4=1),"正解","不正解")
このようになります。



関数概略説明
 AND関数  AND関数は、全ての引数が TRUEと評価された場合は TRUEを返し、1つ以上の引数が FALSEと評価された場合は FALSEを返します。 引数は複数の論理式です。



TRUE」「FALSE」については上の「OR関数」の後半をご覧下さい。

「否定条件」判断
考えてみて下さい。「OR関数」の裏返しが「AND関数」ということにはなりません。



OR条件」で説明した「どちらかが」の裏返しは、「両方とも」ではなく「どちらも~でない」であるはずです。
OR条件」で説明した数式は、

 =IF(OR($B$2=1,$B$4=1),"正解","不正解")
これでしたが、この「裏返し」は、

 =IF(AND($B$2<>1,$B$4<>1),"正解","不正解")
になるはずです。 ※「<>」は「不等号」です。
OR条件」の実験で説明したように欄外のセルで「=AND($B$2<>1,$B$2<>2)」を試してみて下さい。

IF関数サンプル⑤

OR条件」の「判定」が「不正解」の時に「TRUE」になれば正しく「裏返し」になったわけです。



あまり利用しないかも知れませんが「裏返し」には、「NOT関数」があります。
先ほどの近所の欄外のセルに「=NOT(OR($B$2=1,$B$2=2))」と入力すれば、同じ結果になります。



関数概略説明
 NOT関数  NOT関数は、引数の値を反転させます。 引数は元の論理式です。

多分岐判断
ここまでの説明では判断要素は「OR」「AND」等を使って複数指定できましたが、「分岐」としては「正」「誤」の2つだけでした。
そこで、3つ以上に分岐させる例を挙げてみます。学校のテスト点数から成績の評価(ランク)を導き出すような想定です。
サンプルは「03_IFS1N.xlsx」ブックになります。
ここでのサンプルの点数範囲と評価(ランク)は以下としています。(100点満点、整数のみ)
点数範囲評価
 90点以上 S
 70~89 A
 50~69 B
 30~49 C
 30点未満 Z
以下、結果は同じになりますが、3つの関数を用意したので個別に説明します。

IF関数」を使う。

多分岐関数サンプル①

IF関数」は本来は多分岐のための関数ではありませんが、このように使えば多分岐の処置も行なえます。
数式は、

 =IF($B$2>=90,"S",IF($B$2>=70,"A",IF($B$2>=50,"B",IF($B$2>=30,"C","Z"))))
このようになります。改行を入れると、

 =IF($B$2>=90
    ,"S"
    ,IF($B$2>=70
       ,"A"
       ,IF($B$2>=50
          ,"B"
          ,IF($B$2>=30
             ,"C"
             ,"Z"
             )
          )
       )
    )
このようになります。
点数の上位から各ネストの「IF関数」の否定時側に次のレベルの「IF関数」を置く方法で、最下層の否定時側は「Z」としています。
次で説明する「IFS関数」が新しい多分岐関数なのですが、Excelが古いバージョンだと利用できないので、その場合は「この方法」になります。

IFS関数」を使う。

多分岐関数サンプル②

IFS関数」はこのサンプルでの説明上では最も適した多分岐関数です。
この上の「IF関数」のサンプルと同じ結果が得られますが、関数そのものは1回しか発生しません。
数式は、

 =IFS($B$2>=90,"S",$B$2>=70,"A",$B$2>=50,"B",$B$2>=30,"C",TRUE,"Z")
このようになります。改行を入れて整理すると、

 =IFS($B$2>=90,"S"
     ,$B$2>=70,"A"
     ,$B$2>=50,"B"
     ,$B$2>=30,"C"
     ,TRUE    ,"Z"
     )
このようになります。



関数概略説明
 IFS関数  1つ以上の条件が満たされているかどうかをチェックして、最初の TRUE条件に対応する値を返します。
 引数は以下の①、②を1組として最大127組まで指定できます。
 ① 評価条件      (引数の奇数順位置)
 ② 条件成立時の値(引数の偶数順位置)
 ※評価は引数の順に行なわれ、最初に条件成立した値が返される



関数の特性から見て、引数を2つずつペアにして整理することで見やすくなるため、数式の整理はそのようにしました。
Z」に当たるところは「上記以外」を全て該当させるため、条件は全て肯定の「TRUE」としています。

VLOOKUP関数」を使う。

多分岐関数サンプル③

VLOOKUP関数」は多分岐関数ではありませんが、たまたまこのサンプルでは同じ結果が得られます。
数式は、

 =VLOOKUP($B$2,$E$4:$G$8,3,TRUE)
このようになります。



関数概略説明
 VLOOKUP関数  テーブルまたは範囲の内容を行ごとに検索し、見つかった行の指定列番号の値を返します。
 検索はテーブルの左端列で行なわれます。引数は以下の通りです。
 ① 検索値
 ② テーブルとなるセル範囲
 ③ 戻り値となる列番号(セル範囲の左端列を「1」とする相対番号)
 ④ 検索方法(以上の最小値はTRUEとする)
 ※第4引数がTRUEの時はテーブルは左端列の昇順に並べる必要がある

この他、多分岐関数には「SWITCH関数」があります。
SWITCH関数」は「IFS関数」と似て見えますが、「条件」にあたるものが「完全一致」のみなので、 今回のサンプルのように「以上」「以下」では利用できません。



関数概略説明
 SWITCH関数  (式と呼ばれる)1つの値に対して、値の一覧を評価し、最初に一致する値に対応する結果を返します。
 いずれにも一致しない場合は、任意指定の既定値が返されます。
 引数は先頭は「式」であり、以降は以下の①、②を1組として最大126組まで指定できます。
 その後、最後に「既定値」が任意で指定できます。
 ① 比較する値       (引数の偶数順位置)
 ② 比較成立時の結果 (引数の奇数順位置)
 ※評価は引数の順に行なわれ、最初に条件成立した値が返される