概要
「点数から A〜E の5段階評価をつけたい」
「スコアに応じて ☆1〜☆5 を自動で表示したい」
「IF をたくさん書くのは大変なので、もっとスマートに評価したい」
こういう「範囲で区切る5段階評価」に相性がいいのが LOOKUP 関数です。
LOOKUP は「どの範囲に入っているか」に応じて、対応する評価を返すのが得意です。
ここでは、配列形式の LOOKUP を使って、5段階評価をシンプルに書く方法を解説します。
LOOKUP の基本(配列形式)
書式と考え方
今回使うのは「配列形式」の LOOKUP です。
=LOOKUP(検索値, 境界値の配列, 評価の配列)
ポイントは次の2つです。
検索値より「小さいか等しい中でいちばん大きい境界値」を見つける
その境界値と同じ位置の「評価」を返す
つまり、
- 「点数がどの境界値を超えたか」でランク決定
- 対応する評価記号を返す
という動きになります。
境界値の配列は必ず「昇順(小さい順)」に並べる必要があります。
5段階評価の基本形(点数 → A〜E)
例1:0〜100点を A〜E に分ける
A2 に 0〜100 の点数が入っているとします。
次のように評価したいケースを考えます。
80〜100点 → A
60〜79点 → B
40〜59点 → C
20〜39点 → D
0〜19点 → E
このときの LOOKUP はこう書けます。
=LOOKUP(
A2,
{0,20,40,60,80},
{"E","D","C","B","A"}
)
動きのイメージはこうです。
点数が 83 のとき
0,20,40,60,80 のうち「83 以下で最大」は 80 → 80 に対応する「A」を返す
点数が 35 のとき
0,20,40,60,80 のうち「35 以下で最大」は 20 → 20 に対応する「D」を返す
このように、境界値の配列と評価の配列を「同じ順番・同じ個数」で並べておけば、
点数がどの範囲にあるかに応じて、自動で5段階評価が付きます。
記号・★・数字など、好きなラベルで5段階評価
例2:☆1〜☆5 の評価にする
同じ 0〜100 点を、5段階の星評価にしたいケースです。
80以上 → ☆5
60以上 → ☆4
40以上 → ☆3
20以上 → ☆2
20未満 → ☆1
=LOOKUP(
A2,
{0,20,40,60,80},
{"☆1","☆2","☆3","☆4","☆5"}
)
文字列であれば何でも評価ラベルにできます。
「◎」「○」「△」「×」のような記号も同様に扱えます。
5段階評価を数値で返すパターン
例3:スコアから 1〜5 の評価値を返す
B2 にスコア(0〜100)が入っているとします。
これを 1〜5 の数値評価にしたい場合。
80以上 → 5
60以上 → 4
40以上 → 3
20以上 → 2
20未満 → 1
=LOOKUP(
B2,
{0,20,40,60,80},
{1,2,3,4,5}
)
このように数値として評価を返せば、そのまま平均を取ったり、
別の計算に利用したりしやすくなります。
境界値と評価をセル参照で管理する
例4:範囲表を別セルに作っておき、そこを参照する
毎回波括弧 {} で配列を書くと編集が大変なので、
「境界値」と「評価」をシート上に表として用意しておくのもよくある方法です。
例として、次のような表を用意するとします。
D列:境界点
D2:0, D3:20, D4:40, D5:60, D6:80
E列:評価
E2:”E”, E3:”D”, E4:”C”, E5:”B”, E6:”A”
このとき、A2 の点数を評価する式は次のように書けます。
=LOOKUP(A2, $D$2:$D$6, $E$2:$E$6)
境界値や評価の基準を見直したいときも、D列・E列を書き換えるだけで済みます。
配列を式の中にベタ書きするより、運用しやすくなります。
LOOKUP で5段階評価を書くときの注意点
境界値の配列は「昇順に並んでいること」
境界値の配列 {0,20,40,60,80} や、$D$2:$D$6 の値は、
小さい順に並んでいる必要があります。
もし順番がバラバラだったり、途中におかしな値が混ざると、
想定外の評価が付く原因になります。
最小値より小さい値が来た場合
たとえば、境界値が {0,20,40,60,80} のとき、
点数が -5 のように 0 未満になると、LOOKUP は結果を見つけられずエラーになります。
入力値が必ず 0〜100 の範囲に収まる前提であれば問題ありませんが、
そうでない可能性があるなら、IF と組み合わせて「範囲外チェック」を追加するのも手です。
例題
問題1
A2 に 0〜100 の点数が入っています。
0〜19→E、20〜39→D、40〜59→C、60〜79→B、80〜100→A
という5段階評価を LOOKUP で返す式を書いてください。
=LOOKUP(
A2,
{0,20,40,60,80},
{"E","D","C","B","A"}
)
問題2
A2 に 0〜100 のスコアが入っています。
0〜19→☆1、20〜39→☆2、40〜59→☆3、60〜79→☆4、80〜100→☆5
という星評価を返す式を書いてください。
=LOOKUP(
A2,
{0,20,40,60,80},
{"☆1","☆2","☆3","☆4","☆5"}
)
問題3
B2 に 0〜100 のスコアが入っています。
スコアから 1〜5 の数値評価(1が最低、5が最高)を返す式を書いてください。
=LOOKUP(
B2,
{0,20,40,60,80},
{1,2,3,4,5}
)
問題4
D2:D6 に 0,20,40,60,80
E2:E6 に “E”,”D”,”C”,”B”,”A”
という評価表があるとします。
A2 の点数をこの表に基づいて A〜E で評価する式を書いてください。
=LOOKUP(A2, $D$2:$D$6, $E$2:$E$6)
問題5
A2 の点数が 0 未満の場合は「範囲外」、
0〜100 の範囲のときだけ、0〜19 E / 20〜39 D / 40〜59 C / 60〜79 B / 80〜100 A
の5段階評価を LOOKUP で返す式を書いてください。
=IF(
A2<0,
"範囲外",
LOOKUP(
A2,
{0,20,40,60,80},
{"E","D","C","B","A"}
)
)
まとめ
5段階評価 × LOOKUP のポイントは次の通りです。
検索値(点数など)
境界値の配列(小さい順)
評価ラベルの配列(同じ個数・同じ順番)
この3つをセットで用意できれば、
IF を何段も重ねなくても、1行の式で5段階評価が書けます。
型は次のパターンを覚えておけば OK です。
=LOOKUP(点数, {境界1,境界2,境界3,境界4,境界5}, {"評価1","評価2","評価3","評価4","評価5"})
自分の仕事でよく使う「評価の境界」と「評価ラベル」をそのまま当てはめて、
まずは 1 本、5段階評価の列を作ってみてください。
LOOKUP が「範囲で区切る評価」にどれだけ向いているか、実感できるはずです。
