こんにちは
先日、Excelを学習中の生徒様からこんな質問をいただきました。
「SORT関数って、1つのセルに式を入力するだけで並べ替え結果が全部表示されるから便利だけど、必要な列だけとか、必要な行だけ抜き出したい時は使えないですよね?
例えば成績表で“科目別ランキング上位だけ”を表示したい時は、SORTの結果をイコールで参照するしかないんでしょうか?」
結論としては、SORT関数を他の関数と組み合わせて“ネスト”すれば、必要な列だけ・必要な行だけを取り出すことができます。
ここでは、成績表のデータを例に手順を紹介します。
1. SORT関数で並べ替えを行う
例として、次のような表があるとします。
1列目:組
2列目:番号
3列目:氏名
4列目:ふりがな
5列目:性別
6〜10列目:英・国・数・理・社
11列目:3科目合計
12列目:5科目合計
4行目が見出し行、5行目から174行目まで、5クラス分の成績表のデータが入力されています。
この表を基に、5科目合計点の上位3名を表示したいとします。
まずはSORT関数で並べ替えます。
=SORT(配列, 並べ替えインデックス, [順序])
・ 配列:表全体
・並べ替えインデックス:5科目合計点の列番号(例:12列目)
・ 順序:降順(-1)
これで、点数の高い順に並べ替えられた表全体がスピル表示されます。
2. 必要な列だけを取り出す(CHOOSECOLS)
今回必要なのは、
・組(1列目)
・氏名(3列目)
・5科目合計点(12列目)
の3列だけです。
そこで 配列から列を取り出す「CHOOSECOLS関数」 を使います。
=CHOOSECOLS(範囲, 列番号1, 列番号2, ...)
範囲の部分に、先ほどのSORT関数をそのまま入れこみます。
=CHOOSECOLS( SORT(表全体, 12, -1), 1, 3, 12)
これで、並べ替え後の表から必要な列だけを抽出できます。
3. 上位3名だけを取り出す(TAKE)
最後に、上位3名だけを表示するために、配列から連続した行や列を取り出す「 TAKE関数 」を使います。
=TAKE(範囲, 行数, [列数])
行数は「3」を指定します。列数は省略可能です(既に3列取り出し済みなので省略しない場合は「,3」と入力)
=TAKE( CHOOSECOLS( SORT(表全体, 12, -1), 1, 3, 12 ), 3 ,3)
これで、上から3行だけ(=上位3名) が表示されます。
4. 他の科目のランキングも簡単に作れる
別の科目のランキングを作りたい場合は、
SORT関数の「並べ替えインデックス」だけ変更すればOK です。
式をコピーして、英語なら英語の列番号、数学なら数学の列番号に変えるだけで、同じ形式のランキングが簡単に作れます。
まとめ
①SORTで並べ替え
②それをCHOOSECOLSで包んで必要な列だけ抽出
③それをTAKEで包んで必要な行数だけ抽出
この3つを組み合わせるだけで、柔軟なランキング表が作れます。
一見複雑に見えますが、慣れるととても便利です。
もし操作に迷ったら、いつでもスタッフにお声がけくださいね♪
