[Sheet1]

A B C D E F
1 番号 氏名 レベル 難易度 得点   補正値
2 100 Dさん A 45  
3 120 Aさん B 50  
4 130 Eさん C 80  
5 140 Cさん B 95  
6 150 Bさん C 60  

という表があったとき、次の[Sheet2]の「レベル-難易度別補正表」を使って各人の得点を補正します。

[Sheet2]「レベル-難易度別補正表」

A B C D
1   A B C
2 50 40 30
3 30 20 10
4 10 5 0

例えば、Dさんの補正後の得点を求めるには、

[Sheet1]のF2セルに、=index(Sheet2!A1:D4,2,2) とindex関数を使用することは前回説明しましたが、大量にデータ処理する場合は、この「2,2」に相当する部分も関数で持って来て計算させる必要があります。

以下、match関数と組み合わせて、全員分の補正後得点を計算させてみたいと思います。

(1)[Sheet1]のF2セルに、=index(Sheet2!$A$1:$D$4,match(D2,Sheet2!$A$1:$A$4,0),match(C2,Sheet2!$A$1:$D$1,0)) と index関数の中に match関数を組み合わせる。

(2)[Sheet1]のG2セルに、=E2+F2 と入力する。

(3)F2セルからG2セルを範囲指定し、[編集(E)]→[コピー(C)]。

(4)F2セルからG6セルを選択し、[編集(E)]→[貼り付け(P)]。

前回説明した通り、index関数の( )内には、まずどこの範囲からデータを持ってくるのかを入れます。

上の例では、[Sheet2]の「レベル-難易度別補正表」からデータを持って来るので、その範囲「Sheet2!$A$1:$D$4」と入れます。(後でコピーするので「$」マークをつけて絶対参照にしておきます。)

次に「,」で区切って、その範囲の何列目から持ってくるのか(左から何番目か)を入れ、さらに「,」で区切って、その範囲の何行目から持ってくるのか(上から何番目か)を入れます。

ここで match関数を使用します。match関数は、指定したデータが 指定した範囲の何番目にあるのかを返します。

match関数の( )内には、まずどのデータを検索するのかを入れます。

上の例の最初の match関数では、まず難易度が[Sheet2]の「レベル-難易度別補正表」の何行目のデータかを知りたいので、「D2」と入れます。

次に「,」で区切って、どの範囲から持ってくるのかを入れます。

上の例では、[Sheet2]の「レベル-難易度別補正表」の左端の列からデータを探して来るので、その範囲「Sheet2!$A$1:$A$4」と入れ、さらに「,」で区切って「0」(ゼロ)を入れます。(お約束みたいなものです。)

これで「左から何番目のデータか」という部分が関数で表されましたので、次は同様にして「上から何番目のデータか」という部分を関数で表します。

これが2番目に出て来る match関数です。ここで、「レベル」が[Sheet2]の「レベル-難易度別補正表」の何列目のデータかを計算させています。

<<ガイドシートURL>>
http://www.tcat.ne.jp/~ryu/PLE/Kansu/38.pdf