エクセルの関数に関しては、ツールバーのメニューから選択することができますが、ここでは対象セルに直接関数を打ち込むことを推奨しています。
IF関数とネスト
IF関数は条件により出力を変える・・みたいな関数です。
もしダイコンが150円以下なら買う。そうでなければ買わない…みたいなものです。
ネストというのは、IF関数を何重かに絡ませる(入れ子にする)ことです。
もしダイコンが150円以下で、サンマが200円以下ならダイコンおろしでサンマを食べる、もしダイコンが150円以上で、キャベツが100円以下なら、ダイコンは買わずにキャベツを買ってお好み焼きにする・・・そうでないなら何も買わない・・・みたいなものです。
すみません・・ちょっと例がややこしいですね。
とっつきにくいかもしれませんが、まずは基本である IF関数について学習してから、ネスト(入れ子構造)についても慣れていきましょう。
IF関数
書式
=IF(論理式, [値が真の場合], [値が偽の場合])
例を見ながら解説しましょう。
数学の成績です。もし A なら ◎ を付け、そうでないなら空白にします。
D3セルに以下のように入力しコピーします。
=IF(C3=”A”,”◎”,””)
意味は、
- C3=”A” C3 セルが A と等しいなら・・・
- “◎” ◎ を出力し、
- “” そうでないなら “” として何も表示しない
注意 文字式を出力する場合は ”◎”のように ”” で囲みます。
次の例では数学が80点以上の場合に GOOD を表示するようにしています。
=IF(C3>=80,”GOOD”,””)
- C3>=80 数学の点が80点以上なら・・・
- “GOOD” GOOD を出力し、
- “” そうでないなら “” として何も表示しない
ネスト(入れ子)
ではIF関数のネストについて解説していきます。
同じく数学のテストの成績を題材にしましょう。
数学のテストで 80以上でA、70~80 でB 70未満で C と判定したいとします。
C3セルに次の数式を打ち込みます。
=IF(C3>=80,”A”,IF(C3>=70,”B”,”C”))
- C3>=80, “A”
もし、C3セルが80以上であるなら A を表示する - C3>=70,”B”,”C”
もし、C3セルが70以上なら B を表示し、そうでないなら C を表示する
このようにすれば、数学のテストで 80以上でA、70~80 でB 70未満で C と判定できます。
状況によっては、IFの中にIF、そのさらに中にIFというように、幾重にもネストをかけることも可能です。
ちょっとした工夫ですが、
80 とか 70 、A、B、C と数式に打ち込む代わりにセルの番地を指定することもできます。
一見ややこしそうですが、このようにしておくと、参照するセルの値を書き換えると瞬時に判定の基準を変えることができて便利になることも多いのです。
例 G7 G6 H7 H6 H5 セルに数値や成績を入れています。
=IF(C3>=$\$$G$\$$7,$\$$H$\$$7,IF(C3>=$\$$G$\$$6,$\$$H$\$$6,$\$$H$\$$5))
この場合は、コピーによって番地が変化すると困りますので、絶対参照にしましょう。
まあ、この場合は VLOOKUP関数 を使って同じことを実現できます。
どちらが良いかはその時の状況により判断します。
適当な範囲 $\$$G$\$$4:$\$$H$\$$7 へ降順で点数を書きその横に評価を書いておきます。
=VLOOKUP(C3,$\$$G$\$$4:$\$$H$\$$7,2,TRUE)
- C3 C3セルの内容を見て
- $\$$G$\$$4:$\$$H$\$$7 範囲から
- 2 合致するものから横に2だけすすんだところ
- TRUE 近似値一致で取得する(この場合は省略可)
AND OR関数との組み合わせ
さて、いろいろ関数をいじっていると、さらに入り組んだ条件分岐を作りたくなることもあるでしょう。
ここではIF関数と合わせて使う AND と OR について具体的な例で解説します。
AND
=IF(AND(条件式1,条件式2 ),処理1,処理2)
条件式1と条件式2を「かつ(AND)」満たす場合、処理1を実行し、そうでない場合(条件式のどちらか、あるいは両方が × のとき)処理2を実行します。
=IF(AND(C3=”A”,D3=”A”),”◎”,””)
- AND(C3=”A”,D3=”A”)
C3とD3(数学と物理)がともに A であるとき ◎ を表示する
OR
=IF(OR(条件式1,条件式2 ),処理1,処理2)
条件式1と条件式2を「または(OR)」満たす場合、処理1を実行し、そうでない場合(条件式の両方が × のとき)処理2を実行します。
=IF(OR(C3=”A”,D3=”A”),”〇”,””)
- OR(C3=”A”,D3=”A”)
C3とD3(数学と物理)のどちらかが A であるとき 〇を表示する
IFS関数
さて、IF関数をネストしすぎると、()の数が合わずにエラーを起こしたりしますね。
また、作ったときはいいのですが、しばらくたつと関数の意味が複雑すぎてわからりづらくなることも多々あります。
そこでIFS関数をご紹介しましょう。
IFS関数 書式
=IFS(論理式1, 値が真の場合1, 論理式2, 値が真の場合2, 論理式3, 値が真の場合3,・・・・)
図のD3セルに以下のように打ち込みます。
=IFS(C3>=80,”A”,C3>=70,”B”,TRUE,”C”)
とすれば、=IF(C3>=80,”A”,IF(C3>=70,”B”,”C”)) と同じ意味になります。
ここで 最後の TRUE, “C” ですが、どれにも当てはまらなければ C を表示する・・・という意味になります。
この場合は、次のようにしてもいいでしょう。
=IFS(C3>=80,”A”,C3>=70,”B”,C3<70,”C”)