Shift
+2
で入力できます。
戻る
今回はEXCELの関数の一つである「IF」(イフ)関数について解説をします。
教科書を持っている場合は、第4章11「条件判定と順位付け」P.152も合わせて参照してください。
今回のテーマは「IF」(イフ)と呼ばれる関数ですが、その前にEXCELの関数について復習をしておきます。
EXCELでは「関数」を利用すると、特定の処理を簡単に行えます。
関数は、セルに以下のような数式を書くことでその効果を発揮します。
= 関数名 ( 引数 , 引数 , 引数 … )
名前 | 概要 | 例 |
---|---|---|
関数名 | 関数の名称。 関数を指定して様々な処理を行えます。 | SUM / AVERAGE / COUNTA など |
引数 | 関数の計算に使用する値。 「ひきすう」または「いんすう」と呼びます。 複数書く場合はカンマ「 , 」で区切ります。 | セル A1 / セル範囲 A1:B1 数値 123 / 文字列 "テスト" など |
=SUM( A1:C10 )
上の場合、A1セルからC10セルまでの範囲に書かれている数値を全て合計し、その結果を画面に表示します。
これが基本的な関数の書き方でした。
今回は関数の一種である「IF」(イフ)関数をつかった処理を中心に演習を行います。
IF関数を利用すると、特定の条件を満たしているかどうかを自動的に判定し、その結果に応じて画面に表示する内容を変えられます。
2種類の内容のうちのどちらかが画面に表示されるので、「YES/NO判定」や「合否・不合格判定」など、2択を自動的に行えるメリットがあります。
例えば、注意が必要な箇所に自動的にメッセージを出すようにすれば、データのチェックなどにも使えますので、ぜひIF関数を活用してください。
IF関数は下のように3つの引数を必要とします。
=IF( 論理式 , 真の場合の処理 , 偽の場合の処理 )
IF関数では判断の元になる「特定の条件」を定めるための式を「論理式」と呼びます。
「論理式」で定めた条件を満たしたら「真の場合(TRUE)」、条件を満たさなかったら「偽の場合(FALSE)」のどちらか一方の処理が実行されます。詳しくは後述します。
論理式は具体的には、A1 > 1200
、A1 = B1*5%
、A1 = "男"
のように書きます。 簡単に言うと ○>○
のような形式で、「右辺」と「左辺」を不等号などを使って「比較」するように書きます。
論理式の右辺と左辺には、それぞれ以下のようなものを書けます。
比較対象 | 例 | 説明 |
---|---|---|
セル | A3 | 指定のセルに書かれた値を比較します。 |
数値 | 1200 | 指定の数値と比較します。 |
数式 | (A1+B4)*2 | 四則演算を行った結果と比較します。 |
関数 | SUM(A1:D10) | 関数の計算結果と比較します。 |
文字列 | "好きな文字" | 指定の文字に一致するかどうかで比較します。 文字列はダブルクォート「 " 」で囲います1)。 |
右辺と左辺をどのように比較するか指定する記号を「比較演算子」と言います。以下の種類があります。
比較演算子 | 説明 |
---|---|
< | 左辺は右辺より小さい |
> | 左辺は右辺より大きい |
<= | 左辺は右辺以下 |
>= | 左辺は右辺以上 |
= | 左辺と右辺は等しい |
<> | 左辺と右辺は等しくない |
<
や >
記号を入力するには、それぞれキーボードで Shift
+ね
や Shift
+る
キーを押すと良いでしょう(キーボード右下の方にあります)。
「以上 >=」「以下 <=」という比較は、右辺と左辺が等しい場合も成り立ちますが、「より大きい>」「より小さい<」という比較は、一方が他方を上回っていないと成り立ちません。
たとえば「60点以上は合格」の場合、60点は合格ですが、「60点より大きいと合格」なら、60点は合格ではありません。61点から合格です。
イコール「=
」が付いていたら、同値でも成り立つと考えると分かりやすいでしょう。
これらを組み合わせて A1 < 1200
や SUM(A1:D1) >= 80
のように論理式を組み立てるのです。
そして、この論理式が成り立ったら「真の場合」の処理が、成り立たなかったら「偽の場合」の処理というふうに、どちらか一方が実行され、自動二択となるのです。
=IF( 論理式 , 真の場合の処理 , 偽の場合の処理 )
なおIF関数の論理式は比較を一度だけ行えます。つまり 100 < A2 < 200
のような書き方は、比較を2回行おうとしているのでエラーが発生します。3つのものを比較することは原則できません。
「真」の場合や「偽」の場合には、それぞれ以下のような処理が行なえます。
処理 | 例 | 処理内容 |
---|---|---|
文字列を表示 | "合格" | 指定の文字を表示します。 文字の周囲はダブルクォート2)「 " 」で囲ってください。数値の場合はダブルクォートで囲う必要はありません。 |
計算 | A1+B5 | 計算結果を表示します。 |
他の関数を実行 | SUM(A1:A4) | 関数の計算結果を表示します。 |
何も書かない | 真の場合は「TURE 」、偽の場合は「FALSE 」と表示します。 |
「真」と「偽」のそれぞれに処理を用意しておけば、論理式の条件を満たしているか、いないかで、2通りの処理のどちらかを行えます。
条件に応じて2種類の文字のどちらかを表示したり、2種類の計算のどちらかを実行したりできるわけです。
IF関数を使う具体的な例をいくつかあげて解説します。
=IF( F4>=C4 , "有利" , "不利" )
上の例の場合、もし(IF)F4セルに書かれた値がC4セルに書かれた値以上(F4>=C4
)なら「有利」、そうでなければ「不利」と画面に表示されます。
=IF( A1="セール" , A2*0.8 , A2 )
上の例の場合、もし(IF)A1セルに「セール」と書かれていたら(A1="セール"
)、A2セルの値に0.8を掛けた数値(A2*0.8
)を、そうでなければA2セルの値をそのまま(A2
)画面に表示します。
つまりA1セルに「セール」と書いてあった時だけ2割引きの数値が表示され、それ以外の時は割引きなしで表示されます。
=IF( D4="", "記入してください" , "" )
この例の場合、もし(IF)D4セルに何も書いていなかったら(D4=""
)、「記入してください」と画面に表示されます。逆に何かが書いてあるなら、なんのメッセージも表示されません。つまり、D4セルが空欄の場合にだけ「何か書いてくれ」とうながす事ができます。
このように、文字列が無く、空欄である状態は「""
」で表します。文字の周囲はダブルクオート「"
」で囲い「"好きな文字"
」のように表すというのが基本ルールですから、文字がまったく無いときは""
だというわけです。
この""
という書き方は「とあるセルに何も書いていない状態」を論理式で表す時に使えますし、IFで判定を行った結果「何も表示したくない」時にも使えます。
なお上記の処理で「判定結果には何も書かなくて良いんでしょ?」ということで、以下のように書いたとしましょう。するとおかしなことが起こります。
=IF( D4="", "記入してください" )
このように偽の場合の引数を完全に「省略」して「本当に何も書かない」と、真の場合は「記入してください」と正しく表示されますが、偽の場合は、画面上に「FALSE」と表示されてしまいます3)。注意しましょう。
画面に何も表示したくないときは「""
」を使うようにしましょう。
練習問題ファイルの「IFその1」シートを開いてください。
架空の商品の売上データが書かれています。「判定」欄でIF関数による処理を行います。
「合計」欄の数値が27,000以上の時には「○」が、「合計」欄の数値が27,000未満の時には「×」が表示されるよう設定してください。(「○」と「×」は、それぞれ「まる」「ばつ」と入力して漢字変換すると良いでしょう)
IF関数の具体的な入力方法については、いくつかの方法があります。
IF関数を手書きする方法です。慣れると素早く入力できます。
F4 >= 27000 , "○" , "×"
,
)で区切って並べます。Enter
キーを押すと完成します。作成したIF関数は最終的に以下のようになります。
=IF( F4>=27000 , "○" , "×" )
もし(IF)、F4セルに書かれている値が27000以上(F4>=27000
)なら「○」が、そうでなければ「×」が画面に表示されるという処理になります。
ひとつ下の商品も同様に処理します。ここでは「関数の挿入」ボタンを使って入力する方法を解説します。
この方法はEXCEL初心者向けの入力方法です。
F5>=27000
」「真の場合」欄に "○"
「偽の場合」欄に "×"
と入力します。Enter
キーを押すと、判定結果が出ます。
このように入力パネルを使った入力でもIF関数を作成できます。
関数の名称などをあまり覚えていなくても、リストから選ぶだけで入力できるので便利です。
その他、引数の数が多く、複雑な関数を入力する場合も、「関数の挿入」ボタンを使って入力の補助を受けると楽に入力できます。
まさに初心者向きの方法と言えます。
関数の処理はリアルタイムで行われますので、元の値が変化すれば、IF関数の判定結果も変化します。
例えば下の例では「合計」欄の数値を書き換えていますが、入力値に合わせてIF関数の結果「○」と「☓」が自動的に変化している様子が分かります。
このように、刻々と値が変化する状況でもIF関数は常に正しい結果を返します。うまく活用してください。
回答が終わったら、続く「練習1」~「練習3」シートも同様の方法で回答してください。
シート内には回答のヒントになるメッセージがありますので参考にしてください。
人間が行うと面倒でミスを起こしやすい作業も、IF関数を使って簡単に行なえるのでぜひ活用してください。
練習問題ファイルの「練習4」シートについて解説をします。
この問題は、あるキャンペーンの処理を行うものです。
C4~C13セルの「性別」欄にIF関数で判定を行ってください。
1つ左の「性別ID」欄に書かれた数値に応じて「性別」欄には以下の3種類の結果が表示されるようにしてください。
なんと三択です! IF関数では処理できないように思えますが、どうでしょう。
具体的な処理方法について、下の項目で解説します。
IF関数は論理式で定めた条件を満たしているかどうかで、「真」か「偽」かの2通りの結果を返します。 1つのIF関数で3通り以上の結果返すことは仕様上できません。
ではどうするかと言うと、IF関数の中でもう一度IF関数を呼び出すことで3種類以上の結果を返せるようになります。
処理の流れは次のようになります。
今回の例の場合、以下の手順で処理します。
これで3種類の結果を返すことができるようになります。
この処理を数式に書き起こすと、以下のようになります。IF()
の内部にさらにIF()
が入っており、二重構造になっている様子がわかります。
=IF( B4=0 , "男", IF(B4=1,"女","入力ミス") )
このように次々とIF関数を呼び出す処理を続ければ、4種類、5種類と結果のパターンを増やすこともできます。
このあたりは、操作がややこしいので、注意してください!😂
上のような処理をする場合、IF関数の「真」「偽」の入力欄にさらにIF関数を書き込む必要があります。 手書きでIF関数を書き込んでも良いのですが、IF(論理式,真の場合の処理,偽の場合の処理)
のような複雑な数式を書くのは難しいです。
関数を手書きするのが難しい場合は「関数の挿入」ボタンを使うと便利です。
関数の挿入ボタンで関数を入力中に、さらに別の関数を挿入するには、左上にある[名前ボックス]部分から挿入したい関数を選択します。すると現在カーソルがある位置に、もう一つ別の関数を挿入できます。
また複数の関数を使用している数式を「関数の挿入」ボタンで編集している場合、画面上部の数式バーに表示される数式をクリックすると、編集する数式を選べます。下の動画ではクリックする場所によって関数の挿入パネルの内容が変化している様子が分かります。一時停止や早戻しなども使って操作の様子をじっくり観察しましょう。
このように関数を複数使った複雑な数式の修正作業をする場合には、「関数の挿入」ボタンを使えば問題箇所を見つけやすくなるので活用してください。
「関数の挿入」ボタンを使って、この問題の数式を入力する手順を解説します。
=IF( B4=0 , "男", IF(B4=1,"女","入力ミス") )
B4=0
」、「真の場合」欄に「"男"
」と入力します。B4=1
」、「真の場合」欄に「"女"
」、「偽の場合」欄に「"入力ミス"
」と入力します。これで完成です。具体的な操作方法は下の映像を確認してください。
このようにEXCELでは複数のIF関数を使うことで、3種類以上の結果を返すことができるようになります。
また、この練習問題のように、想定外の値が入力された時には「入力ミス」のようなメッセージが表示されるようにしておくと、仕事であなたがうっかりデータ入力を間違えた場合も、事故を未然に防ぐ効果が期待できますので参考にしてください。
同様に「練習5」「練習6」シートの設問も同様の方法で回答してください。
ワークシート「IFその2」を開きましょう。
この問題は、ある会社の健康診断を行う際のグループ分けの表です。F列の「検診日」欄にIF関数を使った判定を行ってください。
「性別」欄と「年齢」欄を条件として、「検診日」欄には以下のように4種類の結果を表示してください。
この問題は、論理式の条件に「性別が男か女か」、「年齢が40歳以上か未満か」という2つの要素が含まれ、さらに結果が4種類に分かれるものとなっています。
条件が複雑に見えますが、「性別」と「年齢」という2つの要素を同時に処理しようとせず、個別に判断していけば処理しやすいでしょう。
以下のような処理の流れが考えられます。
C6="男"
)、男性用のIF関数を実行します(IF関数(2)へ)。そうでない場合は女性用のIF関数を実行します(IF関数(3)へ)。D6>=40
)、「Aグループ」と表示します(結果A)。そうでない場合は「Bグループ」と表示します(結果B)。D6>=40
)、「Cグループ」と表示します(結果C)。そうでない場合は「Dグループ」と表示します(結果D)。IF関数(1)では、真の場合も偽の場合も両方とも別のIF関数を実行するのが特徴です。
具体的な入力方法は以下のようになります。
「関数の挿入」ボタンを使って、以下のような数式を入力する手順を解説します。(長いので見やすくなるよう改行を入れていますが、実際に入力する際はつなげて1行で書いてください)
=IF( C6="男", IF(D6>=40,"Aグループ","Bグループ"), IF(D6>=40,"Cグループ","Dグループ") )
C6="男"
」と入力します。D6>=40
」、「真の場合」欄に「"Aグループ"
」、「偽の場合」欄に「"Bグループ"
」と入力します。=IF(C6="男"
」と書かれている「IF
」部分をクリックします。設定画面が最初のIF関数(1)のものに切り替わります。D6>=40
」、「真の場合」欄に「"Cグループ"
」、「偽の場合」欄に「"Dグループ"
」と入力します。(男性の場合と似ていますが、グループ名がA→C、B→Dに変化しています)
複数の関数を含む数式を作る場合、このように編集対象の関数を切り替えながら作業すると良いでしょう。
とりあえず上の手順で問題には回答できますが、さらに深く知りたい場合は、以下を参考にしてください。
この問題では、性別を判断する論理式「C6="男"
」と年齢を判断する論理式「D6>=40
」が必要です。しかしIF関数の仕様上、一回の比較しかできません。
そのような場合は、特別な関数「AND」関数と「OR」関数を使う方法もあります。
ANDやOR関数は、IF関数の「論理式」欄に入力することができ、複数の論理式をひとまとめにできます。 具体的には、ANDやOR関数のカッコの中に、カンマ「,
」で区切って複数の論理式を記述できるのです。
AND( A1 >=60 , A1 <80 )
上の式は、A1セルの値が60以上 かつ 80未満 の場合に成立します。
OR( A1 >=60 , A1 <0 , C1="合格" )
上の式は、A1セルの値が60以上 または ゼロ未満 または C1セルに「合格」と書いてある場合に成立します(条件緩め)。
このようにANDやOR関数を使えば、複雑な条件も表現できます。
この問題ではAND関数を使って各グループの成立条件を以下のように書く方法があります。
=IF( AND(C6="男",D6>=40) , "Aグループ" , IF(・・省略・・) )
AND(C6="男",D6>=40)
のようにAND関数が書き込まれている様子が分かります。C6="男"
とD6>=40
の論理式が両方とも書き込まれています。これにより、Aグループが成立する条件である「性別が男性で、かつ、年齢が40以上」を一度で記述できます。このようにして、A~Dの4つのグループを1つずつ特定していく方法もあります。
条件が「○○かつ××」「○○または××」のように複雑な場合は、AND()
や OR()
を使って表すこともできるというわけです。
少し式が長くなりますが、このAND()
を使った数式でも同じ結果を得られます。
=IF(AND(C6="男",D6>=40),"Aグループ",IF(AND(C6="男",D6<40),"Bグループ",IF(AND(C6="女",D6>=40),"Cグループ","Dグループ")))
重複している条件があるので、いくつか論理式を省くと、もう少し短くすることもできます4)。
=IF(AND(C6="男",D6>=40),"Aグループ",IF(C6="男","Bグループ",IF(D6>=40,"Cグループ","Dグループ")))
最後の練習問題、練習7について簡単な補足しておきます。
ワークシート「練習7」を開きましょう。
この問題を完成させると、以下の動画のようになります(動画で動きを見てもらったほうが分かりやすいと思います)。
この動画では消費税率8%で計算しているので、計算結果が実際の問題と異なります。スミマセン😂
掛け算や足し算を使って値段を計算していますが、今までと異なるのは、「数量の欄に何も書かないと、画面には何も表示されない」点です。
数量を入力すると、右側に自動的に計算結果が表示されている様子が分かると思います。
このような処理を行うには、以下のような計算を使うと良いでしょう。
たとえば、F10セルに数量の欄があるとします。
=IF(F10="" , "" , なにか計算をする )
F10=""
""
E10*F10
)など。計算の前に上記のようなIF関数を挟むことで、F10セルに何も書かなければ、結果も空欄にしておけるわけです。
その結果、上の動画のように、一見何も書かれていないように見えるセルであっても、値の入力に反応して計算結果を表示できるようになります。
参考にしてください。
IF関数を使って3種類以上の結果を返すためにはIF関数を複数回使わなければならず、上で説明したように数式が複雑になる問題がありました。
そこでExcel2016から追加された「IFS」(イフエス)関数を使えば、このような3つ以上の分岐処理を1つの関数で行えます。便利!😁
IFS関数は次のような書き方をします。
=IFS ( 論理式1 , 真の場合1 , 論理式2 , 真の場合2 , ・・・ 論理式n , 真の場合n )
TRUE
」と書き、最後の「真の場合」に処理したい内容を書き込みます。たとえば、点数が90点以上で「秀」、80点以上で「優」、70点以上で「良」、60点以上で「可」、それ以外は「不可」という5つの結果を返したい場合、IFS関数を使うと以下のように書けます。
=IFS(B3>=90,"秀",B3>=80,"優",B3>=70,"良",B3>=60,"可",TRUE,"不可")
なお「TRUE」は「真」を表す特別なキーワードなのでダブルクォートで囲わないので注意してください。「"TRUE"
」は間違いです5)。
このようにIFS関数を使うと、結果の分岐処理を比較的簡単に表現できます。ただし、Excel2016より前のバージョンではIFS関数は使用できませんので注意してください。
ちなみに同じ処理を通常のIF関数で書くと、以下のようになります6)。
=IF(B3>=90,"秀",IF(B3>=80,"優",IF(B3>=70,"良",IF(B3>=60,"可","不可"))))
条件に応じて処理を使い分けるような作業は、IF関数を活用して自動化し、作業の効率化を図りましょう。
以上の内容を踏まえて、EXCEL練習問題のすべてのワークシートの設問に解答して下さい。
解答が終わったら、「学生番号 氏名 IF関数
」というファイル名で保存し、moodle に提出してください。
提出期限は、次回の授業日いっぱいとします。
学習支援システム moodle
https://cclms.kyoto-su.ac.jp/
以上で今回の作業は終了です。大変おつかれさまでした7)。
Shift
+2
で入力できます。Shift
+2
キーで入力できます。