更新日:、 作成日:

エクセル IF 関数:条件により処理を分ける

はじめに

エクセルの IF 関数の使い方を紹介します。

IF 関数は条件により処理を分岐します。複数条件にできます。

=IF(A1>=80,"合格","不合格") のようにして、セルの値が 80 以上のときは 合格、それ以外のときは 不合格 を表示できます。

=IF(AND(A1>=10,A1<20),"10代") のようにして、複数条件にしてセルの値が 10 ~ 19 の範囲のときは 10代 を表示できます。

=IF(A1="表計算","エクセル",IF(A1="文書入力","ワード")) のようにして、分岐を複数にしてセルの値が「表計算」のときは エクセル、「文書入力」のときは ワード を表示できます。

数値が入っているときだけ計算したり、特定の文字列が入っているときだけ処理できます。

条件の数だけ分岐を増やすには「IFS 関数」を使用します。
文字列かどうかや空白など、特定の値を条件にする方法は「COUNTIF 関数」にまとめています。

IF 関数の引数

IF(条件, TRUE の処理)
条件を満たすときはTRUE の処理を返します。満たさないときは FALSE を返します。

IF(条件, TRUE の処理, FALSE の処理)
条件を満たさないときはFALSE の処理を返します。

引数「条件」条件を比較演算子を使って指定します。スピル化
引数「TRUE の処理」引数「条件」を満たすときに返す値を指定します。数値、文字列、セル参照、関数などを指定できます。スピル化
引数「FALSE の処理」省略できます。省略すると FALSE を返します。
引数「条件」を満たさないときに返す値を指定します。数値、文字列、セル参照、関数などを指定できます。
スピル化

スピル化:セルの範囲や配列を指定すると結果が「スピル」します。

引数「条件」

使用できる比較演算子には次のものがあります。

演算子 演算名 使用例 結果
=等しい1=2FALSE
<>等しくない1<>2TRUE
>大きい1>2FALSE
<小さい1<2TRUE
>=以上1>=2FALSE
<=以下1<=2TRUE

使い方、条件が一つ

IF 関数は次の図のような処理になっています。条件の結果によって「TRUE の処理」か「FALSE の処理」のどちらか一方が実行されます。これで処理を分岐できます。

16

条件により分岐する

条件の結果が TRUE なら FALSE なら を表示します。

=IF(B3,"真","偽")
=IF(B3,"真")

引数「FALSE の処理」を省略すると、条件の結果が FALSE のときに FALSE が表示されます。

18

値が 50 以上か 49 以下

値が 50 以上なら 上位49 以下なら 下位 を表示します。

=IF(B3>=50,"上位","下位")
=IF(B3<=49,"下位","上位")
19

名前がエクセルかそれ以外

名前が エクセル なら 表計算、それ以外なら それ以外 を表示します。

=IF(B3="エクセル","表計算","それ以外")
=IF(B4<>"エクセル","それ以外","表計算")
20

数値が入っていたら計算する

値が数値ならそれを 2 倍にして表示します。それ以外ならそのセルの値を表示します。「ISNUMBER 関数」を使用して数値か判定できます。

=IF(ISNUMBER(B3),B3*2,B3)

日付の実際の値は数値なのでその値を 2 倍します。

21

セル参照すると空のセルが 0 になります。ゼロを表示しないようにするには、セルの書式設定の表示形式に 0;-0;;@ などを設定します。

詳しくは「0 を表示しない」をご覧ください。

特定の文字列が入っていたら計算する

E の文字が入っていたら Eあり を表示します。「FIND 関数」または「SEARCH 関数」を使用して特定の文字が入っているか検索できます。

  • FIND 関数:大文字小文字を区別します。
  • SEARCH 関数:大文字小文字を区別しません。
=IF(FIND("E",B3),"Eあり")
=IF(SEARCH("E",B4),"Eあり")

特定の文字が入っていないときはエラーになります。

22

エラーになるときに空文字 "" を表示します。「IFERROR 関数」を使用してエラーのときの処理ができます。

=IF(IFERROR(FIND("E",B3),FALSE),"Eあり","")
=IF(IFERROR(SEARCH("E",B4),FALSE),"Eあり","")
23

使い方、分岐を複数

引数「FALSE の処理」に IF 関数を入れ子にして 3 つに分岐できます。これを繰り返して 3 つ以上に分岐できます。次の図のような処理になっています。

11

1 つ目の引数「条件」から順番に処理されていくので、その条件の優先度が一番高くなります。

