ExcelのIF関数で複数条件を書く方法は、「IFを入れ子にする」「IFSで上から順に並べる」「ANDやORで条件をまとめる」「SWITCHで値ごとに振り分ける」の4つです。 段階に分けたいのか、条件を同時に満たすかを見たいのか、決まった値に対応させたいのかで、読みやすい書き方が変わります。

この記事では、同じ判定を4通りの書き方で並べた対照表、条件の並べ順で結果が変わる例、IFSが #N/A になる再現例、空白判定とエラー判定の使い分けを、数式と計算結果のセットで載せています。

確認環境:数式の計算結果は LibreOffice Calc 24.2.7(日本語ロケール、ヘッドレス実行)で検算した値です。対応バージョンと上限の数値は、Microsoft サポートの各関数ページの記載です。

IF関数の複数条件の早見表

やりたいこと 書き方 数式の形
点数を3段階以上に分ける IFS(またはIFの入れ子) =IFS(B2>=80,"優",B2>=60,"良",TRUE,"可")
2つの条件を両方満たすか IF+AND =IF(AND(B2>=60,C2>=8),"合格","再確認")
どちらか一方を満たすか IF+OR =IF(OR(B2>=80,C2>=10),"表彰","-")
「Aかつ(BまたはC)」 ANDの中にOR =IF(AND(B2>=60,OR(C2>=8,D2="A")),"対象","-")
範囲(60以上80未満) IF+AND =IF(AND(B2>=60,B2<80),"良の範囲","範囲外")
決まった値を名前に置き換える SWITCH =SWITCH(D2,"A","正会員","B","準会員","C","体験","対象外")
「〜でない」 <> または NOT =IF(D2<>"X","会員","対象外")
未入力なら空欄のままにする 先頭で ="" を判定 =IF(B2="","",IF(B2>=60,"合格","再確認"))
数値が入っているときだけ判定 ISNUMBER =IF(ISNUMBER(B2),IF(B2>=60,"合格","再確認"),"未入力")
エラーを別の表示に置き換える IFERROR =IFERROR(B2/C2,"-")
検索で見つからないときだけ置き換える IFNA =IFNA(VLOOKUP(D2,$G$2:$H$4,2,FALSE),"対象外")
文字の一部が含まれるか COUNTIF+ワイルドカード =IF(COUNTIF(E2,"東京*")>0,"都内","都外")

本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。

(記載例)出典:株式会社RJC「Excel IF関数の複数条件|IFS・AND・ORの書き方と空白・エラー判定」

この記事で使うサンプル表

次の表を A1 から貼り付けると、以降の数式をそのまま試せます。B6 は何も入力しないセル、B7 は =""(空文字を返す数式)、C6 は 0 です。

行 A 氏名 B 点数 C 出席回数 D 区分 E 所在地
2 青木 85 10 A 東京都港区
3 井上 72 6 B 大阪府吹田市
4 上田 60 9 C 東京都調布市
5 江口 45 10 X 福岡県福岡市
6 小川 (空のセル) 0 A (空のセル)
7 加藤 ="" 8 B (空のセル)

G1:H4 には区分の対応表を置きます。

G コード H 名称
A 正会員
B 準会員
C 体験

タブ区切り(A1 に貼り付け。B6 は空のまま、B7 には貼り付け後に ="" を入力):

氏名  点数  出席回数    区分  所在地     コード 名称
青木  85  10  A   東京都港区       A   正会員
井上  72  6   B   大阪府吹田市      B   準会員
上田  60  9   C   東京都調布市      C   体験
江口  45  10  X   福岡県福岡市
小川      0   A
加藤      8   B

同じ判定をネストIF・IFS・AND/OR・SWITCHで書き分ける

判定1:点数を3段階に分ける(80以上=優、60以上=良、それ以外=可)

書き方 数式(2行目)
ネストIF =IF(B2>=80,"優",IF(B2>=60,"良","可"))
IFS =IFS(B2>=80,"優",B2>=60,"良",TRUE,"可")
SWITCH(TRUEと比べる形) =SWITCH(TRUE,B2>=80,"優",B2>=60,"良","可")

