no-image

Excel で IFS を使わず条件分岐(値の範囲)

範囲の開始値範囲の終了値判定
059D
6069C
7079B
8089A
90100S

上の表のような条件によって判定を行うとき、プログラムだと単に if, else if でできまますが(美しさはともかく)、Excel だとどうするか? 何も考えずに行うとしたら IF の入れ子で行うことになると思いますが、正直見難いのでもっと綺麗に処理したい。

Excel 2016 からは IFS 関数が実装されて複雑な条件分岐が書きやすくなったが、Excel 2013 以前では IFS 関数は使えません。Excel 2013 以前で数値の範囲で条件分岐を行う方法の一つを記します。

まず判定の表を用意します。値は「~以上のとき」となる値とします。また、値は必ず昇順に書き並べてください。

0D
60C
70B
80A
90S

次に判定結果を行う式を用意します。今回の手法には VLOOKUP の近似一致を用いるので、第 4 引数を TRUE とします。

=VLOOKUP([判定する値], [判定表], 2, TRUE)

excel-vlookup

上から順(昇順)に判定を行っていき、range <= value を満たす最後の行(最大値)で終了。