いまさら聞けないExcelの使い方講座

【Excel】毎月の販売数ランキングの表を作りたい! トップ3を求める定番ワザも

並べ替えてから「1」「2」「3」と数える必要なし

 製品の販売数や営業成績など、何らかの実績をまとめた表について、ランキングやトップ3を求めたいことがありますよね。データを並べ替えて、「1」「2」「3」などと数えたりしていませんか? 例えば、以下のような表なら、[合計]列を降順に並べ替えれば、課題は解決します。

[合計]列を降順で並べ替えています

 並べ替えの操作も悪くないですが、月ごとに調べたい時はどうしましょう? 各月の列で都度並べ替えるのは面倒ですよね。今回は、ランキングやトップ3を調べる定番ワザを紹介します。

ランキングを求めるにはRANK.EQ関数

 一覧の値をランキングする場合は、RANK.EQ関数を使います。似た名前のRANK関数は、Excel 2007以前との互換性のための関数です。RANK.AVG関数は同順位の値があった場合に平均値の順位を返します。いずれも引数は共通です。

RANK.EQ関数、RANK関数、RANK.AVG関数の構文。[参照]のセル範囲のうち、[数値]が何位に位置するかを求めます。[順序]には大きいほうから数える(0、または省略)か、小さいほうから数える(1)かを指定します

 引数[数値]を[参照]に含めるように指定するため、少し戸惑うかもしれません。以下の手順では、ランキングを入力するための枠を用意しています。数式をコピーすることを考慮して、[数値]は相対参照、[参照]は行のみ固定の複合参照としています。

セルB11に「=RANK.EQ(B3,B$3:B$7)」と入力しています(①)。順位を調べる[数値]はセルB3です。セルB3~B7の範囲が[参照]となります。横方向へ数式をコピーすることを考えて、行のみ固定の複合参照「B$3:B$7」としています。なお、数値が大きいものを上位にしたいので、[順序]は省略しています
数式を下方向にコピーすれば、7月の順位が求められます(②)
そのまま横方向にコピーすれば、すべて月のランキングが求められます(③)

 RANK.EQ関数の代わりにRANK.AVG関数を使った例も見てみましょう。引数はRANK.EQ関数と同じなので、「EQ」の部分を「AVG」に書き換えるだけでOKです。同順位の値は平均されて「3.5」のように表示されます。続く順位は「4」を飛ばして「5」となります。

セルB11には「=RANK.AVG(B3,B$3:B$7)」と入力してあります(④)。同順位の値は「3.5」のように表示されます(⑤)

トップ3を求めるにはLARGE関数

 トップ3だけを取り出したい時は、LARGE関数です。“何位”を取り出すのかを指定するために、「1」「2」「3」と数値を入力しておくといいでしょう。なお、SMALL関数を使うと小さいほうから数えた値を取り出せます。

LARGE関数の構文。[配列]のセル範囲のうち、大きいほうから数えた[順位]の値を求めます

 トップ3を求める際に利用する数値を表内に入力してあります。数式を縦方向と横方向へコピーすることを考慮して、[配列]と[順位]の両方に複合参照を利用しています。

セルB11に「=LARGE(B$3:B$7,$A11)」と入力しています(⑥)。[配列]はセルB3~B7です。横方向へ数式をコピーすることを考えて、行のみ固定の複合参照「B$3:B$7」としています。[順位]は「1」と入力されたセルA11です。列のみを固定した「$A11」としています
数式を下方向にコピーすれば、7月のトップ3が求められます(⑦)
そのまま横方向にコピーすれば、すべて月のトップ3が求められます(⑧)