『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番目です

コメント