ExcelのRANK.AVG関数|同順位に平均順位を返す使い方と実例

スポンサーリンク

Excelで順位を出したいのに、同じ点数の人がいると「何位にすればいいんだろう?」と迷うことはありませんか。RANK.EQ関数だと同順位の全員に最上位の順位が付きますが、評価の公平さや統計的な妥当性を考えると平均順位のほうが適切な場面もありますよね。

そんなときに使いたいのがRANK.AVG関数です。この記事では、ExcelのRANK.AVG関数の書き方から実践的な使い方、業務シーン別の活用例、エラー対処法まで初心者向けにわかりやすく解説します。

ExcelのRANK.AVG関数とは?

RANK.AVG関数は、指定した数値がデータの中で何番目に位置するかを返す関数です。読み方は「ランク・アベレージ」で、AVGは「Average(平均)」の略です。

この関数の最大の特徴は、同じ値が複数あるとき、それぞれに平均順位を返すことです。たとえば2位と3位に同じ値が並んでいれば、どちらにも「2.5」と返してくれます。3位・4位・5位に同じ値が並べば、どれにも「4」(=(3+4+5)/3)が返ります。

RANK.AVG関数はExcel 2010で導入されました。それ以前から使われていたRANK関数の後継として、RANK.EQ関数とともに追加された関数です。Microsoft 365、Excel 2021/2019/2016/2013/2010 のすべてで使えます。

RANK.AVGが「公平な順位」と呼ばれる理由

統計学の世界では、同点を扱うときにミッドランク方式(midrank、平均順位)が標準的に採用されます。これは、同点者全員に同じ平均順位を与えることで「順位の合計が変わらない」性質を持つためです。

たとえば6人の順位の合計は必ず1+2+3+4+5+6=21になりますが、RANK.EQ(同点を最上位扱い)だと「1, 2, 2, 4, 5, 6」のように合計が20になってしまい、統計的な処理(順位相関係数など)で誤差が出ます。RANK.AVGなら「1, 2.5, 2.5, 4, 5, 6」となり合計は21のまま保たれます。

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

基本構文

=RANK.AVG(数値, 参照, [順序])

角カッコ内の引数は省略できます。

引数の説明

引数必須/任意説明
数値必須順位を調べたい数値、またはセル参照
参照必須順位を比較するデータ範囲(数値以外のセルは無視されます)
順序任意0または省略で降順(大きい順)、0以外の数値で昇順(小さい順)

「順序」を省略すると降順になります。テストの点数や売上のように「大きいほど上位」にしたいときはそのまま省略すればOKです。逆にタイムや費用のように「小さいほど上位」にしたい場合は「1」を指定してください。

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

実際のデータを使って、RANK.AVG関数の動きを見てみましょう。

次のようなテストの点数データがあるとします。

セル名前点数
A2:B2佐藤85
A3:B3田中92
A4:B4鈴木78
A5:B5高橋85
A6:B6伊藤95
A7:B7渡辺72

佐藤さんの順位を出すには、C2セルに次のように入力します。

=RANK.AVG(B2,$B$2:$B$7)

結果は「3.5」です。降順で考えると、95が1位、92が2位で、85は3位と4位にあたります。同じ85が2人いるので、(3+4)/2=3.5 という平均順位が返るわけですね。

ほかの人の順位もまとめると、次のとおりです。

名前点数RANK.AVG(降順)
伊藤951
田中922
佐藤853.5
高橋853.5
鈴木785
渡辺726

参照範囲を絶対参照($B$2:$B$7)にしておくと、数式を下のセルにコピーしても範囲がズレません。順位を一括で出すときの定番テクニックなので、覚えておくと便利ですよ。

昇順で順位を出す場合

タイムや費用のように「小さい値が上位」になるデータでは、第3引数に1を指定します。

=RANK.AVG(B2,$B$2:$B$7,1)

先ほどのデータで昇順にすると、72が1位、78が2位、85が3.5位…というように結果が逆転します。マラソンのタイム順位やコスト効率の評価などで使うパターンですね。

実務シーン別の活用例

ここからは、実際の業務でRANK.AVG関数がどう役立つかを具体的なシーン別に紹介します。

シーン1: 人事評価制度での公平な順位付け

社員のパフォーマンス評価で、同じ評価点の社員に同じ順位を与えたいケースは多いはずです。たとえば全社員50人の評価点を集計し、上位10%(5位以内)にA評価をつけるような運用を考えてみましょう。

