『Excel VBA 表計算とプログラミング学習サイト』では、アフィリエイトプログラムを利用して商品を紹介しています。

【Excel VBA】RANK.EQで順位を取得します

【Excel】RANK.EQ 関数

次の表は架空の陸上競技会における男子 400m ハードル準決勝の記録です。Excel の RANK.EQ関数 を使って、各選手に順位を付けてみましょう。

氏名 記録(秒)
瀬津丸 浩光 52.01
岐城 英泰 50.5
栢森 宏晃 51.1
屋根 幸介 48.96
天良 喜平 52.21
鮎貝 寛章 51.32
小田口 一 52.78
徳能 拡章 50.25
鯨岡 吉実 48.38
能野 嘉彰 51.58
志磨 久仁保 51.37
間遠 啓行 51.54
角屋 元久 49.97
県 喜進 52.81
細字 克浩 50.44
名船 克士 50.57

コピーしたらセル B2 に貼りつけてください。そして順位を記入する欄を作っておきましょう。
 
400mハードル順位シート
 
使用する関数は RANK.EQ です。RANK.EQ は

=RANK.EQ(数値,参照範囲,順序)

と入力すると、その [数値] が [参照範囲] の中で何番目にあるかを教えてくれるとっても便利な関数です。2007 以前のバージョンであれば RANK関数 を使ってくださいな。それでは順位をつけてみましょう。

=RANK.EQ(C3,$C$3:$C$18,1)

と入力します。2つめの引数は C3 から C18 までマウスで選択して [F4] キーを押すと、絶対参照に変換してくれますよ。あとはセル D18 までオートフィルしてくださいな。
 
ワークシートにRANK.EQ関数記入
 
1 位から 16 位まで順位が割り振られましたね。あ、そうそう、こばとは陸上競技とか見るの、大好きです。オリンピックと世界陸上は欠かさず観るし、このまえは日本陸上選手権も観ましたよ。中でも好きな競技が 400m ハードルなのです。選手たちが走りながらぴょんぴょん跳ねてるのを見ると楽しいですね。こばともハードルやってみたくなりました。え? 小さいから無理だろって? 大きなお世話ですよ!

【VBA】WorksheetFunction.Rank_Eq

VBA で、ワークシート関数 RANK.EQ を “WorksheetFunction.Rank_Eq” の名前で呼び出せます。記事冒頭の表が貼り付けられた状況で、以下のコードを実行すると、「瀬津丸 浩光」さんの記録「52.01」(秒)が全体の何番目かを表示します。

'[VBA] WorksheetFunction.Rank_Eqのサンプルコード

Sub TestWsRankEq()

    Dim r As Double
    
    'C3:C18におけるC3の順位
    r = WorksheetFunction.Rank_Eq(Range("C3"), Range("C3:C18"), 1)

    Debug.Print "順位は" & r & "番目です"

End Sub

'TestWsRankEq()の実行結果:順位は13番目です

【VBA】WorksheetFunction.Rank

ワークシート関数 Rank を VBA のプロシージャの中で呼び出す場合は、WorksheetFunction.Rank と記述します。

'[VBA] WorksheetFunction.Rankのサンプルコード

Sub TestWsRank()

    Dim r As Double

    Range("A1").Value = 40
    Range("A2").Value = 10
    Range("A3").Value = 50
    Range("A4").Value = 30
    Range("A5").Value = 70

    'A1:A5の中のA3の順位
    r = WorksheetFunction.Rank(Range("A3"), Range("A1:A5"), 1)

    Debug.Print "順位は" & r & "番目です"

End Sub

'TestWsRank()の実行結果:順位は4番目です

コメント

  1. あとりえこばと より:

    【AI解説】ExcelのRANK関数を使って、順位に基づく分析・可視化ができます

     ExcelのRANK関数は、指定された数値の範囲内での順位を計算するのに使用されます。高度な応用例の1つとして、順位付けだけでなく、順位に基づいた異なる種類の分析や可視化を行う方法があります。以下にいくつかの例を示します。
     
    パーセンタイルの計算: RANK関数を使用してデータセット内の値のパーセンタイルを計算できます。例えば、ある商品の売上データがある場合、特定の売上値が全体の何パーセントに位置するかを計算することができます。
     
    順位ごとの可視化: データセット内の値を順位ごとに並べ替え、グラフなどを使用して順位ごとの分布を可視化することができます。これにより、データの偏りや傾向を視覚的に把握することができます。
     
    タイの処理: RANK関数では、同じ値に対して同じ順位が割り当てられます。複数の同じ値がある場合、それらの値に対して同じ順位を割り当てるのではなく、タイの処理方法を選択できます。例えば、平均順位を使用することで、タイの影響を考慮した順位付けが可能です。
     
    動的なランキングの更新: データが変更される可能性がある場合、RANK関数を使用して動的なランキングを更新できます。新しいデータが追加されたり既存のデータが変更されたりした際に、順位を自動的に更新することができます。
     
    集計とフィルタリング: RANK関数を使用して、特定の順位範囲内のデータを抽出するための条件付き集計やフィルタリングを行うことができます。例えば、上位10%の売上を持つ商品を抽出するために、RANK関数を使用して条件を設定することができます。
     
    競技結果の評価: スポーツや競技の試合結果を管理する場合、選手やチームの順位を計算し、ランキングを作成するのにRANK関数を活用できます。同じポイントを持つ選手が複数いる場合、適切なタイの処理を選択することが重要です。
     
    これらはRANK関数の高度な応用例の一部です。RANK関数を使用してデータの順位付けや分析を行う際には、データの性質や目的に合わせて適切なアプローチを選択することが重要です。