Excelでif関数を使っているとどうしても複雑な条件で判定しなければならないときがあります。
今回は、そんなときに役に立つ複数条件の組み立て方でおすすめの方法を解説します。
例えば、このようなケースで考えてみましょう。
セルB3に正解率があるときに、C3に右の表に応じた点数を入れたい場合です。
C3にはどのような式を入れればよいでしょうか。
考え方としては、
もし、
B3が 0以上20未満なら0、
20以上40未満なら1、
40以上60未満なら2、 ・・・
というふうに組み立てたいところです。
こんなときは、IF関数の複数条件を使います。
IF関数の中にIFを使う
これはよく出てくるパターンです。
if(条件1,A,B)というのは、
「条件1に当てはまればA、それ以外ならB」という意味なので、
if(条件1,A, if(条件2, B, if(条件3, ・・・
という風に組み立てれば、
「条件1の場合はA、そうでない場合で条件2の場合はB、そうでもない場合で条件3の場合、・・・」
という風に条件ごとに組み立てることができます。
これを上の例に当てはめると、
もし、
B3が20未満なら0、
B3が40未満なら1、
B3が60未満なら2・・・
と条件を作ることができます。
これをif文にしてみましょう。
① B3が20未満なら0、 → if(B3<20, 0
② B3が40未満なら1、 → if(B3<40, 1
③ B3が60未満なら2、 → if(B3<60, 2
④ B3が80未満なら3、 → if(B3<60, 3
⑤ B3が90未満なら4、 → if(B3<60, 4
⑥ それ以外なら5、 → , 5
というふうに分けられます。
これを先頭に=を付けて、①,②,③,④,⑤,⑥と組み立ててて行きます。
①から⑥までをつなげます。
最後の⑥のの「5」のパートは、①から⑤のすべてに当てはまらなかったものだけがたどり着くことになります。
つまり、①から④にあてはまらなくて、最後の⑤の条件である90未満に当てはまらない、つまり90以上のものが⑥になります。
もっと簡単に複数条件を作れないか?
このように、複数条件の場合は、個別の条件を考えてあとで組み立てるとスムーズに作成できます。
とはいえ、IF関数の中にIF関数が入ってくるとカッコも入り組んできてどうもややこしいです。
もし他の人が引き継いだりした場合などは、かなりの確率でブラックボックス化することになります。
自分だけで使うものであっても、時間がたつと何をどのように計算しているのかわからなくなってくるものなので、
作成する数式はできるだけシンプルで可読性も高いものにしていきたいものです。
そこで、意外と知られていない関数でIFSというものがあります。
これはIF関数に複数条件を扱うことができる関数です。
条件1の場合、A
条件2の場合、B
条件3の場合、C
条件4の場合、D
というような処理をシンプルに記述できますので、複数条件が多い時などに便利です。
こんな便利な関数があるとは!と最近知ったところです。
IFS(条件1, A, 条件2 , B , 条件3 , C , 条件4 , D , 条件5 , E , ・・・
という風に書きます。
最後の⑥は「それ以外」とならずに、条件そのものを書くようにします。
おまけ
今回わかりやすくするためにif関数の条件部分は20とか40とか直接数字を入れています。
これだと、もし「正解率20未満ではなくて30未満をゼロにしたい」となったときに、
せっかく作った数式が壊れてしまったり、間違った数字を入れてしまったり、変更すべきところが変更されなかったりと、さんざんな目にあってしまうでしょう。
実際に実務でこういったif関数を作るときには、あらかじめ基準となる表を作成しておくことをおススメします。
上の例でも作っていますが、もっと数字だけを切り替えられるような形式で作成するべきです。
上の例の表だと、「正解率」の列が文字列になっています。
これを下のように数値として扱えるように作り替えます。
そうすることによって、条件部分で「B3<20」とか「B3<40」とか手打ちしていた部分を、
こちらの表のセルを「B3<E4」というようにセルを参照するようにすることができます。
同じような理由で、点数も数字ではなく、セルを参照するようにしています。
こちらの表のセルを参照するように変更
このようにしておくと、もし条件を変えたくなった場合に、
直接数字を変えるのではなく、表の数字を変えるだけでよくなるので
変更に耐えやすくなり管理しやすくなります。
この記事へのコメントはありません。