Excel2013対応
---topics:IF関数---

其ノ7 IF関数入門一歩前

タイトルは、廣松渉の『哲学入門一歩前』のもじりです。
ただ、廣松の本の方は「一歩前」と銘打ってあるものの良質の哲学入門書だったりするのですが、 こちらはホントに一歩前までかも…。 というのは、ここではIF関数がテーマなんだけど、メインで語るのは 「IF関数を使わないでやってみる」ってことだったりするからです。
ハイ、では問題。「試験の点数が、60点以上なら合格、それ未満なら不合格」 のとき、どう処理しますか?

ここで、IF関数ができる人だったら、 下↓の定式にあてはめて、

=if(条件となる式 , 式を満たすとき , 満たさないとき)

こういうふうにするでしょう※1

60点以上は合格、そうじゃないときは不合格
※1 60点以上は合格、そうじゃないときは不合格

が、ひとまずコレ使わないでやってみましょうか。
Excelに限らないことだけど、ひとつのゴールに向かうには、いろんなやり方があるんです。 なので、一回やってみましょう。
あ、そうそう。今回ダウンロードデータを作ってないので、※1のような表を作ってください、お手数ですが。

ハイ、ではいきましょう。
2列使用することにします。 まず、「点数が60点以上かどうか」を調べる式を入れましょう。
=(B2>=60)で、判別できますね※2

60点以上ですか?
※2 60点以上ですか?

式を全セルに入れると、結果が「TRUE」「FALSE」で表示されます。
さて、「60点以上が合格」なんでしたね。 なので、フィルタで「TRUE」のところだけ抽出します。 そうして抽出されたところに、「合格」の文字を入力する※3

TRUEは合格
※3 TRUEは合格

逆もやります。「FALSE」のところに「不合格」を入力。
すると、要求された結果が出ます※4

60点以上は合格、そうじゃないときは不合格
※4 60点以上は合格、そうじゃないときは不合格

これと同じことを、1列でやるのが、IF関数なんです※5

IF関数でやると…
※5 IF関数でやると…

要するに、両者は同じことなんです。 ただ、IF関数だと1列で済む、というだけのこと。
「なら、IF関数の方が効率的だ」と言うかもしれません。
うん、たしかに場所は少なくて済むでしょう。 でも、別に2列使ったっていいじゃない
IF関数がむずかしいのは、この2列使う部分をあらかじめ頭の中で構築できなきゃいけない、という点です。 ただ、むずかしいなと感じたら、順を追って動かしてみて(この場合だと実際に2列作ってみて)カバーすれば良いだけのこと。 効率が良いか悪いかはともかく、いろんなやり方があるんです。
実は、この章に限らずこのホームページ全体に言えることですが、 私は、最短距離でゴールに到達する方法を紹介する、という方針を採っていません。
私が語るのは、少ない手持ち武器で、なんとかゴールする方法、です。 スマートにゴールする仕方、ではありません。スマートなやり方を紹介しているサイトは他所にたくさんあります。 対して私のは、泥臭くても良いから、とにかくゴールに到達できるやり方です。
手持ち武器は少なくてもしょうがないです。特に最初は。 だけど、覚えたことは2コ3コでも、それを活かしていろんなことができる。
こういう方向を、私は目指してるんです。

もう1問いきましょう。
今度は、「80点以上ならA判定、60点以上80点未満ならB判定、60点未満はC判定」を処理してください。

 ・
 ・
シンプルに考えましょう。
まず、「点数」を「降順」で並べ替えます※6。 「降順」、つまり点数高い方から上から順ね。
そして、「80点以上のゾーン」「60~79のゾーン」「~60のゾーン」で色分けします。

点数降順で並び替えた
※6 点数降順で並び替えた

で、色分けに合わせて「A」「B」「C」を入力する※7

できた
※7 できた

これでおしまい。 仮に生徒が100人いても、この方法ならそんなに手間もなくできるでしょう。

ただ、このやり方に1コだけケチつけると、「80点以上」とか「60~79」とかを目視で判断してるんですよね。 なので、数式でもやってみましょうか。※2~※4のやり方の応用です。
まず、「80点以上かどうか」を調べましょう※8

80点以上かどうか
※8 80点以上かどうか

で、「TRUE」のところだけ「A」を入れる※9

=(B2>=80)がTRUEならA判定
※9 =(B2>=80)がTRUEならA判定

次。「60点以上80点未満」を調べます。 ただ、コレ、要件が2つありますね。「60点以上」と「80点未満」の2つです。 なので、「60点以上」と「80点未満」の両方を満たす、という意味の式を入れてあげます※10AND関数を使って、2つの要件を満たしてあげましょう。

=AND(80点未満,60点以上)
※10 =AND(80点未満,60点以上)

先ほどと同様に、フィルタで「TRUE」のところだけ、今度は「B」を入れてください※11

こちらはB判定
※11 こちらはB判定

で、あとは空白のところに「C」を入れれば完成。すばらしいね。

では、もしこの作業、(この章のテーマである)IF関数を使うとしたら。
こう↓なります※12

IF関数でやると…
※12 IF関数でやると…

式、長いなー。解説が必要ですね。
コレ、ご覧いただければわかるように、IF関数を2回使っています。 IF関数の使い方は、繰り返しになりますが、

=if(条件となる式 , 式を満たすとき , 満たさないとき)

でしたね。で、はじめの条件のところに「80点以上ですか?」の判別式を入れます。
式が「TRUE」なら、「A」が入るよう指定します。
複雑なのはここからです。 最初の式が「FALSE」の場合ですね。 もう1回IF関数を使い、今度は条件式を「60点以上80点未満ですか?」にします
「60点以上80点未満ですか?」の式は、ANDを使うんでしたね。
で、この2コ目の式が「TRUE」なら「B」、「FALSE」なら「C」が入るよう指定します。 2コ目の式も「FALSE」、ということは、「80点以上ですか?」の問いにも「60点以上80点未満ですか?」の問いにも 取り残された余り、ということですから、「C」でOKですよね。

…いかがでしょうか。最後のヤツはけっこうむずかしいですよね。 けど、IF関数を使わないで済むやり方もある、ということも、同時にご理解いただけたかと思います。
繰り返しになりますが、ひとつのゴールにたどり着く方法はいろいろです。
もちろん、たくさんルートを知ってる方が便利かもしれません、が、 最初はね、ひとつずつ、覚えていきましょうよ。

Copyright(C)森田表計算