簡単な関数の挿入(3)~ IF関数 ~

ROUND関数やSUM関数、AVERAGE関数など数字を扱うものは正統派の関数という感じがありますが、前項のLOOKUP関数なども初めての方には面白く感じられたと思います。

本項で解説する関数は、個人的には一番好きな関数であると同時に、用途としては非常に広く使える関数になります。その関数の名前は、

IF(イフ)関数

といいます。用途が広いというのは、いろいろな関数と組み合わせることができる包括的な関数であるためで、関数の中に関数を入れて使う ようなイメージで使用することができます。

このような関数は数多くありますが、なかでも入門的で面白い関数の代表格になるものだと思います。その大きな特徴が、「IF(もし~なら)」の名のとおり、

「もし〇〇が□□なら、△△の値を返す」

というように選択的に返す値が異なってくる関数であることです。たとえば、「あるセルの値が10以上なら"〇"を、10より小さければ"☓"を」といった使い方です。

当然、二者択一のような狭い範囲ではなく、条件を増やすこともできます。「10以上の場合、20以上の場合、30以上、40以上・・・」と条件を増やしてもかまいません。(上限は、IF関数の中にIF関数が7つまで。詳しくは後述します)

そんなに用途があるのかと思われるかもしれませんが、人間の経済行動や消費活動と同様、「選択」というのは多くの場面で行っているもので、例題で基礎を身につけてしまえば、新たな用途を自ら考え出すことができると思います。

それでは、例題を使って練習してみましょう。

例題
例題9 IF関数の学習用

やり方は、「IF関数」の列にIF関数を記述し、「値A」、「値B」に値を入力した場合の算出値をみていきます。それぞれの「条件」に合うようにIF関数を記述します。

また、「真の場合」と「偽の場合」の意味は、条件を満たす場合が「真」で、条件を満たさない場合が「偽」になるということです。つまり、条件に一致するときは「真」の値を表示させ、一致しないときは「偽」の値を表示させるというIF関数の仕様に合わせています。

まずは表の一番上の行からです。行3の例題の意味は、「A3」の値と「B3」の値が一致する真の場合は「〇」と表示させて、一致しない偽の場合は「☓」を表示させるという意味です。

すでに「A3」セルには「60」の値が入力されていますので、「B3」セルに「60」が入力されたら「〇」、60以外なら「☓」を表示させるように、「F3」セルにIF関数を記述してみましょう。

これまでと同様に「数式バー」横の「fx(関数の挿入)」ボタンから関数を選択します。IF関数は、分類メニューの「論理」の中にあります。

IF関数の「関数の引数」ウィンドウで、下図のとおり、「論理式」「真の場合」「偽の場合」を記述し、「OK」ボタンで完了です。

IF関数の「関数の引数」ウィンドウのイメージ

上から順に、「論理式」には、「もし〇〇が□□だったら」の部分を記述します。この場合は、「A3」の値が「B3」の値と同じだったなら、という論理式を記述します。

つまり、簡単に「A3=B3」と記述すれば良いわけです。A3セルをクリックして「=」を入力しB3セルをクリックします。これで「A3セルの値とB3セルの値が一致するとき」というところまでの論理を記述したことになります。

では、それが真の場合は「〇」を記述し、偽の場合は「☓」を記述して完成です。「真の場合」に「〇」を記述し、「偽の場合」に「☓」を記述します。

IF関数の「関数の引数」ウィンドウに引数を入力したイメージ

ここで注意が必要なのは、IF関数のテキストボックスに引数を入力したあとにテキストボックスを移動すると、「""」が、記述した引数に付記される場合です。この場合では「〇」と「☓」に対して「""」が付記されます。これは、

入力した値が、文字列であることを示してる

のです。つまり、数字ではなく文字列を表示させるという意味の記号になります。このことはIF関数において重要なポイントでもあるので覚えておいてください。

これで「OK」ボタンで、F3セルにIF関数の式「=IF(A3=B3,"〇","☓")」が記述されます。慣れてくると直接記述したほうが早いかもしれません。

IF関数が記述されたセルのイメージ

上図のように、F3セルは「☓」が表示されています。B3セルに「60」を入力してみましょう。F3セルの値が「〇」に変化することを確認してください。

「F3」セルの値が「〇」に変化したイメージ

また、「60」以外の数字を入力すると、F3セルが「☓」になることも確認してみてください。

では次の例題です。条件が「BがAより大きい」ですので、論理式はどうなるでしょうか?数学の問題のようですが、単純な不等号であらわすことができます。つまり「A4<B4」(または「B4>A4)になります。

それが真の場合は、「C4セルの値」を表示するので、そのままC4セルをクリックして「C4」となり、偽の場合は同様に「☓」を記述します。

