=IF(B2>=50,"Pass","Fail")は、B2の点数が50以上かどうかを調べます。50以上ならセルにPassを、そうでなければFailを表示します。
| A | B | C | |
|---|---|---|---|
| 1 | Student | Score | Result |
| 2 | Ana | 72 | Pass |
| 3 | Ben | 45 | Fail |
| 4 | Chloe | 50 | Pass |
| 5 | Dan | 38 | Fail |
| 6 | Eve | 91 | Pass |
C2をクリックして数式を確認してから、B3のBenの点数を60に変えてみてください。結果がPassに変わります。Chloeはちょうど50点で、>=は「50以上」という意味なので合格です。>だと不合格になります。
IF関数の構文
=IF(logical_test, value_if_true, value_if_false)
logical_test(論理式)は、TRUEかFALSEになる比較や数式です:B2>=50、C2="Paid"、D2<TODAY()。value_if_true(値が真の場合)は、条件がTRUEのときにセルに表示するものです。value_if_false(値が偽の場合)は、それ以外のときに表示するものです。省略できますが、省略すると条件を満たさないときセルにFALSEと表示されます。カンマを残して引数を空にすると(=IF(B2>=50,"Pass",))、0と表示されます。
それぞれの結果には、ダブルクォーテーションで囲んだ文字列("Pass")、数値(0)、セル参照(C2)、別の数式を指定できます。引用符のない文字列は名前として読まれるので、=IF(B2>=50,Pass,Fail)は#NAME?になります。
比較演算子は=(等しい)、<>(等しくない)、>、<、>=、<=です。小数点にカンマを使う言語に設定されたExcelでは、引数をセミコロンで区切ります:=IF(B2>=50;"Pass";"Fail")。Googleスプレッドシートでも、同じIFを同じ引数で使えます。
文字列を条件にするIF
条件では、セルを文字列と比べることもできます。文字列はダブルクォーテーションで囲み、比較では大文字と小文字は区別されません。
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Order | Region | Free delivery | Exact case |
| 2 | 1001 | North | Yes | Yes |
| 3 | 1002 | South | No | No |
| 4 | 1003 | north | Yes | No |
| 5 | 1004 | East | No | No |
| 6 | 1005 | NORTH | Yes | No |
=は大文字と小文字を区別しないので、C列はNorth、north、NORTHのどれにもYesと表示します。商品コードやパスワードのように大文字と小文字が重要なときは、D列のようにEXACTで判定します。ちょうどNorthと書かれた行だけがYesになります。
ある値以外かどうかを判定するには<>を使います:=IF(B2<>"North","Standard","Free")。セルの中のどこかに特定の語が含まれるかを判定するには、IFにSEARCHが必要です。これはIS関数のページで説明しています。
計算を返すIF
IFの結果は文字列でなくてもかまいません。ここでは各担当者が、売上が1,000を超えた場合に売上の5%のボーナスを受け取り、それ以下なら何も受け取りません:
| A | B | C | |
|---|---|---|---|
| 1 | Rep | Sales | Bonus |
| 2 | Ana | $1,400 | $70 |
| 3 | Ben | $800 | $0 |
| 4 | Chloe | $1,000 | $0 |
| 5 | Dan | $2,600 | $130 |
| 6 | Eve | $1,150 | $58 |
Anaは$70(1,400の5%)、Benは$0です。Chloeの売上はちょうど1,000で、条件は「1,000より大きい」なので、彼女も$0です。C2の数式を=IF(B2>=1000,B2*5%,0)に変えると、ボーナスは$50になります。
条件では2つのセルを比べたり(=IF(B2>C2,"Over target","Under target"))、セルを計算結果と比べたり(=IF(B2>AVERAGE($B$2:$B$6),"Above average",""))もできます。
セルが空白かどうかのIF
B2=""はB2が空のときTRUEになります。まだデータのない行を飛ばして、数式の列が0で埋まらないようにするのに使います:
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Item | Qty | Price | Total | Status |
| 2 | Pens | 10 | $1.50 | $15.00 | Ordered |
| 3 | Paper | $4.20 | Not ordered | ||
| 4 | Ink | 2 | $18.00 | $36.00 | Ordered |
| 5 | Tape | $2.80 | Not ordered | ||
| 6 | Clips | 5 | $0.90 | $4.50 | Ordered |
""(間に何もないダブルクォーテーション2つ)は空の文字列なので、PaperとTapeのD列には何も表示されません。B3に数量を入力すると合計が表示されます。E列は<>""、つまり「空白ではない」で逆の判定をしています。
=""が入ったセルは空に見えますが、ISBLANKにとっては空白ではありません。ほかの数式がその列を読むときに違いが出ます。たとえばCOUNTAはこのセルを数えます。
2つの条件のIF
IFが受け取る条件は1つです。2つの条件を両方満たすことを求めるなら条件の中にANDを、どちらか一方でよいならORを入れます:
=IF(AND(B2>=50,C2>=50),"Pass","Fail")
=IF(OR(B2="North",B2="South"),"Zone 1","Zone 2")
どちらもANDとORのページで動く例を使って説明しています。A、B、C、Fのように結果が3つ以上あるときは、IFの中にIFを入れ子にするか(IFの入れ子)、IFSを使います。
練習: 発注するかどうか
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Item | Stock | Minimum | Status |
| 2 | Pens | 12 | 20 | |
| 3 | Paper | 30 | 25 | |
| 4 | Tape | 15 | 12 | |
| 5 | Ink | 8 | 10 |
やってみよう: D2で、B2の在庫がC2の最小数を下回っていれば「Reorder」、そうでなければ「OK」と表示してください。数式はD5まで下にコピーされます。
| A | B | C | |
|---|---|---|---|
| 1 | Rep | Sales | Bonus |
| 2 | Ana | $1,250 | |
| 3 | Ben | $600 | |
| 4 | Chloe | $2,300 |
やってみよう: C2で、B2の売上が1000を超えていれば売上の10%をボーナスとして返し、そうでなければ0を返してください。数式はC4まで下にコピーされます。
IFのよくある間違い
数値を引用符で囲む。 =IF(B2>"50","High","Low")はB2を数値の50ではなく、文字列の「50」と比べます。Excelではどの数値もどの文字列より小さいとみなされるので、B2がどんな数値でも条件はFALSEになり、数式は常にLowと表示します。数値は引用符なしで書きます:B2>50。
==を使う。 Excelで等しいかを調べるのは=1つです。=IF(B2=="Paid","Yes","No")と入力すると、Excelは「この数式には問題があります」と表示して数式を受け付けません。
文字列として保存された数値。 B2に'12(取り込んだデータによくある、数値に見える文字列)が入っていると、B2>=50は文字列と数値を比べることになります。文字列は常に大きいとみなされるので、条件はTRUEになり、12でも合格になります。先に列を変換してください。方法は文字列を数値に変換するページにあります。
TRUEを文字列で返す。 =IF(B2>=50,"TRUE","FALSE")は単語を文字列として返すので、ほかの数式で論理値として使えません。TRUEとFALSEが欲しいならIFは不要で、=B2>=50がそのまま返します。
閉じかっこが足りない。 IFは1つごとにかっこを1つ開くので、それぞれに)が必要です。編集中、Excelはかっこの組をそれぞれ別の色で表示するので、足りないかっこを見つけやすくなります。
よくある質問
ExcelでIFの数式はどう書きますか?
=IF(論理式, 真の場合, 偽の場合)と書きます。たとえば=IF(B2>=50,"Pass","Fail")は、B2が50以上ならPass、それ以外ならFailを表示します。結果が文字列ならダブルクォーテーションで囲み、数値やセル参照は囲みません。
IFの数式がFALSEを返すのはなぜですか?
3つ目の引数を省略しているからです。=IF(B2>=50,"Pass")は条件を満たさないときFALSEを返します。その場合の値を指定してください。たとえば空のセルに見せるなら""です:=IF(B2>=50,"Pass","")。
IF関数は大文字と小文字を区別しますか?
区別しません。=IF(B2="North","Yes","No")はNorth、north、NORTHのどれでもYesを返します。大文字と小文字まで一致させるには、条件にEXACTを使います:=IF(EXACT(B2,"North"),"Yes","No")。
IFでセルを空白にするには?
空の文字列、つまりダブルクォーテーション2つを返します。=IF(B2="","",B2*C2)はB2が空なら何も表示せず、そうでなければ積を表示します。セルには数式が入ったままなので、ISBLANKはFALSEを返します。
IFで複数の条件を判定できますか?
できます。条件の中にANDかORを入れて=IF(AND(B2>=50,C2>=50),"Pass","Fail")とするか、結果が3つ以上ならIFの中にIFを入れ子にします。Excel 2019以降では、IFSで入れ子にせずに複数の結果を扱えます。