Menu

IF関数の入れ子(ネスト): Excelで複数条件を分岐する例

=IF(B2>=90,"A",IF(B2>=80,"B",IF(B2>=70,"C","F")))はIFの中に別のIFを入れて、3つ以上の結果から選びます。入れ子のIFの読み方、条件の順番が大切な理由、IFSや検索用の表のほうが向いている場面を学びます。

このページのシートはすべて実際に動きます。数値や数式を変えると再計算されます。

入れ子のIFとは、IFの中に別のIFを入れたもので、結果が3つ以上あるときに使います。=IF(B2>=90,"A",IF(B2>=80,"B",IF(B2>=70,"C","F")))は、90以上ならA、80から89ならB、70から79ならC、70未満ならFを返します。

点数から成績を出す
C2
ABC
1StudentScoreGrade
2Ana94A
3Ben81B
4Chloe70C
5Dan65F
6Eve88B
7Finn90A
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

C2をクリックして数式バーを見てください。IF関数が3つあり、最後に閉じかっこが3つ並んでいます。B5のDanの点数を75に変えると、成績がFからCに変わります。

入れ子のIFの読み方

Excelは数式を先頭から読み、最初にTRUEになった条件で止まります:

=IF(B2>=90, "A",
   IF(B2>=80, "B",
      IF(B2>=70, "C",
         "F")))
  1. 点数は90以上か。それならAで、ほかは何も調べません。
  2. そうでなければ、80以上か。それならBです。90以上の点数はここまで来ないので、この条件に「かつ90未満」と書く必要はありません。
  3. そうでなければ、70以上か。それならCです。
  4. それ以外はFで、最後のIFのvalue_if_falseです。

内側のIFは、それぞれ1つ前のIFのvalue_if_falseの位置にあります。Excelでは64レベルまで入れ子にできますが、4つか5つを超える数式は目で確認するのが大変です。Excelは数式の中の改行を受け付けるので、長い数式は数式バーでこのように並べられます。各IFの前でAlt+Enter(Windows)かControl+Option+Return(Mac)を押します。

条件の順番が大切な理由

Excelは最初にTRUEになった条件で止まるので、>=を使うときはしきい値を高いほうから低いほうへ並べる必要があります。D列は同じ3つの条件を逆の順番にしたものです:

同じ条件で順番が逆
D2
ABCD
1StudentScoreRight orderWrong order
2Ana94AC
3Ben81BC
4Chloe70CC
5Dan65FF
6Eve88BC
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

D列では70以上の全員がCになります。94点は最初の条件B2>=70を満たし、BとAの条件には届きません。低い区分から始めたいなら、演算子を逆にします。=IF(B2<70,"F",IF(B2<80,"C",IF(B2<90,"B","A")))はC列と同じ成績になります。

文字列を使う入れ子のIF

条件では文字列も比べられます。ここでは配送料が地域によって決まり、名前の挙がっていない地域はすべて最後の値になります:

地域別の配送料
C2
ABC
1OrderRegionFee
21001North$5.00
31002South$7.00
41003West$9.00
51004East$6.00
61005Islands$9.00
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

WestとIslandsは3つの条件のどれにも当てはまらず、最後の値$9.00になります。この例のように、すべての条件が同じセルを決まった値と比べているときは、SWITCHを使えば各地域を1回ずつ書くだけで同じ規則になります:=SWITCH(B2,"North",5,"South",7,"East",6,9)。SWITCHのページをご覧ください。

ANDを組み合わせた入れ子のIF

1つの区分が2つのセルで決まるときは、入れ子のIFの各レベルでANDやORを組み合わせられます。売上が2,000以上かつ勤続3年以上の担当者は10%、それ以外で2,000以上なら5%、残りは0です:

手数料率
D2
ABCD
1RepSalesYearsRate
2Ana2400410%
3Ben210015%
4Chloe150060%
5Dan3000310%
6Eve90020%
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

AnaとDanは10%の対象で、Benは売上はあっても年数が足りないので5%、ChloeとEveは0%です。ここでも順番が大切で、厳しい条件を先に置きます。

IFS: 入れ子にせずに同じことを

Excel 2019、Excel 2021、Microsoft 365では、IFSが条件と結果を組で受け取ります。内側のIFはなく、閉じかっこも1つです。最後の条件のTRUEは「それ以外すべて」の役目をします:

=IFS(B2>=90,"A",B2>=80,"B",B2>=70,"C",TRUE,"F")

IFSも同じ順番で条件を読み、最初にTRUEになったところで止まるので、上の順番の規則はそのまま当てはまります。どの条件にも当てはまらないときに返る#N/Aも含めて、IFSのページで説明しています。Excel 2016以前ではIFSは使えず、IFSを使ったファイルは#NAME?と表示されます。

練習: 3段階の手数料

手数料
C2
ABC
1RepSalesCommission
2Ana$6,200
3Ben$2,400
4Chloe$600
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

やってみよう: C2で、B2の売上が5000以上なら売上の10%、1000以上なら5%、それ以外は0を支払うようにしてください。数式はC4まで下にコピーされます。

IFをいくつも使う代わりに検索用の表を使う

区分が数値で、3つか4つを超えるときは、しきい値を小さな表にまとめて検索します。表はしきい値の小さいほうから並べ、近似一致(最後の引数にTRUE)を使うと、点数を超えない最大のしきい値の行が返ります:

区分表から成績を出す
C2
ABCDEF
1StudentScoreGradeMin scoreGrade
2Ana94A0F
3Ben81B70C
4Chloe70C80B
5Dan65F90A
6Eve88B
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

結果はページの最初の入れ子のIFと同じです。Bの区分を85に変えたいならE4を85にします。数式は変えずに、すべての成績が更新されます。XLOOKUPでは同じ検索が=XLOOKUP(B2,$E$2:$E$5,$F$2:$F$5,,-1)になり、-1は「完全一致、なければ次に小さい値」という意味です。この場合、表を並べ替えておく必要はありません。

やってみましょう。区分表はできているので、検索の数式を書いてください。

VLOOKUPで成績を出す
C2
ABCDEF
1StudentScoreGradeMin scoreGrade
2Ana860F
370C
480B
590A
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

やってみよう: C2で、E2:F5の区分表からB2の点数に対応する成績を返してください。

よくある質問

ExcelでIFを複数使うにはどう書きますか?

次のIFを、前のIFのvalue_if_false(偽の場合)の引数に入れます:=IF(B2>=90,"A",IF(B2>=80,"B",IF(B2>=70,"C","F")))。Excelは条件を最初から順に調べ、最初にTRUEになったところで止まります。

ExcelでIF関数はいくつまで入れ子にできますか?

Excel 2007以降では64レベルまでです。ただ、その上限よりずっと手前で数式は読みにくく、確認しにくくなります。区分が3つか4つを超えるなら、近似一致のVLOOKUPやXLOOKUPと検索用の表を使うほうが管理しやすくなります。

入れ子のIFが間違った結果を返すのはなぜですか?

たいていは条件の順番が間違っています。>=の条件では、いちばん高いしきい値から始めます。B2>=70が最初にあると、95点はそこで止まって70の区分の結果になります。

Excelで入れ子のIFの代わりに使えるものは?

Excel 2019以降のIFS(=IFS(B2>=90,"A",B2>=80,"B",TRUE,"F"))、1つの値を決まった値と比べるならSWITCH、数値の区分なら検索用の表と=VLOOKUP(B2,$E$2:$F$5,2,TRUE)です。

Coddyのプログラミング言語のイラスト

Coddyでコードを学ぼう

始める