IF関数の「関数の引数」ウィンドウに引数を入力したイメージ

ここで、真の場合の「C4」には「""」が付記されていないことを確認してください。

同様に、B4セルにいろいろと数値を入力してみましょう。A4<B4の場合、つまり100より大きい値の場合は、C4の「BがAより大きい」という文字列が表示され、100より小さいの場合は「☓」が表示されることを確認してください。

また、C4セルの値を表示するということは、C4セルの値を変更すると、ともなって値が変化するということです。あわせて確認しておきましょう。

次は、条件が「BがA以上」です。これは、簡単な数学の問題です。先ほどの「A4<B4」とどう違うのかというと、不等号の違いが問題となります。

例えば「100より大きい」ということは、100を含まない ので、不等号のみであわらすことができますが、「100以上」となると、100も含む ので、等号付き不等号を用いなければなりません。

この場合、単一文字で記述することはできません。そのため不等号と等号を組み合わせて記述します。「BがA以上」は「B<=A」と記述します。逆の場合は、「A>=B」となります。つまり、不等号の右側に等号を付け加えるということです。

したがって、論理式は「A5<=B5」となり、真の場合に「C5」、偽の場合に「☓」を記述します。

IF関数の「関数の引数」ウィンドウに引数を入力したイメージ

同様に値の変化を確認しておきましょう。

次は、条件が「A-Bが正数」の場合です。つまり、A>Bでなおかつ正数(0より大きい)の場合ですが、ややこしく考える必要はありません。単純に「A-B>0」とすればよいのです。

つまり、論理式は「A6-B6>0」となります。真の場合、偽の場合も単純にそれぞれ「A3+B3」と「A4-B4」の式を記述して完成です。

IF関数の「関数の引数」ウィンドウに引数を入力したイメージ

次はほんの少しだけ応用編です。論理式に数値的にあらわすことができない文字列を指定する場合です。A7セルの値に「どぉあいじょぶでゃ」という文字列が入力されている場合のみ、B7セルの文字列「good!」を表示し、一致しない場合は、指定する文字列「ちゃんと書け」を表示させます。

論理式はどうなるでしょうか?単純に「A7=どぅあいじょぶでゃ」と記述すると赤字で「=#name?」というエラーが表示されてしまいます。

IF関数の「関数の引数」ウィンドウに引数を入力したイメージ

これは、文字列を扱うルールに違反しているからです。文字列には「""」を付記しなければいけません。つまり、「A7="どぅあいじょぶでゃ"」と記述するのが正解となります。

このように「論理式」に文字列を入力する場合は、真の場合や偽の場合の欄のように、自動的に「""」を付記してくれない ため、直接記述する必要があるので注意してください。

引数の入力は下図のとおりとなります。「どぅあいじょぶでゃ」が入力できない方は、ローマ字入力の準備と入力の仕方 を参照してください。

IF関数の「関数の引数」ウィンドウに引数を入力したイメージ

以上でIF関数の基礎的な活用については学習できたと思います。対象セルの値を変化させて、真の場合と偽の場合の変化を確認しておきましょう。次からは少しずつ難易度が上がっていきます。

これまでは条件が2つで、大か小か、一致するかしないか、というような二者択一でしたが、IF関数では前述のようにいくつもの条件を組み込んでいくことができます。

次の例題は、値A「60」と比べて、小さければ「☓」、同じであれば「〇」、大きければ「◎」という3つ条件を指定しなければなりません。

このように、3つ以上の条件があるとき、IF関数の引数をどのように記述するかというと、

IF関数のなかに、さらにIF関数を記述して条件を増やす

という方法を用います。具体的には、真の場合の引数にさらにIF関数を組み込む、または偽の場合の引数にさらにIF関数を組み込むという方法です。

では例題の場合はどうなるでしょうか? 考えなければならないのは、始まりとなる論理式です。始まりとは、どの論理式をスタートの条件とするかということすが、条件をすべて洗い出すと、「A11>B11」「A11=B11」「A11<B11」の3つです。

実際には、どれを最初の論理式に使ってもOKです。つまり、3パターンの記述方法があるということなのですが、まず、「A11>B11」を最初の論理式にしてみましょう。

これは、「BのほうがAより小さい」場合ですから、この条件をスタートの条件とすると、真の場合はもうこの他に条件はあてはまりません。一方、偽の場合を考えてみると、偽に含まれるのは、「BのほうがAより大きい場合」だけではなく、「BとAが一致する場合」を含む「BはA以上」が偽の場合の範囲になります。

