更新日:、 作成日:
エクセル RANK 関数:順位を取得する
はじめに
エクセルの RANK 関数の使い方を紹介します。
RANK 関数は指定した数値の順位を取得します。ランキングを付けられます。
=RANK(10,A1:A3) のようにして、10 がセルの範囲で大きい順の順位を取得できます。
=RANK(10,A1:A3,1) のようにして、10 がセルの範囲で小さい順の順位を取得できます。
「COUNTIFS 関数」を使用して、RANK 関数に条件を付けられます。
RANK 関数の引数
RANK(数値, 範囲)
範囲の中にある数値の降順の順位を取得します。
RANK(数値, 範囲, 順序)
順序で降順の順位か昇順の順位かを選択できます。
引数「数値」 | 順位を調べるセルや数値を指定します。 | スピル化 |
引数「範囲」 | セルの範囲を指定します。この範囲内での順位になります。 | 配列不可 |
引数「順序」 | 省略できます。 0 または省略:降順での順位 1:昇順での順位 | スピル化 |
スピル化:セルの範囲や配列を指定すると結果が「スピル」します。
配列不可:配列を指定できません。セルの範囲のみ指定できます。
使い方
RANK 関数の使い方を紹介します。
降順の順位を取得する
10 がセルの範囲「B3」~「B7」の大きい順の順位を取得します。
=RANK(10,B3:B7,0)
昇順の順位を取得する
10 がセルの範囲「B3」~「B7」の小さい順の順位を取得します。
セルの値の順位を取得する
値の中から対象となる値の大きい順の順位を取得します。
スポンサーリンク
高度な使い方
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
「COUNTIFS 関数」を次のように使用します。
「COUNTIFS 関数」の最初の引数「範囲」に RANK 関数の「範囲」を指定します。最初の引数「条件」に RANK 関数の引数「数値」を指定します。降順にするなら ">" を、昇順にするなら "<" で比較します。
「COUNTIFS 関数」の 2 番目以降の引数「範囲」と引数「条件」に RANK 関数に付けたい条件を入力します。
条件に「OR 関数」はスピルされないため使用できません。
数式を 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 の部分に条件を入力します。
解説
引数「数値」や「範囲」が日付なら、日付の実際の値は数値なのでその値として扱います。
引数「数値」が文字列のときはエラー #VALUE! になります。
引数「数値」が引数「範囲」の中にないときはエラー #N/A になります。
引数「範囲」に文字列や TRUE や FALSE、空のセルが含まれるときは、そのセルを無視します。
引数「順序」の 0 降順とは、3, 2, 1 のように大きい順の順位です。
引数「順序」の 1 昇順とは、1, 2, 3 のように小さい順の順位です。
同率順位
同じ数値が複数あるときは同率順位になり、以降の順位がその数だけずれます。
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 の順位になります。
スポンサーリンク