[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