はじめに
今回は先日記事にしたCOUNTIF関数に関して、もう少しだけ掘り下げて説明してみようと思います。
前回の記事はこちら↓
『〇〇以上』などを条件にしたい場合
さて、今回も例を出しながらやっていきましょう。
こんな具合にテストの点数パターンでいきます。
データはC3~C37に入力されています。
今回はこういったデータに関して、
『80点以上を取った人が何人いるのか』
というのを求めてみたいと思います。
具体的な数値を条件に含める場合
COUNTIF関数に関しては大丈夫でしょうか。
COUNTIF関数
=COUNTIF(範囲,検索条件)
範囲にはデータの入力されている『C3:C37』が入ることはもうお判りでしょう。
検索条件の部分に『80点以上』という条件を入れればよさそうですね。
さて、ここで『以上』というのをどのように表すかを知らなくてはなりません。
より大きい:『>』
より小さい:『<』
以上:『>=』
以下:『<=』
以前のIFの記事で触れましたが上のように表すことができます。
『以上』は『>=』ということですので『80点以上』は
『>=80』
このように表すことができますね。
ということで入力すべきは
=countif(C3:C37,>=80)
こうなりそうなものですが、この場合、条件は半角ダブルクォーテーションで囲まなくてはならないというルールに注意してください。
つまり、
=countif(C3:C37,”>=80″)
これで入力してみましょう。
このとおり、『10』という結果が返ってきました。
80点以上を獲得した人は10人いるということを表しています。
条件をセル番地を用いて表す場合
次に特定セルに入力されている数字を利用して条件を示してみましょう。
どういうことかと言いますと、E3セルに『80』という数値を入力して、先ほどの『80以上』という条件を『E3セルの数字以上』というものに変えてみましょうということです。
E3セルに80と入力するのなら先ほどと同じ『10』という結果が返ってくることになりますが、E3セルの値を変えることでF3セルに入力している結果もすぐに変更されます。
さて、やってみましょう。
条件はどのようになるでしょう?
E3(セルの値)以上 ですから
『>=E3』
こんな具合になりそうですね。
条件はダブルクォーテーションで囲みなさいという先ほどのルールを合わせると、
『”>=E3″』こうでしょうか。
あれ?
0人という結果が返ってきました。
点数のデータ自体は変更していないので先ほど同様10人という結果が返ってくるべきです。
この書き方、問題点は『E3セルの中身』を示したい部分までもが『”』で囲まれてしまっているために『E3』という文字列そのものとして認識されている点にあります。
要は中身を見てほしいときは『E3』という部分まで『”』で囲っちゃダメ、ということですね。
じゃぁどういう書き方をするかということになりますが、
“>=”E3
ではだめです。
やってみるとわかりますがエラーになります。
これは『”』で囲ったものとセル番地をそのまま続けて書いている部分が問題です。
これらは『&』でつないであげる必要があります。
(こちらで書いていた内容と同じことです)
よって
“>=”&E3
このような書き方になります。
これを条件部分に当てはめてやると、
ようやく初めの(>=80と直接入力した)パターンで得られた10人という人数と一致する値が返ってきました。
ということでこれで書き方はOKです。
この場合E3セルの中身を70、60と書き換えてやれば、それと同時にF3セルの人数も条件を満たす人数に変更されます。
ご覧の通り、F3セルの中身は何も書き換えていませんが、E3セルの値を変えているので即座にその結果が反映されて人数が変わっています。
70点以上は17人、60点以上は22人ということですね。
このように、条件式に具体的な数字を含めてしまうのではなく、参照するセルを入れておいて、その参照先セルの中身だけを入れ替えてやるようにすると便利だということが分かると思います。
『〇〇以上、〇〇未満』を条件にしたい場合
先ほどは『80以上』という部分だけでしたが、『80以上で90未満』というパターンをやってみましょう。
先ほどのものと比べ、条件が1つ増えています。
この場合は次のような方法があります。
2つのCOUNTIF関数を合わせて算出する
まずは今回の『テストを受けた人たち』を図示してみます。
灰色の楕円が今回の集団(全体)を、青色の楕円が80点以上の集団を、橙色の楕円が90点以上の集団を表していると思ってください。
90点以上取っている人は当然80点以上に含まれますから橙の楕円は青色の楕円に完全に含まれますよね。
なのでこういう図になります。
この図で、今回求めたい『80以上90未満』というのはどこの部分になるか、わかりますか?
そりゃわかりますよね、青の部分です。もちろん橙部分は含まないで。
図示するとこんな感じです。
さぁこれでなんとなく掴んでもらえたらいいのですが……。
80点以上の人数を求めるには、先ほどの通り、
=countif(C3:C37,”>=80″)
90点以上も同様に
=countif(C3:C37,”>=90″)
図にもあるように、80点以上から90点以上を差し引くと『80以上90未満』の集団となりますから、
=countif(C3:C37,”>=80″)–countif(C3:C37,”>=90″)
というわけで『7人』と求めることができました。
しかしこれだと締まりませんので、セル番地で指定することでもうちょいスマートに示しましょうか。
このように80と90を2つのセルに入れてやれば、いずれもセル番地で示すことができ、よりスマートな表現になりますね。
おわりに
さて、今回はCOUNTIF関数を少し掘り下げて使用してみました。
これで『〇〇以上』だとか『〇〇~△△までの範囲』みたいな条件はバッチリですね。
『”』で囲まなきゃならないだとか『&』でくっつけてやらなきゃならないだとか、面倒なルールも出てきていますがしっかりマスターしましょう。