① (A2)に赤池さんが3年1組1番なので3101と表示するには、
=B2*1000+C2*100+D2
とします。キーボードには×がないので*(アスタリスク)を用います。これをオートフィルで下にコピーします。しかし、年・組・番・氏名がないセルは0と表示され、カッコ悪いです。0でなく空欄にしたいです。そこで、もし氏名が空欄ならば空欄という関数を付け加えます。=IF(条件1,表示1,表示2)です。条件1は、F2=""です。空欄は""です。表示1は""です。表示2は先ほどの関数です。したがって、
=IF(F2="","",B2*1000+C2*100+D2)
となります。
② (L2)に赤池さんの最も得点が高い教科を表示する関数を入力します。少し複雑です。INDEX・MATCH・LARGEの3つの関数を組み合わせます。
=INDEX(範囲,数字) で範囲内の左から何番目のデータを表示します。この場合は、
=INDEX($G$1:$K$1,1)
で国語が表示されます。=MATCH(数字.範囲,完全一致か近似値)で数字が範囲内で左から何番目にあるかを表示します。数字を検索する場合、その数字と完全に一致する数字を検索するのか、近い数字を検査するのか、を指定する場合が多いです。完全一致を指定する場合はFALSEか0を入力します。近似値の場合はTRUEか1を入力します。ほとんど完全一致を指定します。この場合は、
=MATCH(37,$G2:$K2,0)
で1が表示されます。=LARGE(範囲,1)で範囲内で最も高い得点を表示します。この場合は、
=LARGE($G2:$K2,1)
で37が表示されます。考え方は、赤池さんの5教科の中で最も高い得点は37点、37点は左から1番目、左から1番目の教科は国語、ということになります。これをまとめると、
=INDEX($G$1:$K$1,MATCH(LARGE($G2:$K2,1),$G2:$K2,0))
となります。しかし、データがないと「#DIV/0!」や「#NAME?」などのエラーメッセージが表示され、カッコ悪いです。そこで、エラーの場合は空欄にするIFERRIR関数を加えます。=IFERROR(関数,"")です。最終的には、
=IFERROR(INDEX($G$1:$K$1,MATCH(LARGE($G2:$K2,1),$G2:$K2,0)),"") がいいと思います。LARGE関数の1を2に変えれば、2番目に高い得点の教科を表示します。各都道府県のベスト3の作物を表示するなど、いろいろな場面で利用できる関数だと思います。
③ (M2)に赤池さんの最も得点が低い教科を表示する関数を入力します。セルL2に入力した関数のLARGEをSMALLに変えるだけです。セルL2の関数を右のセルM2にコピーしてください。$がついているので、範囲は変わらないので大丈夫です。
=IFERROR(INDEX($G$1:$K$1,MATCH(SMALL($G2:$K2,1),$G2:$K2,0)),"")
となります。
④ (P2)に数字(3101)を入れると、氏名(赤池 勝男)が表示される関数を入力します。番号を入力すると氏名などのデータが表示される、よく見られる関数です。=VLOOKUP(数字を入力するセル,データの範囲,表示したいデータが範囲の左から何番目にあるか,完全一致か近似値)です。数字を入力するセルはO2です。右にコピーして使いたいので$O2にします。範囲はA2:K20ですが、コピーして使いたいので$A$2:$K$20にします。氏名は範囲の左から6番目なので6を入力します。最後は完全一致で0です。まとめると、
=VLOOKUP($O2,$A$2:$A$20,6,0)
です。しかし、この関数も数字がないとエラーメッセージが表示されてしまいますの、IFERRORの関数を加えます。
=IFERROR(VLOOKUP($O2,$A$2:$K$20,6,0),"")
となります。
⑤ (Q2)に赤池さんの国語の点を表示するには、セルP2を右のQ2にコピーし、6を7に変えます。
=IFERROR(VLOOKUP($O2,$A$2:$K$20,6,0),"")
となります。
⑥ (Y2)に⑦(Y1)に入力した項目のデータを表示する関数を入力します。VLOOKUP関数とMATCH関数を組み合わせます。=VLOOKUP(数字が入力してあるセル,データの範囲,表示したい項目が項目の範囲の左から何番目にあるか,完全一致か近似値)です。数字が入力してあるセルはS2です。右にコピーしたいので$S2とします。範囲はA2:K20ですが、コピーして使いたいので$A$2:$K$20にします。表示したい項目が国語なら7、社会なら8になります。 =MATCH("国語",$A$1:$K$1,0) で7になります。=MATCH("社会",$A$1:$K$1,0)で8になります。国語も社会も入力するセルはY1です。右にコピーしたときに変化させたいが、下にコピーしたときは変化させたくないので、Y$1とします。IFERROR関数を加えて、
=IFERROR(VLOOKUP($S2,$A$2:$K$20,MATCH(Y$1,$A$1:$K$1,0),0),"")
となります。Y1の項目をいろいろ変えてみてください。 |