つまり、偽の場合に2つの条件が重なることになるのです。したがって、真の場合は「"☓"」となり、偽の場合に、さらにIF関数を追加して、条件を追記します。

IF関数の「関数の引数」ウィンドウに引数を入力したイメージ

上図のようなイメージとなりますが、「偽の場合」にカーソルをおいた状態で、画面左上の下向き三角ボタンをクリックしてリストメニューからIF関数を選択します。リストになければ(または空白の場合は)、「その他の関数」を選択すると「関数の挿入」ウィンドウが表示されますので、IF関数を選択して挿入してください。

名前ボックスから関数を選択しているイメージ

すると、また新たなIF関数のウィンドウが表示されますので、ここに条件を入力します。この論理式は、「A11>B11」が偽であることを前提とした論理式であることを頭においてください。つまり、「B11はA11以上」を前提とした論理式です。

ここでも2通りの記述方法がありますが、「A11=B11」を論理式としましょう。すると、ここでの真の場合は当然、AとBが一致する場合だけですから「"〇"」となり、偽の場合も、前提として「B11はA11以上」なのですから、もう「BはAより大きい」場合しかあてはまりません。したがって、ここで偽の場合に「"◎"」が入ります。

IF関数の「関数の引数」ウィンドウに引数を入力したイメージ

これで完成です。完成形は下図のようになります。

IF関数の「関数の引数」ウィンドウに引数を入力したイメージ

式は「=IF(A11>B11,"☓",IF(A11=B11,"〇","◎"))」となります。

他にも、「A11=B11」を最初の論理式とした場合は、下図のようなパターンがあり、

IF関数の「関数の引数」ウィンドウに引数を入力したイメージ

また、「A11<B11」を最初の論理式とした場合は、下図のようなパターンが考えられます。

IF関数の「関数の引数」ウィンドウに引数を入力したイメージ

いずれの方法であっても同じ結果が得られることを、B15セルに任意の値を入力して、確認しておきましょう。

このような、IF関数のなかにIF関数を入れるのは、最大で7つまでとなっていますが、そこまでの論理式を組み立てることができるのは、よほど頭の良い方だけでしょうから、気にする必要はないと思います。まずは、慣れてからどんどんと複雑なIF関数に取り組んでみてください。

では、例題の最後です。これは少しイレギュラーなもので、それほど使用頻度があるとは思われませんが、知っておくと便利な方法です。

複数の条件を満たす場合というのは、「AかつB」または「AかつBかつC」であり、その条件をすべて満たす場合が「真」で、満たさない場合(ひとつでも満たさない場合)は「偽」となります。

つまり、論理式がひとつではない ということです。論理式を増やすには、別の関数を使います。その関数は、

AND(アンド)関数

になります。ただし、読んで字のごとく「AND」を和訳すると少し混乱します。数学的な「AND」と「OR」の違いに気を付ける必要があります。「AND」は「かつ」、「OR」は「または」の意味で使用されます。

したがって、「OR関数」も同じように使用できますが、本項では割愛して「AND関数」だけの解説にとどめたいと思います。

具体的な使用方法は、「IF関数の引数」ウィンドウを開いた状態で、IF関数を入れ子にするときと同様に、画面左上の下向き三角ボタンをクリックしてリストメニューからAND関数を選択します。リストになければ(または空白の場合は)、「その他の関数」を選択すると「関数の挿入」ウィンドウが表示されますので、AND関数を選択して挿入してください。

名前ボックスから関数を選択しているイメージ

すると、下図のようにAND関数の引数ウィンドウが立ち上がります。

AND関数の「関数の引数」ウィンドウのイメージ

この「論理式1」と「論理式2」に条件を記述していきます。また、論理式は記述するごとに自動的に追加されていきます。

AND関数の「関数の引数」ウィンドウに引数を入力したイメージ

これで、複数の条件を指定することができました。ここで注意が必要なのは、「OK」ボタンを押してしまうと、IF関数の引数ウィンドウに戻らずに、関数の記述が終了してしまうということです。「入力した数字は正しくありません」というエラーが表示されます。

この状態では、IF関数の論理式が記述できたに過ぎませんので、「OK」ボタンで終了させずに、ここでは下図のように「数式バー」に記述した「IF」のあたりをクリックします。

「数式バー」に記述したIF関数式のイメージ

すると、IF関数の引数ウィンドウに戻ります。下図のように複数の論理式が記述されていることを確認してください。そして真の場合に「〇」、偽の場合に「☓」を記述して完成となります。

IF関数の「関数の引数」ウィンドウに引数を入力したイメージ

このように、IF関数で(IF関数に限らず)関数を入れ子方式に記述した場合、それぞれ関数の引数ウィンドウを切り替えるには、数式バーの該当する関数の文字部分をカーソルで選択します。