計算結果(3つの数式とも同じ):

行 点数 結果
2 85 優
3 72 良
4 60 良
5 45 可
6 (空のセル) 可
7 ="" 優

6行目と7行目に注目してください。 空のセルは比較のとき 0 として扱われるので「可」になり、="" のセルは文字列として扱われ B7>=80 が TRUE になるため「優」になります。未入力の行を空欄のままにする書き方は、後半の「空白判定の使い分け」で扱います。

SWITCH の3つ目の書き方は、1つ目の引数を TRUE にして「TRUE と一致する最初の条件」を拾う形です。段階分けは IFS のほうが意図が伝わりやすいので、SWITCH は次の判定4のような「値の対応」に使うと読みやすくなります。

判定2:2つの条件を両方満たす(点数60以上 かつ 出席8回以上)

書き方 数式(2行目)
IF+AND =IF(AND(B2>=60,C2>=8),"合格","再確認")
ネストIF =IF(B2>=60,IF(C2>=8,"合格","再確認"),"再確認")
IFS+AND =IFS(AND(B2>=60,C2>=8),"合格",TRUE,"再確認")
掛け算 =IF((B2>=60)*(C2>=8),"合格","再確認")

計算結果(4つの数式とも同じ):

行 点数 出席回数 結果
2 85 10 合格
3 72 6 再確認
4 60 9 合格
5 45 10 再確認
6 (空のセル) 0 再確認
7 ="" 8 合格

ネストIFでは「再確認」を2か所に書く必要があります。「かつ」は AND にまとめると、結果を1回ずつ書くだけで済みます。

判定3:どちらか一方を満たす(点数80以上 または 出席10回以上)

書き方 数式(2行目)
IF+OR =IF(OR(B2>=80,C2>=10),"表彰","-")
ネストIF =IF(B2>=80,"表彰",IF(C2>=10,"表彰","-"))
IFS+OR =IFS(OR(B2>=80,C2>=10),"表彰",TRUE,"-")
足し算 =IF((B2>=80)+(C2>=10),"表彰","-")

計算結果(4つの数式とも同じ):

行 点数 出席回数 結果
2 85 10 表彰
3 72 6 -
4 60 9 -
5 45 10 表彰
6 (空のセル) 0 -
7 ="" 8 表彰

判定4:決まった値を名前に置き換える(A=正会員、B=準会員、C=体験、それ以外=対象外)

書き方 数式(2行目)
ネストIF =IF(D2="A","正会員",IF(D2="B","準会員",IF(D2="C","体験","対象外")))
IFS =IFS(D2="A","正会員",D2="B","準会員",D2="C","体験",TRUE,"対象外")
SWITCH =SWITCH(D2,"A","正会員","B","準会員","C","体験","対象外")
対応表+IFNA =IFNA(VLOOKUP(D2,$G$2:$H$4,2,FALSE),"対象外")

計算結果(4つの数式とも同じ):

行 区分 結果
2 A 正会員
3 B 準会員
4 C 体験
5 X 対象外
6 A 正会員
7 B 準会員

SWITCH は D2 を1回書くだけで済みます。対応が増えていく見込みなら、数式を書き換えずに済む「対応表+検索」の形が向いています。

4つの書き方の対照表

書き方 向いている場面 「それ以外」の書き方 書かなかったとき
ネストIF 分岐が2〜3段まで。どのバージョンでも使いたいとき 最後のIFの3つ目の引数 FALSE が表示される
IFS 段階分けが3つ以上 最後の条件に TRUE を置く #N/A
IF+AND/OR 条件を同時に見る/どれかを見る IFの3つ目の引数 FALSE が表示される
SWITCH 1つのセルの値を決まった値と比べる 最後に既定値を1つ置く #N/A

「書かなかったとき」の列も検算しています。=IF(B5>=80,"優")(45点)は FALSE、=SWITCH(D5,"A","正会員","B","準会員","C","体験")(区分X)は #N/A になりました。

条件の並べ順で結果が変わる例

IFS もネストIF も、上(左)から順に調べて、最初に成り立った条件の結果を返します。そのため、ゆるい条件を先に書くと、後ろの条件に届かなくなります。

