EXCEL

VLOOKUP 検索範囲(教科ごとの判定表)を INDIRECT で切り替えて 得点を管理する 成績一覧表を作成する

得点をSやAなどのどのランクに所属するかを判定するとき、同じSランクでも国語と算数では基準点が違うことがあります。 ですから、1つの判定基準表では教科ごとの判定に対応できません。 (前回の記事:試験結果で SABCDクラスに分類する方法。 ) そこで、今回はその点について解決する策として、教科ごとに判定基準表を設ける方法を追加します。 教科によって参照する判定基準表を切り替える仕組みは 名前定義と INDIRECT 関数を使います。

近似一致 の判定に使う教科ごとの基準表 (教科-基準表)を作る

前回の記事で作成した基準表は、次のようなものでした。

旧基準表
旧基準表(どの科目もこの1つで判定していた)

今回は、基準表を5教科それぞれに作成します。

INDIRECT
教科に対応した基準表 (一番左が”基準表ー国語”、続いて”基準表ー算数”、、、)

教科ごとの基準表にそれぞれ、基準表ー国語、基準表ー算数、基準表ー理科、基準表ー社会、基準表ー英語という名前としています。

実はあとで使うために、この名前の付け方は、一定の法則で付けておく必要があります。

(例では、「”基準表ー” + 教科名」としましたが、例えば教科名だけでも構いません。)

これで、準備OKです。

教科名で基準表ー○○を切り替えて使う方法( INDIRECT 関数)

教科名で基準表を切り替える方法について説明します。

教科名の文字列をINDIRECT関数を使ってEXCELが認識できる名前に変換し、あらかじめ名前定義しておいた基準表を参照するようにすることで、切り替えを実現します。

要するに、厳密には切り替えるというよりも、その都度 教科名から参照先の名前を作ると言った方が分かりやすいかもしれません。
(関連記事:名前定義 と INDIRECT でVLOOKUP の検索範囲を切り替える

VLOOKUP 関数の第二引数(検索範囲)を名前定義した名前(表の名前)で指定します。

そして、表の名前の付け方は、 ”基準表ー” & 「教科名のセル参照」 によって文字列連結で作成した文字列を、 INDIRECT 関数でEXCELが認識する名前に変換してから、EXCELに渡して使います。

D3のセルは、INDIRECT(”基準表ー国語”)となります

D3のセルは、 INDIRECT 関数が実行されたあとは、第二引数は 基準表ー国語 (名前定義)として、 VLOOKUP 関数が実行されます。

国語の基準表では、77点はA判定ですから、判定のセル(D3)に A が表示されました。

D4のセルは、INDIRECT(”基準表ー算数”)となります

D4のセルは、 INDIRECT 関数が実行されたあとは、第二引数は 基準表ー算数 (名前定義)として、 VLOOKUP 関数が実行されます。

算数の判定表では、80点はB判定ですから、判定のセル(D4)に B が表示されています。

管理用の成績一覧表を作成する INDIRECT の参照先に注意

先の表は、個人用として利用できます。 今度は、管理用(先生用など)に成績一覧表を作成します。

成績表部分を変形して、一覧形式に改造したものが以下の図です。

成績表の例

この判定表では、教科名の参照が表の上部に変わっていますので、D4セルではC$2(行のみ絶対参照)にしています。

この式を判定のセルの全部にコピペすれば、そのまま使えます。

もちろん、人数分行を増やして得点を入力し、判定のセルをコピペすれば、クラス全員の一覧表ができあがります。

まとめ

今回は、前回の記事(試験結果で SABCDクラスに分類する方法。 VLOOKUP の 近似一致 検索 で簡単にに分類する)で作った、成績表の欠点(教科による平均点の違いに対応できていない)について、基準表を教科ごとに名前定義して、 INDIRECT 関数によって切り替える方法をつかうよう改造しました。

名前定義 と INDIRECT 関数の組み合わせは、使い勝手が良いです。

工夫して使ってみてください。

名前定義 と、INDIRECT 関数の組み合わせについて、関連記事(名前定義 と INDIRECT でVLOOKUP の検索範囲を切り替える)にも書いています。こちらも参考にしてください。

コメント

タイトルとURLをコピーしました