RANK.EQ関数だと、評価点が同じ社員が複数いると「全員1位」になってしまい、上位5名の選出にズレが生じます。RANK.AVGなら「1.5位」「2.5位」のように小数で返るため、ROUNDDOWN関数と組み合わせて運用ルールを統一できます。

=ROUNDDOWN(RANK.AVG(D2,$D$2:$D$51),0)

これで「3.5位」が「3位」になり、同点者には同じ整数順位が割り当てられます。評価制度の透明性を高めたい人事担当者にとって、覚えておきたいテクニックです。

シーン2: 売上ランキングの中央値的な扱い

営業部門で店舗別売上のランキングを作るとき、同額の店舗が出ることは珍しくありません。月次レポートで「平均的にどのあたりに位置するか」を見たいときは、RANK.AVGの平均順位が直感的に理解しやすい指標になります。

たとえば100店舗中、同額売上の店舗が3つあって順位が10位・11位・12位に該当する場合、RANK.AVGは3店舗すべてに「11」を返します。これは「中央の順位」を表しているため、店長へのフィードバックでも「全体の中盤」という説明が明快になります。

シーン3: 成績管理での偏差値計算の前段処理

学習塾や教育機関では、テスト成績の偏差値や百分位を求める前段でRANK.AVG関数を使うことがあります。同点者を平均順位として扱うことで、後続の統計処理(PERCENTRANK関数やNORM.S.DIST関数など)と一貫性が取れるためです。

=RANK.AVG(B2,$B$2:$B$1001)/COUNT($B$2:$B$1001)

この数式は「上位パーセント値」を返します。1000人中3.5位なら、約0.35%(=0.0035)と返ります。受験生のレベル感を伝えるときに使える指標ですね。

シーン4: スポーツ採点や審査の集計

体操競技やフィギュアスケートのように、複数審査員の点数を集計して順位を決めるシーンでも、同点処理は重要なテーマです。RANK.AVG関数なら「同点なら平均順位」というルールを数式で自動化できるため、集計担当者の判断が入らず公平性を担保できます。

RANK.AVG関数の応用例

応用1: RANK.AVGの結果を整数に丸める

RANK.AVG関数は同順位のとき小数を返しますが、「3.5位」のような表記を避けたい場合もありますよね。そんなときはROUNDUP関数(切り上げ)やINT関数(切り捨て)と組み合わせましょう。

=ROUNDUP(RANK.AVG(B2,$B$2:$B$7),0)

この数式では、3.5が4に切り上げられます。「上位扱いしたい」場合は ROUNDDOWN(切り捨て)で3に、「下位扱いしたい」場合は ROUNDUP(切り上げ)で4にと、評価基準に応じて使い分けてみてください。

応用2: 上位N%に入るかを判定する

RANK.AVG関数とCOUNT関数を組み合わせると、データ全体の中で上位何%に位置するかを計算できます。

=RANK.AVG(B2,$B$2:$B$7)/COUNT($B$2:$B$7)*100

たとえば6人中3.5位なら、3.5/6*100で約58.3%です。「上位30%以内」のようなフィルタリングに活用できますよ。

順位の百分率をもっと手軽に求めたい方は、PERCENTRANK関数もあわせてチェックしてみてください。

応用3: 条件付き書式と組み合わせて上位を強調

「上位3位以内に色をつけたい」というケースでは、条件付き書式の数式に RANK.AVG を組み込みます。

=RANK.AVG(B2,$B$2:$B$7)<=3

これを条件付き書式の数式ルールに設定すれば、3位以内のセルが自動でハイライトされます。同点で3.5位の人は対象外になる点に注意してください。「同点者も含めたい」場合は RANK.EQ を使うか、<=3.5 のように調整しましょう。

応用4: IF関数で「同順位かどうか」を判定

同点者がいるかどうかを判定したい場合、RANK.AVGとRANK.EQの差を見れば一発でわかります。

=IF(RANK.AVG(B2,$B$2:$B$7)<>RANK.EQ(B2,$B$2:$B$7),"同点あり","")

RANK.AVG が小数のとき=RANK.EQ と値が異なるときは同点者がいる、という仕組みです。データの確認や監査用途で便利な使い方ですね。

よくあるエラーと対処法

RANK.AVG関数で遭遇しやすいエラーは主に2つです。

#N/A エラー

「数値」に指定した値が「参照」の範囲内に存在しないときに発生します。