並べ順 数式(2行目) 85点 72点 60点 45点
厳しい条件から(80→60) =IFS(B2>=80,"優",B2>=60,"良",TRUE,"可") 優 良 良 可
ゆるい条件から(60→80) =IFS(B2>=60,"良",B2>=80,"優",TRUE,"可") 良 良 良 可
ネストIFでゆるい条件から =IF(B2>=60,"良",IF(B2>=80,"優","可")) 良 良 良 可

85点は B2>=60 も満たすため、先に書いた「良」で確定し、「優」にはなりません。

並べ方の決め方

比較の向き 並べる順 例
>=(以上)で段階分け 大きい値から 80 → 60 → 40
<(未満)で段階分け 小さい値から 40 → 60 → 80
順番に左右されない形にする AND で範囲を書く AND(B2>=60,B2<80)

範囲を AND で書いた =IF(AND(B2>=60,B2<80),"良の範囲","範囲外") の結果は、85点=範囲外、72点=良の範囲、60点=良の範囲、45点=範囲外 でした。

IFSで最後にTRUEを置かないと#N/Aになる

IFS は、どの条件にも当てはまらないと #N/A を返します。

=IFS(B2>=80,"優",B2>=60,"良")
行 点数 結果
2 85 優
3 72 良
4 60 良
5 45 #N/A
6 (空のセル) #N/A

最後の条件に TRUE を置くと、「どれにも当てはまらないとき」の結果を決められます。

=IFS(B2>=80,"優",B2>=60,"良",TRUE,"可")
行 点数 結果
5 45 可
6 (空のセル) 可

Microsoft サポートの IFS 関数のページにも、「TRUE 条件が見つからない場合、この関数は #N/A エラーを返します」「既定の結果を指定するには、最後の logical_test の引数に、TRUE を入力します」と書かれています。

AND・OR・NOTを組み合わせるときの決まり

「AかつB」「AまたはB」「Aかつ(BまたはC)」

=IF(AND(B2>=60,OR(C2>=8,D2="A")),"対象","-")

「点数が60以上」で、さらに「出席8回以上 または 区分A」の行が対象になります。

行 点数 出席回数 区分 結果
2 85 10 A 対象
3 72 6 B -
4 60 9 C 対象
5 45 10 X -

「〜でない」は <> と NOT のどちらでも書けます。=IF(NOT(D2="X"),"会員","対象外") と =IF(D2<>"X","会員","対象外") は、6行とも同じ結果(5行目だけ対象外)になりました。

ANDは全部の引数を計算する

AND は、1つ目の条件が FALSE でも残りの引数を計算します。そのため「0でないことを確かめてから割る」つもりで AND に並べても、割り算は実行されます。

数式(6行目:点数が空、出席回数が0) 結果
=B6/C6 #DIV/0!
=IF(AND(C6<>0,B6/C6>=8),"高","-") #DIV/0!
=IF(C6<>0,IF(B6/C6>=8,"高","-"),"-") -

「先に確かめてから計算する」ときは、AND にまとめずに IF を入れ子にします。 外側の IF が FALSE のとき、内側の割り算は表示に使われません。

空白判定の使い分け(=""・ISBLANK・LEN)

「空白に見えるセル」には3種類あります。何も入力していないセル、数式が返した空文字("")、スペースだけが入ったセルです。判定式によって、どれを空白とみなすかが違います。

空白判定の早見表

判定式 空のセル ="" を返す数式 半角スペース1個 数値の0
=ISBLANK(A1) TRUE FALSE FALSE FALSE
=A1="" TRUE TRUE FALSE FALSE
=LEN(A1)=0 TRUE TRUE FALSE FALSE
=LEN(TRIM(A1))=0 TRUE TRUE TRUE FALSE
=A1=0 TRUE FALSE FALSE TRUE
=ISNUMBER(A1) FALSE FALSE FALSE TRUE
目的 選ぶ判定式
見た目が空ならすべて空白として扱いたい =A1="" または =LEN(A1)=0
スペースだけの入力も空白として扱いたい =LEN(TRIM(A1))=0
本当に何も入っていないセルだけを見たい =ISBLANK(A1)
数値が入っているかどうかを見たい =ISNUMBER(A1)

