条件に応じて処理を分岐させたいときは関数IFを使うのが一般的だ。今回は、この関数IFの動作を詳しく調べていこう。関数IFの第1引数には「条件」となる論理式を記述する決まりになっている。この「条件」はどのような役割を担っているのだろうか? 具体例を示しながら色々と実験してみよう。
関数IFの基本的な使い方
まずは、関数IFの基本的な使い方を“おさらい”しておこう。関数IFを使用するときは、以下のように3つの引数を指定するのが基本だ。
・第1引数 ・・・・ 条件を論理式で指定
・第2引数 ・・・・ 条件を満たす場合の値(処理) ※真の場合
・第3引数 ・・・・ 条件を満たさない場合の値(処理) ※偽の場合
具体的な例で示していこう。以下に示した例は、「小計が3万円以上なら送料無料(0円)、そうでない場合は送料680円」という処理を関数IFで実現したものだ。
E10セルの数値が30,000以上であった場合は、第2引数(真の場合)に指定した値(0)が「送料」として表示される。
一方、E10セルが30,000未満であった場合は、第3引数(偽の場合)に指定した値(680)が「送料」として表示される。
このように条件に応じて「データ」や「処理」を変化させるのが関数IFの基本的な使い方となる。特に難しい処理を行っている訳ではないので、ある程度Excelに慣れている方なら難なく内容を理解できるだろう。
条件(論理式)の結果はTRUE/FALSEになる
続いては、この関数IFの動作をもう少し詳しく見ていこう。関数IFを入力したセルを選択し、「数式」タブにある「数式の検証」をクリックする。続いて、「検証」ボタンをクリックして関数IFの動作をステップを追いながら確認していくと・・・、
条件(論理式)の部分が「TRUE」または「FALSE」に変化するのを確認できる。条件を満たす場合は「TRUE」に、そうでない場合は「FALSE」といった文字が表示されるのを確認できるはずだ。
このように、関数IFの第1引数は、最終的に「TRUE」または「FALSE」という値になる。そして、「TRUE」の場合は第2引数の値を表示(処理を実行)、「FALSE」の場合は第3引数の値を表示(処理を実行)、という動作が行われる。
この動作を関数IFの立場から見ると、「第1引数が最終的にTRUEになるのか、それともFALSEになるのか?」が重要といえる。極端な話、「条件」の内容は何でもよくて、最終的に「TRUE」になるのか、それとも「FALSE」になるのか、これさえ指示してもらえれば「以降に実行すべき処理を選択できる」という状況になる。
関数IFの条件にTRUE/FALSEを指定した場合
ということで、今度は関数IFの第1引数に「条件」ではなく「TRUE」を直接指定した例を見ていこう。今回の例では、第2引数(真の場合)に「OK」の文字、第3引数(偽の場合)に「【必須】数値を入力」という文字を指定している。
「Enter」キーを押して関数IFを実行すると、第2引数(真の場合)に指定した「OK」の文字がそのまま表示されるのを確認できる。
同様に、関数IFの第1引数に「FALSE」を指定した場合を見てみよう。この場合は、第3引数(偽の場合)に指定した文字がそのまま表示される。
このように、「TRUE」または「FALSE」を直接指定して関数IFを動作させることも可能である。つまり、第1引数は「条件」でなくても構わない訳だ。
とはいえ、このような使い方は処理を分岐させていないため、わざわざ関数IFを使用する意味がなくなってしまう。単純に「OK」や「【必須】数値を入力」の文字をセルに入力すれば済む話だ。そこで、次は第1引数に「セル参照」を指定した例を検証していこう。
関数IFの条件をセル参照で指定した場合
続いて紹介するのは、関数IFの条件に「C4セル」を指定した例だ。第2引数と第3引数には、先ほどの例と同じ文字が指定されている。
「Enter」キーを押して関数IFを実行すると、以下の図のような結果になる。第3引数の値がそのまま表示されているので、関数IFは「偽の場合」として処理した、と考ることができる。
もちろん、このような結果になるのには然るべき理由がある。Excelは「TRUE」と「FLASE」を数値データでも表現できるようになっている。具体的には、数値データの0(ゼロ)は「FALSE」、0以外の数値データは「TRUE」とみなす仕様になっている。また、空白セルは数値の0(ゼロ)とみなす、というルールもある。
つまり、「C4セルは空白」→「空白セルは0(ゼロ)とみなす」→「0(ゼロ)はFALSEとみなす」というルールに従って「偽の場合」として処理した、ということになる。
試しに、C4セルに0以外の数値を入力した例も紹介しておこう。この場合、C4セルは「TRUE」とみなされるので「真の場合」として処理されることになる。
このように関数IFの条件に「セル参照」を指定し、そのセルの値に応じて処理を分岐させることも可能だ。上記に示した例では、C4セルに0以外の数値データが入力されている場合は「OK」と表示、そうではない場合は「【必須】数値を入力」と表示、という分岐処理になる。
念のため、数値以外のデータを入力した例も紹介しておこう。以下の図のように文字列データをC4セルに入力すると、関数IFは「#VALUE!」のエラーになる。
データが文字列であった場合は「TRUE/FLASEのどちらでもない」とみなされるため、関数IFは以降の処理を選択できなくなってしまう。その結果、エラーが発生する。
このエラーを回避するには、関数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といった関数の使い方も、その動作の仕組みを無理なく理解できるだろう。覚えおくとよい。