条件に応じて処理を分岐させたいときは関数IFを使うのが一般的だ。今回は、この関数IFの動作を詳しく調べていこう。関数IFの第1引数には「条件」となる論理式を記述する決まりになっている。この「条件」はどのような役割を担っているのだろうか? 具体例を示しながら色々と実験してみよう。

関数IFの基本的な使い方

まずは、関数IFの基本的な使い方を“おさらい”しておこう。関数IFを使用するときは、以下のように3つの引数を指定するのが基本だ。

・第1引数 ・・・・ 条件を論理式で指定
・第2引数 ・・・・ 条件を満たす場合の値(処理)   ※真の場合
・第3引数 ・・・・ 条件を満たさない場合の値(処理) ※偽の場合

  • 関数IFにおける条件(論理式)の役割を探る

具体的な例で示していこう。以下に示した例は、「小計が3万円以上なら送料無料(0円)、そうでない場合は送料680円」という処理を関数IFで実現したものだ。

  • 送料を自動入力する関数IF

E10セルの数値が30,000以上であった場合は、第2引数(真の場合)に指定した値(0)が「送料」として表示される。

  • 小計が3万円以上の場合

一方、E10セルが30,000未満であった場合は、第3引数(偽の場合)に指定した値(680)が「送料」として表示される。

  • 小計が3万円未満の場合

このように条件に応じて「データ」や「処理」を変化させるのが関数IFの基本的な使い方となる。特に難しい処理を行っている訳ではないので、ある程度Excelに慣れている方なら難なく内容を理解できるだろう。

条件(論理式)の結果はTRUE/FALSEになる

続いては、この関数IFの動作をもう少し詳しく見ていこう。関数IFを入力したセルを選択し、「数式」タブにある「数式の検証」をクリックする。続いて、「検証」ボタンをクリックして関数IFの動作をステップを追いながら確認していくと・・・、

  • 「数式の検証」で関数IFの動作を確認(1)

条件(論理式)の部分が「TRUE」または「FALSE」に変化するのを確認できる。条件を満たす場合は「TRUE」に、そうでない場合は「FALSE」といった文字が表示されるのを確認できるはずだ。

  • 「数式の検証」で関数IFの動作を確認(2)

このように、関数IFの第1引数は、最終的に「TRUE」または「FALSE」という値になる。そして、「TRUE」の場合は第2引数の値を表示(処理を実行)、「FALSE」の場合は第3引数の値を表示(処理を実行)、という動作が行われる。

この動作を関数IFの立場から見ると、「第1引数が最終的にTRUEになるのか、それともFALSEになるのか?」が重要といえる。極端な話、「条件」の内容は何でもよくて、最終的に「TRUE」になるのか、それとも「FALSE」になるのか、これさえ指示してもらえれば「以降に実行すべき処理を選択できる」という状況になる。

関数IFの条件にTRUE/FALSEを指定した場合

ということで、今度は関数IFの第1引数に「条件」ではなく「TRUE」を直接指定した例を見ていこう。今回の例では、第2引数(真の場合)に「OK」の文字、第3引数(偽の場合)に「【必須】数値を入力」という文字を指定している。

  • 第1引数に「TRUE」を指定した場合

「Enter」キーを押して関数IFを実行すると、第2引数(真の場合)に指定した「OK」の文字がそのまま表示されるのを確認できる。

  • 関数IFの出力結果

同様に、関数IFの第1引数に「FALSE」を指定した場合を見てみよう。この場合は、第3引数(偽の場合)に指定した文字がそのまま表示される。

  • 第1引数に「FALSE」を指定した場合

  • 関数IFの出力結果

このように、「TRUE」または「FALSE」を直接指定して関数IFを動作させることも可能である。つまり、第1引数は「条件」でなくても構わない訳だ。

とはいえ、このような使い方は処理を分岐させていないため、わざわざ関数IFを使用する意味がなくなってしまう。単純に「OK」や「【必須】数値を入力」の文字をセルに入力すれば済む話だ。そこで、次は第1引数に「セル参照」を指定した例を検証していこう。

関数IFの条件をセル参照で指定した場合

続いて紹介するのは、関数IFの条件に「C4セル」を指定した例だ。第2引数と第3引数には、先ほどの例と同じ文字が指定されている。

  • 関数IFの第1引数に「セル参照」を指定

「Enter」キーを押して関数IFを実行すると、以下の図のような結果になる。第3引数の値がそのまま表示されているので、関数IFは「偽の場合」として処理した、と考ることができる。

  • 関数IFの出力結果

もちろん、このような結果になるのには然るべき理由がある。Excelは「TRUE」と「FLASE」を数値データでも表現できるようになっている。具体的には、数値データの0(ゼロ)は「FALSE」、0以外の数値データは「TRUE」とみなす仕様になっている。また、空白セルは数値の0(ゼロ)とみなす、というルールもある。

つまり、「C4セルは空白」→「空白セルは0(ゼロ)とみなす」→「0(ゼロ)はFALSEとみなす」というルールに従って「偽の場合」として処理した、ということになる。

試しに、C4セルに0以外の数値を入力した例も紹介しておこう。この場合、C4セルは「TRUE」とみなされるので「真の場合」として処理されることになる。

  • 「0以外の数値」を入力した場合

このように関数IFの条件に「セル参照」を指定し、そのセルの値に応じて処理を分岐させることも可能だ。上記に示した例では、C4セルに0以外の数値データが入力されている場合は「OK」と表示、そうではない場合は「【必須】数値を入力」と表示、という分岐処理になる。

念のため、数値以外のデータを入力した例も紹介しておこう。以下の図のように文字列データをC4セルに入力すると、関数IFは「#VALUE!」のエラーになる。

  • 「文字列データ」を入力した場合

データが文字列であった場合は「TRUE/FLASEのどちらでもない」とみなされるため、関数IFは以降の処理を選択できなくなってしまう。その結果、エラーが発生する。

このエラーを回避するには、関数IFERRORを使ってエラー時の処理を指定してあげる必要がある。たとえば、エラー時にも「【必須】数値を入力」の文字を表示したいときは、以下の図のように関数IFERRORを追加すればよい。これで数値以外のデータにも対応できるようになる。

  • 関数IFERRORを使ったエラーの回避

  • 関数IFERRORで「文字列データ」にも対応した例

このように関数IFを使用することで、「C4セルに数値データが入力されているか?」のチェック機能を実現することが可能となる。ただし、「小数点以下を含む数値」や「マイナスの数値」を入力したときも「OK」と表示されてしまうため、かなり簡易的なチェック機能であることは否めない。よって、関数IFの動作を学ぶ一例として参考にして頂ければ幸いだ。

もういちど話をまとめておこう。今回の連載で伝えたかった内容は、

 ・関数IFの第1引数は「条件」(論理式)でなくても構わない
 ・最終的に「TRUE」または「FALSE」を示せればよい

ということだ。さらには、

 ・数値データの0(ゼロ)は「FALSE」とみなされる
 ・0以外の数値データは「TRUE」とみなされる
 ・文字列データはTRUE/FLASEのどちらでもない

ということを覚えておけば、関数IFを応用的に使えるようになる。関数IFの第1引数には「条件」(論理式)を指定するのが基本であるが、そうでなくても最終的に「TRUE」または「FALSE」とみなすことができれば、関数IFは問題なく動作してくれる。FILTERのように引数に「条件」を指定する他の関数も同様だ。

このような仕組みを理解しておくと、Excel関数をかなり応用的に活用できるようになるだろう。次回の連載で紹介するANDやORといった関数の使い方も、その動作の仕組みを無理なく理解できるだろう。覚えおくとよい。