目次
今回は、値の種類に応じたExcelのIF文の作り方や、複数のIF文の作り方をご紹介します。
IFは、Excelで最もよく使われる便利な関数の一つです。 一般に、IF文は条件をテストし、条件を満たした場合はある値を、条件を満たさなかった場合は別の値を返すために使用されます。
このチュートリアルでは、ExcelのIF関数の構文と一般的な使用方法を学び、初心者と経験豊富なユーザーの両方に役立つことを期待して、数式の例を詳しく見ていきます。
エクセルでのIF関数
IFは論理関数の一つで、ある条件を評価し、TRUEであればある値を、FALSEであれば別の値を返すというものです。
IF関数の構文は以下の通りです。
IF(logical_test、[value_if_true]、[value_if_false])ご覧のように、IFは合計3つの引数を取りますが、最初の1つだけが義務的で、他の2つは任意です。
ロジカルテスト (必須) - テストする条件。 TRUEまたはFALSEとして評価されることがあります。
Value_if_true (オプション) - 論理テストが TRUE と評価されたとき、つまり条件が満たされたときに返す値です。 省略された場合は value_if_false 引数を定義する必要があります。
Value_if_false (オプション) - 論理テストが FALSE と評価されたとき、つまり条件が満たされなかったときに返す値です。 省略された場合は value_if_true 引数を設定する必要があります。
Excelの基本的なIF式
シンプルに作成するには その場合 ステートメントをExcelで使用する場合は、このようにします。
- について 論理テスト この場合、通常は論理演算子の一つを使います。
- について value_if_true 論理テストが TRUE と評価されたときに返すものを指定します。
- について value_if_false この引数は任意ですが、予期せぬ結果を避けるために必ず設定することをお勧めします。 詳しい説明は、Excel IF: things to knowをご覧ください。
例として、セルA2の値をチェックして、値が80より大きければ「Good」、そうでなければ「Bad」を返すという非常に単純なIF式を書いてみましょう。
=IF(B2>80, "良い", "悪い")
この式はC2まで行き、C7までコピーされる。
条件を満たしたときだけ値を返し、それ以外は何も返さない場合は、undefinedの引数に空文字列("")を指定する。 例えば、以下のようになる。
=IF(B2>80, "Good", "")
この数式は、A2の値が80より大きい場合は「Good」、そうでない場合は空白のセルを返します。
エクセル If then 式:知っておくべきこと
IF関数の最後の2つのパラメータは任意ですが、基本的なロジックを理解していないと、計算式が予期せぬ結果を生む可能性があります。
value_if_trueが省略された場合
ExcelのIF式の第2引数が省略されている場合(論理テストの後にカンマが2つ連続している場合)、条件を満たしたときに0(ゼロ)が表示されますが、これはほとんどの場合において意味がありません。 以下に、そのような数式の例を挙げます。
=IF(B2>80, , "悪い")
代わりに空白のセルを返すには、次のように第2引数に空の文字列("")を指定します。
=IF(B2>80, "", "悪い")
下のスクリーンショットは、その違いを示しています。
value_if_false が省略された場合
IFの第3パラメータを省略すると、論理テストの評価値がFALSEの場合、次のような結果になります。
の後に閉じ括弧があるだけの場合 value_if_true というように、IF関数は論理値FALSEを返します。 意外でしょう? このような計算式の例を挙げてみましょう。
=IF(B2>80, "Good")
の後にカンマを入力します。 value_if_true 引数は、Excel に 0 を返すように強制しますが、これもあまり意味がありません。
=IF(B2>80, "Good",)
最も合理的な方法は、長さ0の文字列("")を使用して、条件を満たさない場合に空白のセルを取得する方法です。
=IF(B2>80, "Good", "")
ヒント:指定した条件を満たすか満たさないかで論理値を返すには、TRUEを value_if_true をFALSEとします。 value_if_false 他のExcel関数が認識できるブール値にするには、TRUEとFALSEを二重引用符で囲むと通常のテキスト値になってしまうので、囲まないでください。
ExcelでIF関数を使用する - 計算式の例
IF関数の構文に慣れたところで、いくつかの計算式の例を見て、IF関数の使い方を学びましょう。 その場合 の文を実際の場面で使用することができます。
Excel IF関数(数値入り
数値のIF文を作るには、次のような論理演算子を使用します。
- に等しい(=)。
- ()と等しくない
- より大きい (>)
- より大きいか等しい(>=)
- 未満 (<)
- 以下(<=)
上記で、ある数値が与えられた数値より大きいかどうかをチェックする、そのような式の例をすでにご覧になりましたね。
そして以下は、セルに 負数 :
=IF(B2<0, "無効", "")
負の数(0より小さい数)の場合、数式は「無効」を返し、0と正の数の場合、空白のセルを返します。
Excel IF関数(テキスト付き
一般に、テキストの値に対して、"equal to" または "not equal to" の演算子を使って IF 文を記述します。
例えば、次の式でチェックするのは 配送状況 B2において、アクションが必要かどうかを判断する。
=IF(B2="配信済み", "No", "Yes")
わかりやすく言うと、「B2が "delivered "なら "No"、そうでなければ "Yes "を返す」という式である。
同じ結果を得るための別の方法として、not equal to 演算子を使い value_if_true と value_if_false の値です。
=IF(C2 "delivered", "Yes", "No")
注意事項
- IFのパラメータにテキスト値を使う場合は、常に にじゅういんようふ .
- 他の多くのExcel関数と同様です。 IFはデフォルトで大文字小文字を区別しない 上記の例では、"delivered"、"Delivered"、"DELIVERED "を区別していない。
テキスト値に対して大文字と小文字を区別するIF文
大文字と小文字を別の文字として扱うには、IFと大文字小文字を区別するEXACT関数を組み合わせて使用します。
例えば、B2に "DELIVERED"(大文字)が含まれるときだけ "No "を返すには、次のような数式を使う。
=IF(EXACT(B2, "DELIVERED")), "No", "Yes")
セルが部分的なテキストを含む場合
を条件とする場合、その条件となるのは 部分一致 しかし、この単純明快な方法はうまくいきません。 多くの関数がワイルドカードを受け付けますが、残念なことにIFはそのうちの一つではありません。
ISNUMBERとSEARCH(大文字小文字を区別しない)またはFIND(大文字小文字を区別する)と組み合わせてIFを使用することが有効な解決策です。
例えば、「納品済み」と「未納品」の両方に「いいえ」のアクションが必要な場合、以下の式が有効です。
=IF(ISNUMBER(SEARCH("deliv", B2)), "No", "Yes")
詳しくは、こちらをご覧ください。
- ExcelのIF文によるテキストの部分一致
- セルが含まれている場合
Excelの日付付きIF文
一見、日付のIF式は数値やテキストのIF文と似ているように思えますが、残念ながらそうではありません。 他の多くの関数と異なり、IFは論理テストの中で日付を認識し、単なるテキスト文字列として解釈します。 つまり、日付を「2020/1/1」や「>2020/1」という形で与えることはできません。 IF関数が日付を認識するには、その部分をDATEVALUE関数を使用します。
例えば、ある日付が他の日付より大きいかどうかを調べる方法は次の通りです。
=IF(B2>DATEVALUE("7/18/2022"), "Coming soon", "Completed")
この式は、B列の日付を評価し、ゲームが2022年7月18日以降に予定されている場合は「Coming soon」、それ以前の日付の場合は「Completed」を返す。
もちろん、あらかじめ定義されたセル(たとえばE2)に対象日を入力し、そのセルを参照することを妨げるものはありません。 ただ、セルアドレスを$記号でロックして絶対参照にすることを忘れないでください。 たとえば、次のような感じです。
=IF(B2>$E$2, "Coming soon", "Completed")
と日付を比較する場合 現在日付 には、TODAY()関数を使用します。 例えば、以下のようになります。
=IF(B2>TODAY(), "Coming soon", "Completed")
ExcelのIF文で空白と非空白の場合
もし、あるセルが空か空でないかでデータに印をつけたい場合は、次のような方法があります。
- IF関数とISBLANKを併用する、または
- 論理式(空白と等しい)または""(空白と等しくない)を使用します。
下の表は、この2つのアプローチの違いを計算式の例で説明したものです。
論理テスト | 商品説明 | 計算式の例 | |
空白のセル | ="" | が含まれていても、セルが視覚的に空であればTRUEと評価される。 ゼロ長の文字列 . それ以外の場合は,FALSEと評価される。 関連項目: ExcelのISNA関数と計算式例 | =if(a1="", 0, 1) |
A1 が視覚的にブランクである場合は 0 を、そうでない場合は 1 を返す。
A1 に空文字列 ("") が含まれる場合、数式は 0 を返します。
がセルに含まれる場合、TRUE を評価する。 根も葉もない - 数式、スペース、空文字列を使用しない。
それ以外の場合は,FALSEと評価される。
A1が絶対空であれば0を、そうでなければ1を返す。
A1 に空の文字列 ("") が含まれる場合、数式は 1 を返します。
を持つ細胞 ゼロ長さ文字列 と思われる 貧乏くじ .
A1 が非空白の場合は 1、それ以外の場合は 0 を返す。
A1 に空の文字列が含まれている場合、数式は 0 を返します。
を持つ細胞 ゼロ長さ文字列 と思われる ノンブランク .
上の式と同じように動作しますが、A1 に空の文字列が含まれている場合は 1 を返します。
次に、空白と非空白のIF文の動きを見てみましょう。 B列に日付があるのは、すでにゲームが行われた場合だけだとします。 終了したゲームにラベルを付けるには、次のいずれかの数式を使います。
=IF(B2="", "", "完了")
=IF(ISBLANK(B2), "", "完成")
=IF($B2"", "完了", "")
=IF(ISBLANK($B2)=FALSE, "Completed", "")
テストしたセルに長さ0の文字列がない場合、すべての計算式はまったく同じ結果を返します。
2つのセルが同じかどうかをチェックする
2つのセルが一致するかどうかをチェックする数式を作成するには、IFの論理テストで等号(=)を使用してセルを比較します。 たとえば、次のようになります。
=IF(B2=C2, "同じスコア", "")
2つのセルに同じ文字列が含まれているかどうかを確認するには、EXACT関数を使用してIF式の大文字と小文字を区別するようにします。
例えば、A2とB2のパスワードを比較し、2つの文字列が全く同じであれば「一致」、そうでなければ「一致しない」と返すには、次のような式になります。
=IF(EXACT(A2, B2), "Match", "Don't match")
IF then formula で別の数式を実行する
これまでの例では、ExcelのIF文は値を返していましたが、特定の条件を満たしたときや満たさないときに、特定の計算や別の計算式を実行することもできます。 そのためには、別の関数や算術式を value_if_true または value_if_false の引数になります。
例えば、B2が80より大きい場合は7%、そうでない場合は3%を掛けてもらう。
=IF(B2>80, B2*7%, B2*3%)
Excelで複数のIF文
要するに、Excelで複数のIF文を書くには、2つの方法があるのです。
- 複数のIF関数を互いに入れ子にする
- 論理テストでのANDまたはOR関数の使用
ネストされたIF文
ネストされた IF 関数では、同じセル内に複数の IF 文を配置できます。つまり、1 つの数式内で複数の条件をテストし、それらのテストの結果に応じて異なる値を返すことができます。
目標としては、スコアに応じて異なるボーナスを割り当てることを想定しています。
- 90歳以上-10
- 90→81 - 7
- 80→70 - 5
- 70%未満 - 3
そのためには、3つのIF関数を別々に書き、次のように入れ子にします。
=IF(B2>90, 10%, IF(B2>=81, 7%, IF(B2>=70, 5%, 3%)))。
その他の数式例については、こちらをご覧ください。
- エクセル入れ子IF式
- ネストされたIF関数:例、ベストプラクティス、代替案
Excel IF文(複数条件付き
ANDやORの論理で複数の条件を評価する場合は、対応する関数を論理テストに組み込みます。
- AND - は、以下の場合に真を返します。 何れも の条件を満たしている。
- OR - は、以下の場合に TRUE を返します。 何れも の条件を満たしている。
例えば、B2、C2のスコアがともに80点以上の場合に「合格」を返すには、次のような計算式になります。
=IF(AND(B2>80, C2>80), "合格", "不合格")
どちらかのスコアが80点以上であれば「合格」とするためには、次のような計算式になります。
=IF(OR(B2>80, C2>80), "合格", "不合格")
詳しくは、こちらをご覧ください。
- ExcelのIF AND式
- Excel IF OR 関数と計算式の例
Excelでエラーが発生した場合
Excel 2007からは、IFERRORという特殊な関数で、数式のエラーをチェックします。 Excel 2013以降では、#N/Aエラーを処理するIFNA関数も用意されています。
それでも、IF関数とISERRORやISNAを併用した方が良い場合もあります。 基本的に、IF ISERRORは、エラーがあれば何かを返し、エラーがなければ別の何かを返したいときに使う式です。 IFERROR関数は、エラーでなければ常にメイン式の結果を返すので、そのようなことはできません。
例えば、B列の各スコアとE2:E4の上位3つのスコアを比較し、一致すれば「はい」、一致しなければ「いいえ」を返すには、C2にこの式を入力し、C7から下にコピーします。
=IF(ISERROR(MATCH(B2, $E$2:$E$4, 0)), "いいえ", "はい" )
詳しくは、「ExcelのIF ISERROR式」をご覧ください。
今回の例で、ExcelのIFの基本がつかめたでしょうか。 読んでくださってありがとうございました!また、来週のブログでお会いしましょう
練習用ワークブック
Excel IF文 - 数式の例 (.xlsx ファイル)