数式が "" を返しているセルは、ISBLANK では FALSE になります。 =IF(A4="","",A4*2) のように空文字を返す数式のセルを別の数式で調べると、次のようになりました。

数式(A5 は空文字を返す数式) 結果
=IF(A5="","未入力","入力済み") 未入力
=IF(ISBLANK(A5),"未入力","入力済み") 入力済み

未入力の行を空欄のままにする

判定1の表では、空のセルが「可」、空文字のセルが「優」になっていました。先頭で空白を判定すると、どちらも空欄のままにできます。

=IF(B2="","",IF(B2>=80,"優",IF(B2>=60,"良","可")))
行 点数 結果
2 85 優
5 45 可
6 (空のセル) (空欄)
7 ="" (空欄)

IFS で書く場合も、空白の条件を先頭に置きます。=IFS(B6="","未入力",B6>=60,"合格",TRUE,"再確認") は、6行目・7行目とも「未入力」になりました。

数値が入っているときだけ判定する書き方もあります。

=IF(ISNUMBER(B2),IF(B2>=60,"合格","再確認"),"未入力")

この式は 85・72・60 が「合格」、45 が「再確認」、空のセルと空文字のセルが「未入力」になりました。

空白を比較・集計に使ったときの結果

数式 空のセル ="" を返す数式
=A1>=80 FALSE TRUE
=A1+0 0 #VALUE!
=IF(A1>=60,"合格","再確認") 再確認 合格

空文字は文字列なので、数値との大小比較では「数値より大きい」と判定され、足し算では #VALUE! になります。

サンプル表の B2:B7(数値4つ、空のセル1つ、空文字1つ)を数えた結果は次のとおりです。

数式 結果 数えているもの
=COUNT(B2:B7) 4 数値
=COUNTA(B2:B7) 5 空のセル以外(空文字の数式も含む)
=COUNTBLANK(B2:B7) 2 空のセルと空文字
=COUNTIF(B2:B7,"") 2 空のセルと空文字
=SUMPRODUCT(ISBLANK(B2:B7)*1) 1 空のセルだけ

「2つの欄が両方入力されたら完了」と判定するときは、=IF(COUNT(B7:C7)=2,"入力完了","入力待ち") のように COUNT で数値の個数を数えると、空文字のセルを入力済みに数えずに済みます(7行目は「入力待ち」。COUNTA で書くと「入力完了」になりました)。

エラー判定の使い分け(IFERROR・IFNA・ISERROR)

エラー判定の早見表

関数 何を拾うか #N/A #DIV/0! #VALUE! 使いどころ
IFERROR(値,代わりの値) すべてのエラー 置き換える 置き換える 置き換える 割り算など、エラーの種類を問わず表示を整える
IFNA(値,代わりの値) #N/A だけ 置き換える そのまま そのまま 検索で「見つからない」ときだけ置き換える
ISERROR(値) すべてのエラー TRUE TRUE TRUE エラーかどうかで処理を分ける
ISERR(値) #N/A 以外のエラー FALSE TRUE TRUE #N/A は残して他のエラーだけ調べる
ISNA(値) #N/A だけ TRUE FALSE FALSE 見つからなかったかどうかで処理を分ける

IFERROR が対象にするエラーは、Microsoft サポートの IFERROR 関数のページに「#N/A、#VALUE!、#REF!、#DIV/0!、#NUM!、#NAME?、#NULL!」と書かれています。

割り算のエラーを置き換える

サンプル表で「点数÷出席回数」を計算した結果です。6行目は 0 での割り算、7行目は空文字を割ろうとした行です。

数式 2行目 5行目 6行目 7行目
=B2/C2 8.5 4.5 #DIV/0! #VALUE!
=IFERROR(B2/C2,"-") 8.5 4.5 - -
=IFNA(B2/C2,"-") 8.5 4.5 #DIV/0! #VALUE!
=IF(ISERROR(B2/C2),"-",B2/C2) 8.5 4.5 - -
=IF(C2=0,"-",B2/C2) 8.5 4.5 - #VALUE!

