Excelでクロス表から成績を決める(その2)

以前こちらで「EXCELでクロス表から成績を決める」を書きましたが,うまくいかないのと,より良さそうな方法があったので,(その2)としてアップデート版を書いておきます。使うデータとやりたいことは以前と同じ。以下のように,観点1が1行目,観点2が1列目として,両方の観点が5なら5,観点1が5で,観点2が4ならば,4を与えたい。

54321
555443
454432
343332
232221
111111

こちらのサイトの記事「【エクセルのクロス抽出】INDEX関数とMATCH関数の組み合わせ」を参考にしています。イメージとしては,以下のようになれば良い。エクセルのシートに,以下のように,A~Dは成績処理,F~Lは上のクロス表が配置されているとする。

ABCDEFGHIKL
1ID 観点1(縦) 観点2(横) 成績(縦と横) 54321
2A01555555443
3A02545454432
4A03323343332
5A04141232221
6A05513111111

上のD2に入っているのは,

=INDEX($G$2:$L$6,MATCH(B2,$F$2:$F$6,0),MATCH(C2,$G$2:$L$6,0))

INDEXは(参照, 行番号, 列番号)を引数としてとり,範囲の中から行番号と列番号のクロスしたセルの内容をとってくる。

matchは(検索値,検索範囲,照合の種類)なので,

縦に検索する値(上だとB2の5)をF2~F6の範囲で探し,完全に一致するもの(照合の種類が0)を探す。返す値は,範囲の中の列番号なので,上の場合には,F2に当たる2(行目)を返す。

横に検索する値(上だとC2の5)をG1~L1の範囲で探し,完全に一致するもの(照合の種類が0)を探す。返す値は,範囲の中の行番号なので,上の場合には,G2に当たる2(行目)を返す。

INDEXの中身は,(G2からL6の範囲のなかで,2行目,2列目)=5を返す。