【Excel】エクセルで上位3位・5位を抽出する方法(関数を使ったランキング抽出のやり方を解説)
Excelで大量のデータを扱っていると、「売上の上位3位だけを取り出したい」「成績の上位5位を一覧で確認したい」といった場面に出くわすことは多いでしょう。
手作業で並び替えて目視で確認する方法もありますが、データが更新されるたびに作業を繰り返すのは非常に非効率です。
そこで活躍するのが、Excelの関数を使ったランキング抽出の方法です。
LARGE関数やSMALL関数、さらにはRANK関数やFILTER関数を組み合わせることで、上位3位・5位の抽出を自動化することが可能になります。
この記事では、Excelで上位のデータを抽出するための関数の基本から応用まで、具体的な手順とともに丁寧に解説していきます。
初心者の方でもすぐに実践できる内容になっていますので、ぜひ最後までご覧ください。
エクセルで上位3位・5位を抽出するにはLARGE関数とFILTER関数の組み合わせが最も効果的
それではまず、エクセルで上位3位・5位を抽出する方法の結論から解説していきます。
Excelでランキング上位のデータを抽出する方法はいくつか存在しますが、最もスマートで実用的なのはLARGE関数とFILTER関数を組み合わせる方法です。
LARGE関数は指定した範囲の中でn番目に大きい値を返す関数であり、FILTER関数はその条件に合致するデータ行全体を抽出する関数です。
この2つを組み合わせることで、単に数値の上位を取り出すだけでなく、対応する名前や項目名なども一緒に表示できるようになります。
上位抽出の基本的な考え方は「LARGE関数で閾値となる値を求め、FILTER関数でその値以上のデータを行ごと抽出する」という2ステップです。
この方法を使えば、データが更新されても自動的に上位のランキングが更新されるため、業務効率が大幅に向上するでしょう。
また、Excel 2019以前のバージョンやFILTER関数が使えない環境では、LARGE関数とINDEX関数・MATCH関数を組み合わせる方法が代替手段として有効です。
どちらの方法も後ほど詳しく説明しますので、自分の環境に合った方法を選んでみてください。
LARGE関数の基本的な使い方と上位n位の値を取り出す方法
続いては、LARGE関数の基本的な使い方を確認していきます。
LARGE関数は、データの中からn番目に大きい数値を取り出すための関数です。
ランキング上位の値を取得する際に欠かせない関数であり、Excelのデータ分析においても非常に頻繁に使用されます。
LARGE関数の書式と引数の意味
LARGE関数の構文は以下の通りです。
LARGE(配列, 順位)
配列 :順位を調べる対象となるセル範囲または配列
順位 :何番目に大きい値を取得するかを指定する数値(1なら最大値、2なら2番目に大きい値)
たとえば、A1からA10のセル範囲に売上数値が入力されている場合、上位1位の値を取得したいときは次のように入力します。
=LARGE(A1:A10, 1) → 最大値(1位)を返す
=LARGE(A1:A10, 2) → 2番目に大きい値(2位)を返す
=LARGE(A1:A10, 3) → 3番目に大きい値(3位)を返す
このように、第2引数の数値を変えるだけで上位3位・5位それぞれの基準値を簡単に求めることが可能です。
LARGE関数を使ったランキング表の作り方
LARGE関数を使ってランキング表を作成する際は、複数のセルにLARGE関数を連続して入力する方法が一般的です。
たとえば、以下のような売上データがあるとします。
| 氏名 | 売上(万円) |
|---|---|
| 田中 | 320 |
| 佐藤 | 450 |
| 鈴木 | 280 |
| 高橋 | 510 |
| 伊藤 | 390 |
| 渡辺 | 475 |
このデータから上位3位の売上金額を取り出す場合、別の表に以下のように入力します。
1位 =LARGE(B2:B7, 1) → 510
2位 =LARGE(B2:B7, 2) → 475
3位 =LARGE(B2:B7, 3) → 450
このようにすれば、上位3位の売上金額を瞬時に抽出できるでしょう。
同率順位が発生した場合の注意点
LARGE関数を使用する際に気をつけたいのが、同率順位(同じ値が複数存在する場合)の扱いです。
たとえば1位と2位が同じ値の場合、LARGE関数ではその値が重複して返ってきます。
同率順位があるデータを扱う場合は、RANK関数を組み合わせて順位を管理するか、COUNTIF関数を使って重複を制御するといった対策が必要になります。
具体的な対処方法については、後述のFILTER関数との組み合わせ方の中でも触れていきますので、ご確認ください。
FILTER関数と組み合わせて上位データを行ごと抽出する方法
続いては、FILTER関数を組み合わせて上位データを行ごと抽出する方法を確認していきます。
LARGE関数だけでは「数値」しか取り出せませんが、FILTER関数を組み合わせることで対応する名前や項目も含めた行データ全体を抽出することが可能になります。
これにより、より実用的なランキング表を自動で作成できるようになるでしょう。
FILTER関数の基本書式
FILTER関数の構文は以下の通りです。
FILTER(配列, 含む, [空の場合])
配列 :抽出対象のセル範囲(表全体を指定するとよい)
含む :TRUE/FALSEを返す条件式
空の場合 :条件に合致するデータがない場合に表示する値(省略可)
FILTER関数はExcel 365およびExcel 2021以降で使用できる比較的新しい関数です。
お使いのExcelのバージョンをあらかじめご確認ください。
LARGE関数とFILTER関数を組み合わせた上位抽出の実例
先ほどの売上データを例に、上位3位のデータを氏名と売上金額ごと抽出する方法を見てみましょう。
=FILTER(A2:B7, B2:B7>=LARGE(B2:B7, 3))
この数式の意味は、「B2からB7の売上金額が、3番目に大きい値(3位の値)以上であるデータを、A列からB列ごと抽出する」というものです。
結果として、上位3名の氏名と売上金額がまとめて表示されます。
| 氏名 | 売上(万円) |
|---|---|
| 高橋 | 510 |
| 渡辺 | 475 |
| 佐藤 | 450 |
このように、わずか1つの数式を入力するだけで上位3名のデータが自動的に抽出されます。
データが更新されても数式が自動で再計算されるため、手動での並び替えや目視確認の手間が一切不要になるでしょう。
上位5位を抽出する場合への応用
上位5位を抽出したい場合は、LARGE関数の第2引数を「5」に変更するだけです。
=FILTER(A2:B7, B2:B7>=LARGE(B2:B7, 5))
このように、抽出したい順位の数値を変えるだけで上位3位でも5位でも柔軟に対応できます。
また、上位10位や上位20位といった任意のランキング抽出にも同様の方法で応用が可能です。
数式中の「5」の部分をセル参照にして可変にすれば、プルダウンなどで抽出件数を切り替えるダッシュボード的な使い方もできるでしょう。
FILTER関数が使えない環境でのINDEX・MATCH関数を使った代替方法
続いては、FILTER関数が使えない古いバージョンのExcelでの代替方法を確認していきます。
Excel 2019以前のバージョンや、互換性を重視する環境では、FILTER関数の代わりにINDEX関数とMATCH関数を組み合わせる方法が有効です。
少し複雑に見えますが、仕組みを理解すれば応用範囲が広がる方法ですので、ぜひ押さえておきましょう。
INDEX関数とMATCH関数の基本
INDEX関数とMATCH関数は、データの検索と抽出においてExcelで最もよく使われる関数の組み合わせのひとつです。
INDEX(配列, 行番号, [列番号])
→ 指定した行・列の位置にある値を返す関数
MATCH(検索値, 検索範囲, [照合の種類])
→ 検索値が検索範囲の中で何番目にあるかを返す関数
この2つを組み合わせることで、「条件に合う値が何行目にあるかをMATCHで求め、その行の値をINDEXで取り出す」という処理が実現できます。
LARGE・INDEX・MATCHを組み合わせた上位抽出の数式
LARGE関数で求めた上位n位の値を使い、INDEX・MATCHで対応する氏名を取り出す方法は以下の通りです。
1位の氏名を取得する場合
=INDEX(A2:A7, MATCH(LARGE(B2:B7, 1), B2:B7, 0))
3位の氏名を取得する場合
=INDEX(A2:A7, MATCH(LARGE(B2:B7, 3), B2:B7, 0))
この数式は「B列の中でLARGEが返す値と一致する行番号をMATCHで求め、その行のA列(氏名)をINDEXで取り出す」という仕組みです。
FILTER関数が使えない環境でも、このLARGE・INDEX・MATCHの組み合わせを使えば上位3位・5位の名前と数値を自動抽出できるでしょう。
RANK関数を活用した順位付きランキング表の作成
さらに一歩進んで、RANK関数を使ってデータに順位を付けたうえで管理する方法もあります。
RANK(数値, 参照, [順序])
数値 :順位を調べる対象の値
参照 :比較対象となるセル範囲
順序 :0または省略で降順(大きい順)、1で昇順(小さい順)
各データにRANK関数で順位列を追加しておけば、その順位をもとにフィルタや並び替えを使って上位のデータを手軽に管理できます。
| 氏名 | 売上(万円) | 順位 |
|---|---|---|
| 田中 | 320 | =RANK(B2, $B$2:$B$7, 0) |
| 佐藤 | 450 | =RANK(B3, $B$2:$B$7, 0) |
| 鈴木 | 280 | =RANK(B4, $B$2:$B$7, 0) |
| 高橋 | 510 | =RANK(B5, $B$2:$B$7, 0) |
| 伊藤 | 390 | =RANK(B6, $B$2:$B$7, 0) |
| 渡辺 | 475 | =RANK(B7, $B$2:$B$7, 0) |
順位列を作成したうえでFILTER関数やオートフィルターを使えば、「順位が3以下のデータだけを表示する」といった運用も可能になります。
RANK関数・LARGE関数・FILTER関数(またはINDEX・MATCH)を使いこなすことで、Excelでのランキング管理は飛躍的に効率化されます。
どの関数を使うかはExcelのバージョンや目的によって使い分けるのがベストでしょう。
まとめ
この記事では、Excelで上位3位・5位を抽出する方法について、LARGE関数を中心にFILTER関数・INDEX関数・MATCH関数・RANK関数を組み合わせた実践的な手順を解説しました。
まず、上位抽出の最も効果的な方法はLARGE関数とFILTER関数を組み合わせた方法であり、1つの数式で名前や項目ごとデータを自動抽出できることをご紹介しました。
また、Excel 2019以前のバージョンではFILTER関数が使えないため、LARGE関数とINDEX・MATCH関数を組み合わせる代替方法が有効であることも確認しました。
RANK関数を使って順位列を作成する方法は、ランキングを視覚的に管理したい場面でも非常に役立つテクニックです。
いずれの方法もデータが更新されると自動的に再計算されるため、手動作業を大幅に削減できるでしょう。
今回紹介した関数を活用して、Excelでのデータ分析やランキング管理をよりスムーズに進めてみてください。