IF(ISERROR(…),…,…) は同じ計算を2回書きます。IFERROR は計算を1回書くだけで同じ結果になります。

検索で見つからないときだけ置き換える

数式 区分A 区分X(対応表にない)
=VLOOKUP(D2,$G$2:$H$4,2,FALSE) 正会員 #N/A
=IFERROR(VLOOKUP(D2,$G$2:$H$4,2,FALSE),"対象外") 正会員 対象外
=IFNA(VLOOKUP(D2,$G$2:$H$4,2,FALSE),"対象外") 正会員 対象外

この例では2つの結果は同じですが、IFERROR は範囲や関数名の書き間違いによるエラーも「対象外」に置き換えます。 検索には IFNA を使うと、「見つからない」以外のエラーがそのまま表示されるので、数式の直すべき箇所に気づきやすくなります。

IFERRORと空白の組み合わせ

数式 結果
=IFERROR(1/0,"") (空欄に見える)
=LEN(IFERROR(1/0,"")) 0
=ISBLANK(IFERROR(1/0,"")) FALSE

エラーを "" に置き換えたセルは、前の章の「空文字を返す数式」と同じ扱いになります。後から空白かどうかを調べるときは ="" で判定します。

文字の一部が含まれるかを条件にする

IF の比較(=)では、* や ? はワイルドカードとして働きません。一部一致は、COUNTIF や文字列関数と組み合わせます。

数式(2行目) 東京都港区 大阪府吹田市 東京都調布市
=IF(E2="東京*","都内","都外") 都外 都外 都外
=IF(COUNTIF(E2,"東京*")>0,"都内","都外") 都内 都外 都内
=IF(LEFT(E2,2)="東京","都内","都外") 都内 都外 都内
=IF(ISNUMBER(SEARCH("東京",E2)),"都内","都外") 都内 都外 都内
一致のしかた 書き方
〜で始まる COUNTIF(E2,"東京*")>0 または LEFT(E2,2)="東京"
〜を含む COUNTIF(E2,"*東京*")>0 または ISNUMBER(SEARCH("東京",E2))
〜で終わる COUNTIF(E2,"*市")>0 または RIGHT(E2,1)="市"

対応バージョンと上限(Microsoft公式の記載)

関数 対応バージョン 上限 出典
IF(入れ子) すべてのバージョン 入れ子は最大64 「IF 関数 – 入れ子になった式と問題の回避」
IFS Excel 2019 以降、Microsoft 365 条件は最大127個 「IFS 関数」
SWITCH Excel 2019 以降、Microsoft 365 値と結果の組は最大126 「SWITCH 関数」
IFNA Excel 2016 以降、Microsoft 365(ページの適用対象の表示) - 「IFNA 関数」

入れ子について、Microsoft サポートのページは「Excel では最大 64 の異なる IF 関数を入れ子にできますが、そうすることはお勧めできません」と書いており、段階が多いときの置き換え先として IFS を挙げています。共有する相手が Excel 2016 以前を使っている場合は、IFS と SWITCH の代わりにネストIFか対応表+VLOOKUP で書きます。

どの書き方を選ぶかの判断表

状況 選ぶ書き方 理由
結果が2通り(はい/いいえ) IF 一番短い
条件が2〜3個で同時に見る IF+AND/OR 結果を1回ずつ書けば済む
段階が3つ以上 IFS(最後に TRUE) 条件と結果が横に並び、かっこが1組で済む
1つのセルを決まった値と比べる SWITCH セル参照を1回書くだけ
対応が10個以上、または増える見込み 対応表+VLOOKUP/XLOOKUP+IFNA 数式を変えずに表の行を足せる
計算の前に前提を確かめる(0でない、数値である) IF の入れ子 AND は全引数を計算するため
Excel 2016 以前でも開く ネストIF、対応表+VLOOKUP IFS・SWITCH は Excel 2019 以降

よくある質問