IF1(条件1,処理1, IF2(条件2,処理2, IF3(… ,それ以外の処理)

値が 10 未満か 10 代かそれ以上か分岐する

値が 10 未満なら 10未満、20 未満なら 10代、それ以外なら 20以上 を表示します。「IFS 関数」を使用して簡単に複数の分岐を入力できます。

=IF(B3<10,"10未満",IF(B3<20,"10代","20以上"))
=IFS(B4<10,"10未満",B4<20,"10代",TRUE,"20以上")

最初に B3<10,"10未満" の判定が行われ、条件に一致しないときに次の B3<20,"10代" の判定が行われます。

24

高度な使い方、複数条件

IF 関数と他の関数を組み合わせた使い方などを紹介します。

AND 条件

名前が エクセル かつバージョンが 365 なら値を表示します。それ以外は空文字 "" を表示します。「AND 関数」を使用して、複数条件の「かつ」を判定できます。

=IF(AND(B3="エクセル",C3=365),D3,"")

引数「条件」に「AND 関数」を入力します。

25

OR 条件

名前が エクセル またはバージョンが 365 なら値を表示します。それ以外は空文字 "" を表示します。「OR 関数」を使用して、複数条件の「または」を判定できます。

=IF(OR(B3="エクセル",C3=365),D3,"")

引数「条件」に「OR 関数」を入力します。

26

スピルで AND 条件

AND 関数」は「スピル」されないので、スピルには使用できません。

スピルで AND 条件を入力するには条件を掛け算します。条件を () で囲む必要があります。

(条件1)*(条件2)

名前が エクセル でバージョンが 365 かスピルで判定します。

=(B5:B8="エクセル")*(C5:C8=365)

結果が TRUE のときは 1、FALSE のときは 0 になります。

これを引数「条件」に入力して、条件を満たすときに値を表示します。それ以外は空文字 "" を表示します。

=IF((B5:B8="エクセル")*(C5:C8=365),D5:D8,"")
27
スピルについて詳しくは「スピル、動的配列数式の使い方」をご覧ください。
スピルは 365 または 2021 から使用できます。

数式を Ctrl + Shift + Enter で確定すると「配列数式」になり、すべてのバージョンで使用できます。

スピルで OR 条件

OR 関数」は「スピル」されないので、スピルには使用できません。

スピルで OR 条件を入力するには条件を足し算します。条件を () で囲む必要があります。

(条件1)+(条件2)

名前が エクセル またはバージョンが 365 かスピルで判定します。

=(B5:B8="エクセル")+(C5:C8=365)

結果が TRUE のときは 1 以上、FALSE のときは 0 になります。

これを引数「条件」に入力して、条件を満たすときに値を表示します。それ以外は空文字 "" を表示します。

=IF((B5:B8="エクセル")+(C5:C8=365),D5:D8,"")
28
スピルについて詳しくは「スピル、動的配列数式の使い方」をご覧ください。
スピルは 365 または 2021 から使用できます。

数式を Ctrl + Shift + Enter で確定すると「配列数式」になり、すべてのバージョンで使用できます。

ラムダで複数条件

MAP 関数」を使用して「AND 関数」や「OR 関数」から複数条件を判定できます。複雑なので詳細は関数のページをご覧ください。

=MAP(B5:B8,C5:C8,D5:D8,
LAMBDA(b,c,d,
IF(AND(b="エクセル",c=365),d,""))))
=MAP(B5:B8,C5:C8,D5:D8,
LAMBDA(b,c,d,
IF(OR(b="エクセル",c=365),d,""))))
ラムダは 365 で使用できます。

解説

引数「条件」が TRUE なら引数「TRUE の処理」を、FALSE なら引数「FALSE の処理」を返します。

文字列を =<> から比較するとき、大文字と小文字を区別しません。"ABC"="abc" は TRUE になります。「EXACT 関数」を使用して大文字小文字を区別できます。

引数「条件」に「AND 関数」や「OR 関数」を入力して複数条件にできます。

引数「条件」の結果が数値のときは 0 なら FALSE、それ以外なら TRUE として扱います。

引数「条件」の結果が文字列のときはエラー #VALUE! になります。

引数「条件」がエラーのときは、そのエラーになります。

数値や文字列が入っているかなど、特定の値を条件にする方法は「COUNTIF 関数」にまとめています。

条件分岐関数

分岐が増えると処理が複雑になります。条件に合った分岐用の次の関数があります。

1 なら A、2 なら B といったインデックスに対応した値を取得するには「CHOOSE 関数」を使用します。
好きな数値や文字列に対応した値を取得するには「SWITCH 関数」を使用します。
20 点以上なら D、40 点以上なら C といった評価を付けたいときは「LOOKUP 関数」を使用します。
検索する値に対応した値を指定の列や行から取得するには「XLOOKUP 関数」を使用します。