-
Home »
-
エクセル関数一覧表 »
-
Excel関数の目次 »
- 順位を求める関数(RANK,RANK.EQ,RANK.AVG)の使い方
- 順位(RANK関数)を求めるExcel関数の使い方を説明しています。
Excel2010ではRANK.EQ関数とRANK.AVG関数が追加されました。 RANK.EQ関数が従来のRANK関数と同じ結果を返します。
なお、RANK関数はExcel2010以降でも使用できます。Excel2007以前との互換性が必要な場合はRANK関数を使います。
更新:2024/2/24;作成:2011/11/20
指定した数値の順位を求める topへ
ランク
=RANK(数値,範囲,[順序])
順序:「0」は大きいほうからの順(降順):省略可
順序:「1」は小さいほうからの順(昇順):省略不可
問題1
- 合計得点の大きい方から順位を付けなさい。
|
B |
C |
D |
E |
F |
G |
2 |
名前 |
国語 |
数学 |
英語 |
合計 |
順位 |
3 |
井上 |
80 |
85 |
88 |
253 |
2 |
4 |
会田 |
70 |
65 |
58 |
193 |
5 |
5 |
上野 |
90 |
88 |
76 |
254 |
1 |
6 |
岡田 |
55 |
62 |
47 |
164 |
6 |
7 |
釜元 |
77 |
64 |
71 |
212 |
3 |
8 |
木下 |
64 |
75 |
69 |
208 |
4 |
問題1の解答例:RANK関数で求める方法
- 順位はRANK関数で求めます。 大きい順ですので、降順の「0」を指定します。
なお、範囲は同じ範囲を指定しますので絶対参照とします。絶対参照は[F4]キーを使うと便利です。
なお、この「0」は省略可ですので =RANK(F3,$F$3:$F$8) としてもOKです。
Spillが使える場合の数式
- Spill(スピル)が利用できる環境(Microsoft 365)の場合は、下図のようにオートフィルの必要がなくなります。
G3セルに =RANK(F3:F8,F3:F8) と入力しています。
入力するセルはG3セルだけですので、絶対参照にする必要はなく、相対参照でOKです。
数式オートコンプリートを利用して数式を入力する手順
- 数式を入力するセル G3セルを選択して、=ra と入力すると、ra が含まれる関数がリストで表示されます。
[↓]キーを数回押して、RANK.EQ を選択します。[Tab]キーを押して選択を確定します。注意:[Enter]ではありません。
RANK関数はこのリストに表示されませんので、説明上では RANK.EQ 関数を使って説明を書いています。
RANK( と入力すれば済む話ですけど・・・数式オートコンプリートの説明をしたいので・・・
リストの一番下に RANK が表示されています。思い違いでしたので、上の文には取り消し線を入れました。
ここでは、RANK.EQ で説明させていただきたい・・・差し替えの手間を省きたい・・・ということで、ご了承願います。
- =RANK.EQ( と入力されます。=RANK.EQ(F3,$F$3:$F$8,0) とキーボードから入力します。[Ctrl]+[Enter]キーを押して数式の入力を確定します。アクティブセルがG3のままで移動しません。
- 絶対参照は =RANK.EQ(F3,F3 と入力して、[F4]キーを押して=RANK.EQ(F3,$F$3 とします。
=RANK.EQ(F3,$F$3:F8 と入力して、[F4]キーを押して=RANK.EQ(F3,$F$3:$F$8 とします。
「,」を入力して降順の 0) を入力して、[Ctrl]+[Enter]キーを押して数式の入力を確定します。
- または、マウスで F3セルを選択して、「,」を入力して、とします。=RANK.EQ(F3,
マウスで セル範囲 F3:F8 を選択して、[F4]キーを押して =RANK.EQ(F3,$F$3:$F$8 と絶対参照にします。
「,」を入力して降順の 0) を入力して、[Ctrl]+[Enter]キーを押して数式の入力を確定します。
- G3セルの フィルハンドルをダブルクリックして、数式を下方向へコピーします。
または、[Shift]を押した状態で[↓]キーを数回押して、G3:G8セルを選択して、[Ctrl]+[D]で数式をコピーします。
関数の挿入から数式を入力する場合の手順
- 数式を入力する G3セルを選択します。
数式バーの 関数の挿入ボタン [fx]ボタンをクリックします。
- 関数の挿入 ダイアログボックスが表示されます。
関数の分類で 「すべて表示」を選択します。
RANK を選択して、[OK]ボタンをクリックします。
- 余談ですが、RANK関数は統計に分類されるので関数の分類で「統計」を選択すると、Excel2010以降ではRANK.EQとRANK.AVGは表示されますが、RANKは表示されません。
つまり、新しい関数の RANK.EQまたはRANK.AVGのどちらかを使いなさいということのようです。(下図はExcel2016)
RANK関数を選択するには[すべて表示」を指定する必要があります。
- RANK関数の引数、数値には F3 、参照には F3:F8を指定して、[F4]キーを押して $F$3:$F$8 と絶対参照にします。
(絶対参照はG3セルに入力した後、下のG4:G8セルへ数式をコピーするためです)
順序には 降順(数値の大きい順)で順位を求めたいので 0 を指定します。
[OK]ボタンをクリックして数式を入力します。
- 数値の入力欄をクリックしてカーソルを表示します。シートのF3セルをクリックすると F3 と入力できます。
[Tab]キーを押して、参照の入力欄にカーソルを表示します。
シートの セル範囲F3:F8を選択すると、 F3:F8 と入力されるので、[F4]キーを押して $F$3:$F$8 と絶対参照にします。
[Tab]キーを押して、順序の入力欄にカーソルを表示し、降順の 0 を入力します。
- G3セルを選択して、フィルハンドルをドラッグして、G3セルに入力した数式をG4:G8セルにコピーします。
- 数値の大きい方からの順位を求めることができました。
問題2
- 総得点が同点の場合、G列のように順位が飛び飛びになります。
H列のように同点の場合は表示順の行番号が若い方を上にするにはどうしたらいいでしょう?
順位Bを計算しなさい。
|
B |
C |
D |
E |
F |
G |
H |
I |
2 |
名前 |
国語 |
数学 |
英語 |
合計 |
順位A |
順位B |
作業列 |
3 |
井上 |
81 |
85 |
88 |
254 |
1 |
1 |
|
4 |
会田 |
70 |
65 |
58 |
193 |
5 |
5 |
|
5 |
上野 |
90 |
88 |
76 |
254 |
1 |
2 |
|
6 |
岡田 |
55 |
62 |
47 |
164 |
6 |
6 |
|
7 |
釜元 |
77 |
64 |
71 |
212 |
3 |
3 |
|
8 |
木下 |
68 |
75 |
69 |
212 |
3 |
4 |
|
- G列の順位Aは、G3セルに =RANK(F3,$F$3:$F$8,0) と入力して、下方向へコピーしています。
- Spillが使える場合は =RANK(F3:F8,F3:F8,0) でOKです。
問題2の解答例1:作業列を使って、RANK関数で求める方法
- 作業列としてI列を使用します。
I3セルに『=F3-ROW()/1000』 として、1点に満たない数値(行番号の千分の一)を差し引き、同得点間に差を付けてやります。
- 逆に『=F3+ROW()/1000』とすると、行番号が大きい方が上位になります。
- 順位BはI列を基準にRANK関数で出します。
H3セルに =RANK(I3,$I$3:$I$8,0) と入力して、下方向へコピーします。
- Spillが使える場合は、H3セルに =RANK(I3:I8,I3:I8,0) でOKです。
問題2の解答例2:COUNTIF関数で求める方法
- COUNTIF関数で順位Bの計算をするには
H3セルに =COUNTIF($F$3:$F$8,">"&F3)+COUNTIF($F$3:F3,F3) と入力して、下方向へコピーします。
この場合は作業列は不要になります。
問題2の解答例3:RANK関数とCOUNTIF関数で求める方法
- COUNTIF関数で重複するものを1,2,3・・・と数え、RANK関数で求めた順位のくわえる方法もあります。
H3セルに =RANK(F3,F3:F8)+COUNTIF($F$3:F3,">="&F3)-1 と入力し、下方向へコピーします。
問題2の解答例4:Filter関数、SORT関数、XMATCH関数で求める方法
- Microsoft365ではFilter関数、SORT関数、XMATCH関数が使えます。
名前を得点の高い順に並べ替えて、その並べ替えた配列で各行の名前が何番目に有るかを調べています。
E3セルに =XMATCH(B3:B8,FILTER(SORT(B3:F8,5,-1),{1,0,0,0,0})) と入力しています。
問題3
- 順位をJ2セルの入力して、その順位の名前をJ3セル以降に取出してください。
なお、G列で同順位の場合、行番号が若い方を上にします。
-
|
B |
C |
D |
E |
F |
G |
H |
I |
J |
2 |
名前 |
国語 |
数学 |
英語 |
合計 |
順位 |
作業列 |
順位 |
3 |
3 |
井上 |
81 |
85 |
88 |
254 |
1 |
|
名前 |
釜元 |
4 |
会田 |
70 |
65 |
58 |
193 |
5 |
|
|
木下 |
5 |
上野 |
90 |
88 |
76 |
254 |
1 |
|
|
|
6 |
岡田 |
55 |
62 |
47 |
164 |
6 |
|
|
|
7 |
釜元 |
77 |
64 |
71 |
212 |
3 |
|
|
|
8 |
木下 |
68 |
75 |
69 |
212 |
3 |
|
|
|
問題3の解答例1
- 計算結果は下表のようになります。
|
B |
C |
D |
E |
F |
G |
H |
I |
J |
2 |
名前 |
国語 |
数学 |
英語 |
合計 |
順位 |
作業列 |
順位 |
3 |
3 |
井上 |
81 |
85 |
88 |
254 |
1 |
1_1 |
名前 |
釜元 |
4 |
会田 |
70 |
65 |
58 |
193 |
5 |
5_1 |
|
木下 |
5 |
上野 |
90 |
88 |
76 |
254 |
1 |
1_2 |
|
|
6 |
岡田 |
55 |
62 |
47 |
164 |
6 |
6_1 |
|
|
7 |
釜元 |
77 |
64 |
71 |
212 |
3 |
3_1 |
|
|
8 |
木下 |
68 |
75 |
69 |
212 |
3 |
3_2 |
|
|
- G列の順位は、G3セルに =RANK(F3,$F$3:$F$8,0) と入力して、下方向へコピーします。
- H列の作業列は、H3セルに =G3&"_"&COUNTIF($G$3:G3,G3) と入力して、下方向へコピーします。
- J3セルに =IF(COUNTIF($H$3:$H$8,$J$2&"_"&ROW(A1))=0,"",
INDEX($B$3:$B$8,MATCH($J$2&"_"&ROW(A1),$H$3:$H$8,0)))
としてJ8セルまでコピーします。
同順位の人が6名までは表示できるように、J8セルまで数式をコピーしています。
問題3の解答例2:FILTER関数で求める方法
- Microsoft 365では Filter関数が使えるようになりました。
FILTER関数でデータを抽出する:Excel関数 をご覧ください。
- J3セルに =FILTER(B3:B8,G3:G8=J2,"") と入力します。
(余談1) COUNTIF関数を使った順位の出し方
- COUNTIF関数で求める得点より高い得点の数を数えます。順位はその次になるので1を加えます。
- 合計欄が空欄や文字列であったらうまく計算できないので、
=IF(ISNUMBER(F3),COUNTIF($F$3:$F$8,">"&F3)+1,"")
のように、ISNUMBER関数の処理を加えてみました。
- 重複値は同順位となります。
(余談2) SUMIF関数を使った順位の出し方
- 同順位が有る場合、以下の順位を繰り上げるには?
- 以下の表のような順位にしたい場合、作業列を使って処理してみました。
-
|
B |
C |
D |
E |
F |
G |
H |
2 |
名前 |
国語 |
数学 |
英語 |
合計 |
順位 |
作業列 |
3 |
井上 |
80 |
85 |
89 |
254 |
1 |
1 |
4 |
会田 |
70 |
65 |
73 |
208 |
3 |
1 |
5 |
上野 |
90 |
88 |
76 |
254 |
1 |
|
6 |
岡田 |
55 |
62 |
47 |
164 |
4 |
1 |
7 |
釜元 |
77 |
64 |
71 |
212 |
2 |
1 |
8 |
木下 |
64 |
75 |
69 |
208 |
3 |
|
【計算例】
- 同得点は無視して、異なる得点のみから順位を求めます。
順位は、求めたい得点より大きい得点の数を求め「+1」することによって可能です。
- 作業列の H3セルには =IF(COUNTIF($F$3:F3,F3)>1,"",1) と入力して、下方向へ数式をコピーします。
- 順位の G3セルには =SUMIF($F$3:$F$8,">"&F3,$H$3:$H$8)+1 と入力して、下方向へ数式をコピーします。
指定した数値の順位を求める topへ
ランク イコール
=RANK.EQ(数値,範囲,順序)
順序:「0」は大きいほうからの順(降順):省略可
順序:「1」は小さいほうからの順(昇順):省略不可
Excel2010で追加された関数です。
- 重複した数値は同じ順位と見なされ、それ以降の数値の順位がずれていきます。
従来のRANK関数と同じ結果になります。
- 【問題1】合計得点の大きい方から順位を付けなさい。ただし、同得点のときは同順位とします。
|
B |
C |
D |
2 |
名前 |
合計得点 |
順位 |
3 |
井上 |
253 |
1 |
4 |
会田 |
193 |
5 |
5 |
上野 |
253 |
1 |
6 |
岡田 |
164 |
6 |
7 |
釜元 |
208 |
3 |
8 |
木下 |
208 |
3 |
- 【解答1例】順位はRANK.EQ関数で求めます。 大きい順ですので、降順の「0」を指定します。
D3セルに =RANK.EQ(C3,$C$3:$C$8,0) と入力して、下方向へコピーします。
なお、この「0」は省略可ですので =RANK.EQ(C3,$C$3:$C$8) としてもOKです。
- RANK.EQの関数の引数ダイアログを使った場合は、数値に C3 、参照に $C$3:$C$8 、順序に 0 を入力します。
指定した数値の平均順位を求める topへ
ランク アベレージ
=RANK.AVG(数値,範囲,順序)
順序:「0」は大きいほうからの順(降順):省略可
順序:「1」は小さいほうからの順(昇順):省略不可
Excel2010で追加された関数です。
- 複数の値が同じ順位にあるときは、平均の順位が返されます。
従来のRANK関数とは重複する値があると異なった結果になります。
- 【問題1】合計得点の大きい方から順位を付けなさい。ただし、同得点のときは順位の平均で求めなさい。
|
B |
C |
D |
2 |
名前 |
合計得点 |
順位 |
3 |
井上 |
253 |
1.5 |
4 |
会田 |
193 |
5 |
5 |
上野 |
253 |
1.5 |
6 |
岡田 |
164 |
6 |
7 |
釜元 |
208 |
3.5 |
8 |
木下 |
208 |
3.5 |
- 【解答1例】 順位はRANK.AVG関数で求めます。 大きい順ですので、降順の「0」を指定します。
D3セルに =RANK.AVG(C3,$C$3:$C$8,0) と入力して、下方向へコピーします。
なお、引数「順序」の「0」は省略可ですので =RANK.AVG(C3,$C$3:$C$8) としてもOKです。
- 井上と上野は同得点で1位、2位となるので、順位はその平均値で (1+2)/2=1.5 となります。
- RANK.AVGの関数の引数ダイアログを使った場合は、数値に C3 、参照に $C$3:$C$8 、順序に 0 を入力します。
スポンサードリンク
よねさんのWordとExcelの小部屋 »
エクセル関数一覧表 »
順位の関数(RANK関数,RANK.EQ関数,RANK.AVG関数)の使い方
PageViewCounter
Since2006/2/27