Menu

IF関数の使い方: Excelの数式、例、よくある間違い

=IF(B2>=50,"Pass","Fail")はB2が50以上かどうかを調べ、以上ならPass、そうでなければFailを返します。IF関数の構文、文字列の条件、計算を返すIF、空白セルの判定、IFが間違った結果を返す原因を学びます。

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

=IF(B2>=50,"Pass","Fail")は、B2の点数が50以上かどうかを調べます。50以上ならセルにPassを、そうでなければFailを表示します。

合格か不合格か
C2
ABC
1StudentScoreResult
2Ana72Pass
3Ben45Fail
4Chloe50Pass
5Dan38Fail
6Eve91Pass
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

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

条件では、セルを文字列と比べることもできます。文字列はダブルクォーテーションで囲み、比較では大文字と小文字は区別されません。

North地域は送料無料
C2
ABCD
1OrderRegionFree deliveryExact case
21001NorthYesYes
31002SouthNoNo
41003northYesNo
51004EastNoNo
61005NORTHYesNo
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

=は大文字と小文字を区別しないので、C列はNorth、north、NORTHのどれにもYesと表示します。商品コードやパスワードのように大文字と小文字が重要なときは、D列のようにEXACTで判定します。ちょうどNorthと書かれた行だけがYesになります。

ある値以外かどうかを判定するには<>を使います:=IF(B2<>"North","Standard","Free")。セルの中のどこかに特定の語が含まれるかを判定するには、IFにSEARCHが必要です。これはIS関数のページで説明しています。

計算を返すIF

IFの結果は文字列でなくてもかまいません。ここでは各担当者が、売上が1,000を超えた場合に売上の5%のボーナスを受け取り、それ以下なら何も受け取りません:

1,000を超えたらボーナス
C2
ABC
1RepSalesBonus
2Ana$1,400$70
3Ben$800$0
4Chloe$1,000$0
5Dan$2,600$130
6Eve$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で埋まらないようにするのに使います:

数量のない行を飛ばす
D2
ABCDE
1ItemQtyPriceTotalStatus
2Pens10$1.50$15.00Ordered
3Paper$4.20Not ordered
4Ink2$18.00$36.00Ordered
5Tape$2.80Not ordered
6Clips5$0.90$4.50Ordered
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

""(間に何もないダブルクォーテーション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を使います。

練習: 発注するかどうか

発注チェック
D2
ABCD
1ItemStockMinimumStatus
2Pens1220
3Paper3025
4Tape1512
5Ink810
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

やってみよう: D2で、B2の在庫がC2の最小数を下回っていれば「Reorder」、そうでなければ「OK」と表示してください。数式はD5まで下にコピーされます。

10%のボーナス
C2
ABC
1RepSalesBonus
2Ana$1,250
3Ben$600
4Chloe$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で入れ子にせずに複数の結果を扱えます。

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

Coddyでコードを学ぼう

始める