更新日:、 作成日:
エクセル IF 関数:条件により処理を分ける
はじめに
エクセルの IF 関数の使い方を紹介します。
IF 関数は条件により処理を分岐します。複数条件にできます。
=IF(A1>=80,"合格","不合格") のようにして、セルの値が 80 以上のときは 合格、それ以外のときは 不合格 を表示できます。
=IF(AND(A1>=10,A1<20),"10代") のようにして、複数条件にしてセルの値が 10 ~ 19 の範囲のときは 10代 を表示できます。
=IF(A1="表計算","エクセル",IF(A1="文書入力","ワード")) のようにして、分岐を複数にしてセルの値が「表計算」のときは エクセル、「文書入力」のときは ワード を表示できます。
数値が入っているときだけ計算したり、特定の文字列が入っているときだけ処理できます。
IF 関数の引数
IF(条件, TRUE の処理)
条件を満たすときはTRUE の処理を返します。満たさないときは FALSE を返します。
IF(条件, TRUE の処理, FALSE の処理)
条件を満たさないときはFALSE の処理を返します。
引数「条件」 | 条件を比較演算子を使って指定します。 | スピル化 |
引数「TRUE の処理」 | 引数「条件」を満たすときに返す値を指定します。数値、文字列、セル参照、関数などを指定できます。 | スピル化 |
引数「FALSE の処理」 | 省略できます。省略すると FALSE を返します。 引数「条件」を満たさないときに返す値を指定します。数値、文字列、セル参照、関数などを指定できます。 | スピル化 |
スピル化:セルの範囲や配列を指定すると結果が「スピル」します。
引数「条件」
使用できる比較演算子には次のものがあります。
演算子 | 演算名 | 使用例 | 結果 |
= | 等しい | 1=2 | FALSE |
<> | 等しくない | 1<>2 | TRUE |
> | 大きい | 1>2 | FALSE |
< | 小さい | 1<2 | TRUE |
>= | 以上 | 1>=2 | FALSE |
<= | 以下 | 1<=2 | TRUE |
スポンサーリンク
使い方、条件が一つ
IF 関数は次の図のような処理になっています。条件の結果によって「TRUE の処理」か「FALSE の処理」のどちらか一方が実行されます。これで処理を分岐できます。

条件により分岐する
条件の結果が TRUE なら 真、FALSE なら 偽 を表示します。
=IF(B3,"真")
引数「FALSE の処理」を省略すると、条件の結果が FALSE のときに FALSE が表示されます。

値が 50 以上か 49 以下
値が 50 以上なら 上位、49 以下なら 下位 を表示します。
=IF(B3<=49,"下位","上位")

名前がエクセルかそれ以外
名前が エクセル なら 表計算、それ以外なら それ以外 を表示します。
=IF(B4<>"エクセル","それ以外","表計算")

数値が入っていたら計算する
値が数値ならそれを 2 倍にして表示します。それ以外ならそのセルの値を表示します。「ISNUMBER 関数」を使用して数値か判定できます。
日付の実際の値は数値なのでその値を 2 倍します。

セル参照すると空のセルが 0 になります。ゼロを表示しないようにするには、セルの書式設定の表示形式に 0;-0;;@ などを設定します。
特定の文字列が入っていたら計算する
E の文字が入っていたら Eあり を表示します。「FIND 関数」または「SEARCH 関数」を使用して特定の文字が入っているか検索できます。
- FIND 関数:大文字小文字を区別します。
- SEARCH 関数:大文字小文字を区別しません。
=IF(SEARCH("E",B4),"Eあり")
特定の文字が入っていないときはエラーになります。

エラーになるときに空文字 "" を表示します。「IFERROR 関数」を使用してエラーのときの処理ができます。
=IF(IFERROR(SEARCH("E",B4),FALSE),"Eあり","")

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

1 つ目の引数「条件」から順番に処理されていくので、その条件の優先度が一番高くなります。
値が 10 未満か 10 代かそれ以上か分岐する
値が 10 未満なら 10未満、20 未満なら 10代、それ以外なら 20以上 を表示します。「IFS 関数」を使用して簡単に複数の分岐を入力できます。
=IFS(B4<10,"10未満",B4<20,"10代",TRUE,"20以上")
最初に B3<10,"10未満" の判定が行われ、条件に一致しないときに次の B3<20,"10代" の判定が行われます。

高度な使い方、複数条件
IF 関数と他の関数を組み合わせた使い方などを紹介します。
AND 条件
名前が エクセル かつバージョンが 365 なら値を表示します。それ以外は空文字 "" を表示します。「AND 関数」を使用して、複数条件の「かつ」を判定できます。
引数「条件」に「AND 関数」を入力します。

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

スピルで AND 条件
「AND 関数」は「スピル」されないので、スピルには使用できません。
スピルで AND 条件を入力するには条件を掛け算します。条件を () で囲む必要があります。
名前が エクセル でバージョンが 365 かスピルで判定します。
結果が TRUE のときは 1、FALSE のときは 0 になります。
これを引数「条件」に入力して、条件を満たすときに値を表示します。それ以外は空文字 "" を表示します。

数式を Ctrl + Shift + Enter で確定すると「配列数式」になり、すべてのバージョンで使用できます。
スピルで OR 条件
「OR 関数」は「スピル」されないので、スピルには使用できません。
スピルで OR 条件を入力するには条件を足し算します。条件を () で囲む必要があります。
名前が エクセル またはバージョンが 365 かスピルで判定します。
結果が TRUE のときは 1 以上、FALSE のときは 0 になります。
これを引数「条件」に入力して、条件を満たすときに値を表示します。それ以外は空文字 "" を表示します。

数式を Ctrl + Shift + Enter で確定すると「配列数式」になり、すべてのバージョンで使用できます。
ラムダで複数条件
「MAP 関数」を使用して「AND 関数」や「OR 関数」から複数条件を判定できます。複雑なので詳細は関数のページをご覧ください。
LAMBDA(b,c,d,
IF(AND(b="エクセル",c=365),d,""))))
LAMBDA(b,c,d,
IF(OR(b="エクセル",c=365),d,""))))
解説
引数「条件」が TRUE なら引数「TRUE の処理」を、FALSE なら引数「FALSE の処理」を返します。
文字列を = や <> から比較するとき、大文字と小文字を区別しません。"ABC"="abc" は TRUE になります。「EXACT 関数」を使用して大文字小文字を区別できます。
引数「条件」に「AND 関数」や「OR 関数」を入力して複数条件にできます。
引数「条件」の結果が数値のときは 0 なら FALSE、それ以外なら TRUE として扱います。
引数「条件」の結果が文字列のときはエラー #VALUE! になります。
引数「条件」がエラーのときは、そのエラーになります。
条件分岐関数
分岐が増えると処理が複雑になります。条件に合った分岐用の次の関数があります。
スポンサーリンク