更新日:、 作成日:

エクセル RANK 関数:順位を取得する

はじめに

エクセルの RANK 関数の使い方を紹介します。

RANK 関数は指定した数値の順位を取得します。ランキングを付けられます。

=RANK(10,A1:A3) のようにして、10 がセルの範囲で大きい順の順位を取得できます。

=RANK(10,A1:A3,1) のようにして、10 がセルの範囲で小さい順の順位を取得できます。

COUNTIFS 関数」を使用して、RANK 関数に条件を付けられます。

2 番目や 3 番目の順位の値を取得するには「SMALL 関数」または「LARGE 関数」を使用します。
順位比率を取得するには「PERCENTRANK 関数」を使用します。

RANK 関数の引数

RANK(数値, 範囲)
範囲の中にある数値の降順の順位を取得します。

RANK(数値, 範囲, 順序)
順序で降順の順位か昇順の順位かを選択できます。

引数「数値」順位を調べるセルや数値を指定します。スピル化
引数「範囲」セルの範囲を指定します。この範囲内での順位になります。配列不可
引数「順序」省略できます。
0 または省略:降順での順位
1:昇順での順位
スピル化

スピル化:セルの範囲や配列を指定すると結果が「スピル」します。

配列不可:配列を指定できません。セルの範囲のみ指定できます。

使い方

RANK 関数の使い方を紹介します。

降順の順位を取得する

10 がセルの範囲「B3」~「B7」の大きい順の順位を取得します。

=RANK(10,B3:B7)
=RANK(10,B3:B7,0)
12

昇順の順位を取得する

10 がセルの範囲「B3」~「B7」の小さい順の順位を取得します。

=RANK(10,B3:B7,1)
13

セルの値の順位を取得する

値の中から対象となる値の大きい順の順位を取得します。

=RANK(C3,$B$4:$B$8)
14

高度な使い方

RANK 関数と他の関数を組み合わせた使い方などを紹介します。

条件を指定する (スピル)

RANK 関数の引数「範囲」に配列を指定できないため、スピルで条件を付けることはできません。

代わりに「COUNTIFS 関数」を「スピル」して条件を付けられます。

降順:
=COUNTIFS($C$5:$C$9,">"&C3,$B$5:$B$9,B3)+1
昇順:
=COUNTIFS($C$5:$C$9,"<"&C4,$B$5:$B$9,B4)+1
17

COUNTIFS 関数」を次のように使用します。

=COUNTIFS(RANK範囲,順序,条件範囲1,条件1,条件範囲2,条件2 …)+1

COUNTIFS 関数」の最初の引数「範囲」に RANK 関数の「範囲」を指定します。最初の引数「条件」に RANK 関数の引数「数値」を指定します。降順にするなら ">" を、昇順にするなら "<" で比較します。

COUNTIFS 関数」の 2 番目以降の引数「範囲」と引数「条件」に RANK 関数に付けたい条件を入力します。

条件に「OR 関数」はスピルされないため使用できません。

スピルで AND や OR 条件にするには「スピル、動的配列数式の使い方」をご覧ください。
スピルは 365 または 2021 から使用できます。

数式を Ctrl + Shift + Enter で確定すると「配列数式」になり、すべてのバージョンで使用できます。

条件を指定する (ラムダ)

ラムダを使用して条件を付けるには「MAP 関数」を使用します。複雑なので詳細は関数のページをご覧ください。

降順:
=SUM(
LET(bt,B4,ct,C4,
MAP($B$3:$B$8,$C$3:$C$8,
LAMBDA(b,c,
IF(AND(c>ct,b=bt),1,FALSE)))),
1)
昇順:
=SUM(
LET(bt,B4,ct,C4,
MAP($B$4:$B$8,$C$4:$C$8,
LAMBDA(b,c,
IF(AND(c<ct,b=bt),1,FALSE)))),
1)

IF 関数」に条件を入力して一致するときは 1 を返しています。それを「SUM 関数」で合計して順位を求めます。

bt,B4,ct,C4 の部分に RANK 関数の引数「数値」や条件を比較する値を入力します。

c>ct の部分で降順にするなら > を、昇順にするなら < で比較します。

b=bt の部分に条件を入力します。

ラムダは 365 で使用できます。

解説

引数「数値」や「範囲」が日付なら、日付の実際の値は数値なのでその値として扱います。

引数「数値」が文字列のときはエラー #VALUE! になります。

引数「数値」が引数「範囲」の中にないときはエラー #N/A になります。

引数「範囲」に文字列や TRUE や FALSE、空のセルが含まれるときは、そのセルを無視します。

引数「順序」の 0 降順とは、3, 2, 1 のように大きい順の順位です。

引数「順序」の 1 昇順とは、1, 2, 3 のように小さい順の順位です。

同率順位

同じ数値が複数あるときは同率順位になり、以降の順位がその数だけずれます。

15

RANK.EQ と RANK.AVG の違い

RANK.EQ 関数と RANK.AVG 関数の違いは同率順位の扱いにあります。

  • RANK 関数、RANK.EQ 関数:まったく同じ結果を返します。同率順位のときは上位の順位を返します。RANK 関数は互換性のために残されている関数なので、将来のことを考えるなら RANK.EQ 関数を使用します。
  • RANK.AVG 関数:同率順位のときに平均順位を返します。(2 + 3) / 2 = 2.5(4 + 5 + 6) / 3 = 5 の順位になります。
16