スプレッドシートのRANK.EQ関数の使い方|同順位の処理をわかりやすく解説

スポンサーリンク

「RANK関数とRANK.EQ関数って何が違うの?」。そんな疑問を感じたことはありませんか?

スプレッドシートではRANKとRANK.EQは同じ動作をします。ただしRANK.EQが正式な後継関数です。

この記事ではRANK.EQ関数の基本の書き方から実務での活用例まで解説します。RANK・RANK.AVGとの違いも比較表で整理しました。

RANK.EQ関数とは?同順位に最上位を返す関数

RANK.EQ関数は、指定した値がデータの中で何番目かを返す関数です。読み方は「ランク イコール」です。EQはEqual(等しい)の略です。

同じ値が複数ある場合は、最上位の順位をそのまま返します。たとえば2位・3位・4位の3人が同じ点数なら、3人とも「2位」です。

RANK関数と動作は同じですが、RANK.EQはRANKの正式な後継関数です。新しく数式を書くならRANK.EQがおすすめです。

NOTE

スプレッドシートでは RANKRANK.EQ は完全に同じ動作をします。Excelとの互換性も問題ありません。

RANK.EQ関数の書き方(構文と引数)

基本構文

=RANK.EQ(値, 範囲, [順序])

引数の説明

引数必須/任意説明
必須順位を調べたいセル
範囲必須順位を比較するデータ範囲
順序任意0=降順(大きい順)、1=昇順(小さい順)。省略すると0(降順)

構文はRANK関数やRANK.AVG関数とまったく同じです。関数名を置き換えるだけで切り替えられます。

RANK.EQ関数の基本的な使い方

以下の売上データでRANK.EQ関数を使ってみましょう。

 A列(担当者)B列(売上)C列(順位)
2行目田中85=RANK.EQ(B2,$B$2:$B$8)
3行目鈴木92 
4行目佐藤78 
5行目山田95 
6行目高橋88 
7行目伊藤72 
8行目渡辺85 

C2セルに =RANK.EQ(B2,$B$2:$B$8) と入力します。

範囲を絶対参照($B$2:$B$8)にするのがポイントです。数式を下にコピーしても範囲がずれません。

結果は以下のようになります。

担当者売上順位
田中854
鈴木922
佐藤786
山田951
高橋883
伊藤727
渡辺854

田中と渡辺はどちらも売上85で同じです。RANK.EQ関数は両方に4位(最上位の順位)を返します。5位はスキップされ、次は6位です。

降順と昇順の切り替え

第3引数で順位の方向を変えられます。

=RANK.EQ(B2,$B$2:$B$8, 0)   → 降順(大きい値が1位)
=RANK.EQ(B2,$B$2:$B$8, 1)   → 昇順(小さい値が1位)
担当者売上降順(0)昇順(1)
田中8543
鈴木9226
山田9517
伊藤7271

売上ランキングなら降順(0)、コスト順位なら昇順(1)が自然です。用途に応じて使い分けてください。

RANK・RANK.EQ・RANK.AVGの違い

RANK系の3つの関数は構文が同じで、同順位の処理方法だけが異なります。比較表で整理しましょう。

3関数の基本比較

項目RANKRANK.EQRANK.AVG
読み方ランクランク イコールランク アベレージ
構文=RANK(値, 範囲, [順序])=RANK.EQ(値, 範囲, [順序])=RANK.AVG(値, 範囲, [順序])
同順位の処理最上位を返す最上位を返す平均を返す
位置づけ互換性関数RANKの後継RANKの後継

RANKとRANK.EQは動作が同じです。RANKは互換性のために残されている関数です。新しく書くならRANK.EQまたはRANK.AVGがおすすめです。

同順位の処理方法の違い(具体例)

データ「100, 80, 80, 80, 50」の順位を3関数で比較します。

データRANK / RANK.EQRANK.AVG
10011
8023
8023
8023
5055

RANK / RANK.EQは「80」に最上位の2位を返します。3位・4位がスキップされて次は5位です。

RANK.AVGは「80」に (2+3+4)/3 = 3位を返します。順位の合計が保たれるので、統計的に公平な順位付けです。

どの関数を使うべきか?

用途おすすめの関数
売上ランキング・成績表RANK.EQ(同順位は上位で統一)
統計分析・アンケート集計RANK.AVG関数
既存シートの互換性維持RANK関数(そのまま使ってOK)

TIP

迷ったらRANK.EQ関数を選んでおけば間違いありません。RANKの正式後継で、もっとも一般的な順位付け方法です。

実践的な使い方・応用例

同順位があっても連番で順位を付ける

RANK.EQ関数は同じ値に同じ順位を返すため、次の順位が飛びます。「4, 4, 6」ではなく「4, 5, 6」の連番にしたい場合は、COUNTIF関数と組み合わせましょう。

=RANK.EQ(B2,$B$2:$B$8)+COUNTIF($B$2:B2,B2)-1

この数式のしくみは以下のとおりです。

  • RANK.EQ(B2,$B$2:$B$8): 通常の順位を求める
  • COUNTIF($B$2:B2,B2): 現在行までに同じ値が何個あるかを数える
  • -1: 初回(1個目)は調整しない

2つ目の同じ値には+1されるため、連番になります。

テスト成績の順位表を作る

テストの点数に降順で順位を付ける例です。

生徒名点数順位
A78=RANK.EQ(B2,$B$2:$B$6) → 3
B92→ 1
C65→ 5
D85→ 2
E72→ 4

最高点が1位になる降順が自然な場面です。第3引数は省略(または0)で使います。

上位N位だけに印を付ける

IF関数と組み合わせると、上位3位までに「対象」と表示できます。

=IF(RANK.EQ(B2,$B$2:$B$8)<=3, "対象", "")

表彰対象やボーナス対象の抽出に使えるパターンです。

よくあるエラーと対処法

#N/Aエラー

「値」が「範囲」に含まれていない場合に発生します。

よくある原因と対策:

原因対策
値のセルが範囲外範囲を正しく指定し直す
値が文字列型の数字VALUE関数で数値に変換する
範囲にテキストが混在数値だけの範囲を指定する

特に注意したいのが「文字列型の数字」です。見た目は数字でも、文字列として入力されていることがあります。=VALUE(A1) で数値に変換してから渡しましょう。

TIP

セルを選択して左揃えになっている数字は文字列型の可能性があります。数値は右揃えが初期設定です。

まとめ

RANK.EQ関数は、データの中で何番目かを返す関数です。同順位がある場合は最上位の順位を返します。

この記事のポイント

  • 構文は =RANK.EQ(値, 範囲, [順序]) の3引数
  • 同順位がある場合、最上位の順位を返す(例: 2位が3人 → 全員2位)
  • RANK関数と動作は同じだが、RANK.EQが正式な後継関数
  • 第3引数: 0(省略可)=降順、1=昇順
  • 範囲は絶対参照($)で固定するのを忘れずに
  • 連番にしたいときはCOUNTIF関数と組み合わせる

次のステップ:関連する順位関数

RANK.EQ関数の使い方がわかったら、以下の関数もあわせて覚えてみてください。順位付けのバリエーションが広がりますよ。

タイトルとURLをコピーしました