再びAND関数のウィンドウを表示させたい場合は、「AND」部分をクリックすればよいというわけです。もし「OK」ボタンで戻ってしまった場合は、「fx」ボタンを押すと関数式が立ち上がりますので、数式バーの該当部分をクリックして記述しなおしてください。

この場合も、A15セルとB15セルに任意の値を入力して、正しい結果が返されることを確認しておきましょう。

以上でIF関数の基礎は終了です。最後に、下記の練習課題で取り組んでみましょう。少し難解な課題もありますが、仕組みを理解できていれば習得は容易だと思います。

練習課題
課題8 IF関数の練習課題

本項の練習課題は解説をつけます。

まず表の上から、条件が3つの場合です。「A+Bの値が100以上」を論理式としてIF関数を組み立てていくと、論理式は「A+B>=100」となり、これが真の場合は「A+B」となります。

一方、偽の場合は100未満の値はすべて含まれます。「A+Bが50以上」の場合と「A+Bが50未満」の場合が含まれるので、さらにIF関数を組み込みます。

したがって、偽の場合に「A+B>=50」を論理式とするIF関数を記述します。すると、このIF関数の真の場合は「A3-B3」となり、偽の場合は、文字列で「"がんばりましょう"」となります。

「数式バー」に記述したIF関数式のイメージ

次は、論理自体は簡単ですが、「空白(スペース)」をどのように記述するか、という問題です。これは知っておかなければできませんが、実によく利用される方法です。

IF関数をこのように使うと、一見普通の空白セルを装っておいて、値が入力されると自動的に処理値を返すという、ある意味、美しい技となります。

空白の記述は文字列と同じ考え方をします。ダブルクォーテーション2つ「""」で空白になります。この場合のIF関数は、論理式が「A4セルが空白」の場合なので、「A4=""」となり、真の場合に「""」、偽の場合に「A4*B4」となります。

IF関数の「関数の引数」ウィンドウに引数を入力したイメージ

最後は少し難解です。問題の意味もよくわからないかもしれませんが、A5セルに「ベンツ」「不死鳥ラーミア」「孫悟空の背中」のいずれかを入力し、B5セルに任意の距離数を入力すると、下表に該当する金額をIF関数を使って表示させるというわけです。

考え方は、論理式が「ベンツ」「不死鳥ラーミア」「孫悟空の背中」と一致する場合は真、一致しない場合は偽として、それぞれにLOOKUP関数を埋め込みます。

まず、最初の論理式は「A5="ベンツ"」とします。真の場合は、表の「ベンツ」の行をLOOKUP関数で指定します。行を指定するのですから、使う関数は「HLOOKUP関数」を使用します。(LOOKUP関数については前項を参照してください)

IF関数の「関数の引数」ウィンドウに引数を入力したイメージ

この場合も、前述のように「OK」ボタンを押してしまうと関数の記述が終了してしまいますので、同様に数式バーをクリックしてIF関数の引数ウィンドウに移動します。

このように、IF関数には他の関数を入れ子にすることができます。もうおわかりのとおり、偽の場合にもう一度、IF関数を入れ子にします。今度は「不死鳥ラーミア」を論理式として、真の場合に、表の「不死鳥ラーミア」の行をHLOOKUP関数で指定します。

ただし、注意が必要なのは、このまま、偽の場合に「孫悟空の背中」を検索するHLOOKUP関数を記述してはならないということです。

そうしてしまうと、「ベンツ」と「不死鳥ラーミア」以外はすべて「孫悟空の背中」が適用されてしまいます。したがって、偽の場合にはさらにもう一度、「孫悟空の背中」を論理式とするIF関数を入れ子にします。

真の場合に、表の「孫悟空の背中」の行をHLOOKUP関数で指定し、偽の場合には、任意で何かを指定してください。一例として「"正しい乗り物を入力してください"」としてみました。

「数式バー」に記述したIF関数式のイメージ

こうすると、A5セルに「ベンツ」「不死鳥ラーミア」「孫悟空の背中」以外が記述された場合、「正しい乗り物を入力してください」と表示されます。「課題8」の2つ目のシートが回答付きとなっていますので、参考にしてください。

さて、ここまでできると、ほぼ完ぺきにIF関数の基礎は学習できていると思います。いろいろな用途に使用できそうな関数です。もう思いついた方もあるのではないでしょうか?

更新履歴

2012年1月6日
ページを公開。
2017年12月29日
ページをSSL化によりHTTPSに対応。

参考文献・ウェブサイト

当ページの作成にあたり、以下の文献およびウェブサイトを参考にさせていただきました。

文献
なし
ウェブサイト
なし