よくある原因と対策:

  • 参照範囲がズレている → 絶対参照($マーク)を使っているか確認しましょう
  • 数式を入れたセル自体を参照範囲に含めてしまっている → データ範囲だけを指定してください
  • 数値のセルが空白 → 空白セルを数値引数に指定すると参照内に一致する値がないためエラーになります
  • 参照範囲に文字列が混在している → RANK.AVGは数値以外を無視しますが、「数値」引数自体が文字列だと #N/A になる場合があります

#VALUE! エラー

「数値」引数に文字列を渡すと発生します。数値のように見える文字列(たとえばCSVから取り込んだデータ)が原因になることがあるので、VALUE関数(文字列を数値に変換する関数)で変換してから渡すと解消できますよ。

=RANK.AVG(VALUE(B2),$B$2:$B$7)

#NAME? エラー

関数名のスペルミスで発生します。「RANK.AVG」のドット(.)を全角で入力してしまうケースが意外と多いので、半角ピリオドになっているか確認してみてください。

結果が想定と違うときのチェックポイント

エラーは出ないけれど結果がおかしい、というときは次の3点を確認しましょう。

  1. 降順/昇順の指定ミス: 第3引数を意図せず1にしていないか
  2. 参照範囲の不足: データ全体ではなく一部しか指定していないケース
  3. 数値が文字列として入力されている: ISNUMBER関数で確認できます

RANK.EQやRANK関数との違い・使い分け

Excelには順位を求める関数が3つあります。それぞれの違いを表で確認しましょう。

関数名同順位の扱い導入バージョン備考
RANK.AVG平均順位を返す(2.5位)Excel 2010〜統計的に公平(この記事)
RANK.EQ最上位の順位を返す(2位)Excel 2010〜一般的な用途向け
RANKRANK.EQと同じ動作旧バージョン互換性のために残存

同点が3人いる場合の挙動の違い

たとえば1位が確定していて、2位・3位・4位に同点が3人いる場合、各関数の結果は次のようになります。

順位RANKRANK.EQRANK.AVG
1位(90点)111
同点(80点)223
同点(80点)223
同点(80点)223
5位(70点)555

RANK.AVGは(2+3+4)/3=3を返し、RANK.EQ/RANKは最上位の2を返します。次の順位は両者とも「5」になる点(4位は飛ばされる)も覚えておきたいポイントです。

使い分けの目安

  • RANK.AVG: 審査やスポーツ採点、人事評価、統計分析など同点を公平・正確に扱いたいとき
  • RANK.EQ: 売上ランキングや成績表の表示など、「同率2位」と表示したい一般的な用途
  • RANK: 新規で使う理由はほぼありません。既存シートの互換性維持のみ

順位ではなく「N番目に大きい/小さい値そのもの」を取り出したい場合は、LARGE関数SMALL関数が便利です。あわせてチェックしてみてください。

RANK.AVG関数を使うときの注意点

注意1: 表示形式で見た目が変わる

RANK.AVGの結果が「3.5」のとき、セルの表示形式を「整数」に設定すると「4」と表示されてしまいます。実際の値は3.5のままなので、後続の計算で予期しない結果になることがあります。

数式バーで実際の値を確認するか、表示形式を「数値・小数点以下1桁」にしておくと安全です。

注意2: 大規模データではパフォーマンスに注意

RANK.AVG関数は内部で参照範囲をスキャンするため、データ件数が増えるほど計算負荷が高くなります。10万行を超えるデータで一斉に順位計算をすると、Excelが重くなることがあります。

そのような場合は、データ範囲を必要最小限に絞るか、Power Query や ピボットテーブルでの集計を検討しましょう。

注意3: 文字列・空白セルの扱い

参照範囲に文字列や空白セルがあっても、RANK.AVGはそれらを無視して計算します。意図的に「参加していない人」を空白で表現する運用は問題ありません。ただし、数値が文字列として入力されているとカウントされないので、データクリーニングは事前に済ませておきましょう。

まとめ

ExcelのRANK.AVG関数のポイントをおさらいしましょう。

  • 構文: =RANK.AVG(数値, 参照, [順序])
  • 特徴: 同じ値が複数あるとき、平均順位を返す
  • 降順/昇順: 第3引数を省略で降順、0以外で昇順
  • 使いどころ: 審査・採点・人事評価・統計分析など公平な順位付けが必要な場面
  • RANK.EQとの違い: 同点を平均扱い(RANK.AVG)か、最上位扱い(RANK.EQ)か

日常の業務では「同率2位」で十分なケースも多いですが、人事評価制度や統計的な分析、公正さが求められるシーンでは、RANK.AVG関数の出番です。同点の扱いひとつで集計結果の信頼性が変わるので、用途に応じて RANK.EQ と使い分けてみてくださいね。

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