Q. IFSとネストIFは、どちらを使えばよいですか? A. 段階が3つ以上なら IFS が読みやすくなります。かっこが1組で済み、条件と結果が順に並ぶためです。Excel 2016 以前でも開くブックでは、ネストIFで書きます。どちらも上から順に判定する点は同じです。

Q. IFSで「それ以外」はどう書きますか? A. 最後の条件に TRUE を置き、その次に結果を書きます(…,TRUE,"可")。置かない場合、どの条件にも当てはまらない行は #N/A になります。

Q. 空白のセルなのに「合格」と表示されます。なぜですか? A. そのセルに "" を返す数式が入っていると、文字列として扱われ、>=60 のような比較が TRUE になります。数式の先頭に IF(B2="","",…) を置くか、ISNUMBER(B2) で数値のときだけ判定します。

Q. IFERRORとIFNAはどう使い分けますか? A. 割り算のようにエラーの種類を問わず表示を整えたいときは IFERROR、VLOOKUP や XLOOKUP、MATCH で「見つからない」ときだけ置き換えたいときは IFNA を使います。IFNA なら、ほかの種類のエラーはそのまま表示されます。

まとめ

  • 複数条件の書き方は4つ:ネストIF、IFS、IF+AND/OR、SWITCH。段階分けは IFS、同時条件は AND/OR、値の対応は SWITCH が読みやすい
  • IFS とネストIF は上から順に判定する:>= の段階分けは大きい値から並べる。順番を気にしたくないときは AND で範囲を書く
  • IFS の最後には TRUE を置く:置かないと、どれにも当てはまらない行が #N/A になる
  • AND は全部の引数を計算する:0 かどうかを確かめてから割るときは、IF を入れ子にする
  • 空白判定は目的で選ぶ:見た目が空なら =""、何も入っていないセルだけなら ISBLANK、スペースも含めるなら LEN(TRIM())=0
  • 空文字("")は文字列:数値との比較が TRUE になるので、先頭で空白を判定してから本来の条件を書く
  • エラーは種類で使い分ける:全部を置き換えるなら IFERROR、検索の「見つからない」だけなら IFNA

参考・出典

  • Microsoft サポート「IFS 関数」 https://support.microsoft.com/ja-jp/office/36329a26-37b2-467c-972b-4a39bd951d45
  • Microsoft サポート「IF 関数 – 入れ子になった式と問題の回避」 https://support.microsoft.com/ja-jp/office/0b22ff44-f149-44ba-aeb5-4ef99da241c8
  • Microsoft サポート「SWITCH 関数」 https://support.microsoft.com/ja-jp/office/47ab33c0-28ce-4530-8a45-d532ec4aa25e
  • Microsoft サポート「IFERROR 関数」 https://support.microsoft.com/ja-jp/office/c526fd07-caeb-47b8-8bb6-63f3e417f611
  • Microsoft サポート「IFNA 関数」 https://support.microsoft.com/ja-jp/office/6626c961-a569-42fc-a49d-79b4951fd461
  • Microsoft サポート「IS 関数」 https://support.microsoft.com/ja-jp/office/0f2d7971-6019-40a0-a171-f2d869135665

本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。

(記載例)出典:株式会社RJC「Excel IF関数の複数条件|IFS・AND・ORの書き方と空白・エラー判定」

株式会社RJC ― SI事業・SES事業・AI駆動開発。RJCは一緒に成長を楽しめる会社です。

WE ARE HIRING

RJCで一緒に開発しながら、
成長を楽しみませんか?

RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!

  • 127日年間休日
  • 12時間平均残業時間
  • 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!

ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。

ABOUT RJC RJCがどんな会社か知る 考え方、研修、働き方、福利厚生、社員の前職まで。RJCのことが丸わかり! RJC丸わかりページへ JOB DESCRIPTION 仕事内容・待遇を見てみる 仕事内容、給与・待遇、選考の流れ。経験者も未経験も!応募前に知りたいこと、まとめました! 募集要項を見る ENTRY エントリーする エントリーは1〜2分・履歴書不要です。まずは話を聞いてみたい、という方でも歓迎です! エントリーフォームへ

RJCで一緒に開発しながら、 成長を楽しみませんか?