- 
Home » 
- 
エクセル関数一覧表 » 
- 
Excel関数の目次 » 
- 順位を求める関数(RANK,RANK.EQ,RANK.AVG)の使い方 
  
    - 順位(RANK関数)を求めるExcel関数の使い方を説明しています。
 Excel2010ではRANK.EQ関数とRANK.AVG関数が追加されました。 RANK.EQ関数が従来のRANK関数と同じ結果を返します。
 なお、RANK関数はExcel2010以降でも使用できます。Excel2007以前との互換性が必要な場合はRANK関数を使います。
 
更新:2025/2/12;作成: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]キーを押して数式の入力を確定します。
  
- [Shift]を押した状態で[↓]キーを数回押して、G3:G8セルを選択して、[Ctrl]+[D]で数式をコピーします。
 または、G3セルの フィルハンドルをダブルクリックして、数式を下方向へコピーします。
  
関数の挿入から数式を入力する場合の手順
- 数式を入力する G3セルを選択します。
 数式バーの 関数の挿入ボタン [fx]ボタンをクリックします。
  
- 関数の挿入 ダイアログボックスが表示されます。
 関数の分類で 「すべて表示」を選択します。
 RANK を選択して、[OK]ボタンをクリックします。
   
- 余談ですが、RANK関数は統計に分類されるので関数の分類で「統計」を選択すると、Excel2010以降ではRANK.EQとRANK.AVGは表示されますが、RANKは表示されません。
 つまり、新しい関数の RANK.EQまたはRANK.AVGのどちらかを使いなさいということのようです。(下図はExcel for Microsoft365)
 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: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関数で求める方法
- Excel for Microsoft 365,Excel2021以降では Filter関数が使えるようになりました。
 FILTER関数でデータを抽出する をご覧ください。
- J3セルに =FILTER(B3:B8,G3:G8=J2,"") と入力します。
  
指定した数値の順位を求める   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です。
 Spillが利用できる場合は =RANK.EQ(C3:C8,C3:C8) とします。
   
指定した数値の平均順位を求める   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 となります。
 Spillが利用できる場合は =RANK.AVG(C3:C8,C3:C8) とします。
   
スポンサードリンク
Home » 
エクセル関数一覧表 » 
順位の関数(RANK関数,RANK.EQ関数,RANK.AVG関数)の使い方
PageViewCounter

Since2006/2/27