前回の続きですが、前回は「MAX関数を使って各生徒の成績の中で一番成績の良かった点数」を表示させましたが、では「一番点数が良かったのは、どの教科か?」という答えを抽出する方法について今回は解決していきたいと思います。
前回の復習(MAX関数)
成績表から、各生徒の成績の中で「一番良かった点」をMAX関数で表示させました。
MATCH関数で何番目かを導き出す
列を右側にひとつ追加します。見出しは「一番良かった教科」といった感じで記入しています。
まずはMATCH関数で何番目かを導き出します。
MATCH 関数は、範囲 のセルの範囲で指定した項目を検索し、その範囲内の項目の相対的な位置を返します。 たとえば、範囲 A1:A3 に値 5、25、38 が含まれている場合、数式「=MATCH(25,A1:A3,0)」を入力すると、範囲内では 25 が 2 番目の項目であるため、数字 2 が返されます。
https://support.microsoft.com/ja-jp/office/match-%E9%96%A2%E6%95%B0-e8dffd45-c762-47d6-bf89-533f4a37673a
今回の場合は「=MATCH(H3,B3:F3,0)」と入れると、結果に3と表示されます。
これで「3番目に一番良かった点数がある」ことが分かります。
INDEX関数で答えを導き出す。
あとは、この結果と「教科は2行目」は固定されている点を考えて、「2行目、3列目」のセルの値を取り出せばいいということになります。
ここはINDEX関数の力を借りてみます。
[rml_read_more]
INDEX 関数はテーブルまたはセル範囲にある値、あるいはその値のセル参照を返します。
https://support.microsoft.com/ja-jp/office/index-%E9%96%A2%E6%95%B0-a5dcf0dd-996d-40a4-a822-b56b061328bd
INDEX(配列, 行番号, [列番号])
INDEX(配列, 行番号, [列番号])で列番号に先程MATCH関数で導き出した結果を入れます。
そうすると、2行目・3列目の結果、つまり「理科」という答えを導き出すことができます。
あとは、オートフィルをすれば各生徒の一番良かった教科が表示されます!※INDEXの配列(範囲)を絶対参照にしておかないと範囲がずれるので、絶対参照にしておくことがポイントです。
まとめ
他にも方法はあるかもしれませんが、今の時点で思いつく解決方法をご紹介させて頂きました。他にも「この方法だと簡単に導き出せますよ」などあれば…ぜひお気軽にお伝え頂けますと幸いです。
あとは「一番良かった点数が2つ以上ある時はどうすれば?」問題がまだ解決していないので、この点については次回また考えてみたいと思います。
ご参考下さい😃