アクセス上位ページ
 
最近の更新内容
[NEXT] ⇒ Excel VBA

Excel VBA ≫ 6.ワークシート関数 - 特徴と使用例(1)-g.ワークシート関数による順位の取得

ワークシート関数による順位の取得

このページでは、数値からその順位を取得する Rank 関数と、 順位から数値を取得する LargeSmall 関数について説明します。



Rank 関数

Rank 関数は、指定された数値がある数値の中で何番目かという順位を返します。 第3引数を省略するかゼロを指定すると数値の高い順、ゼロ以外の数値を指定すると数値の低い順に並べたときの順位を返します。 Rank 関数は、重複した数値は同じ順位とみなし、その次の順位を空き番としてしまうことに注意してください。

  • 【構文】
    WorksheetFunction.Rank( 数値 , 範囲 [, 順序] )

      【戻り値】 倍精度浮動小数点型 (Double)


  • 引数名 省略 説明
    数値 × 順位を調べる数値を指定します。
    範囲 × 数値を含むセル範囲(レンジオブジェクト)または配列を指定します。
    順序 数値の順位を決めるため、範囲内の数値を並べ替える方法を指定します。
    0 : 数値の高い順
    0以外 : 数値の低い順


  • 使用例
  • 以下のマクロはワークシート上の成績表において、国語点数の順位を点数の高い順と低い順それぞれ表示する例です。 同じ点数の場合は同じ順位となり、その次の順位が空き番となっていることがわかると思います。
    Sub sample_wf017_01()
        Dim rng As Range
        Dim rng_jp As Range
        Dim rk As Integer
    
        '国語成績の範囲設定
        Set rng_jp = Range("B4:B13")
    
        '点数の順位(点数の高い順)を表示
        Debug.Print "=== 点数の高い順の順位 ==="
        For Each rng In rng_jp
            rk = WorksheetFunction.Rank(rng.Value, rng_jp)
            Debug.Print "点数:" & rng.Value, "順位:" & rk
        Next
    
        '点数の順位(点数の低い順)を表示
        Debug.Print "=== 点数の低い順の順位 ==="
        For Each rng In rng_jp
            rk = WorksheetFunction.Rank(rng.Value, rng_jp, 1)
            Debug.Print "点数:" & rng.Value, "順位:" & rk
        Next
    End Sub
    
    ⇒ サンプルマクロ集 へ


    <データ> テスト成績表 <実行結果(イミディエイトウィンドウ)>
    === 点数の高い順の順位 ===
    点数:65      順位:4
    点数:25      順位:7
    点数:80      順位:2
    点数:65      順位:4
    点数:10      順位:9
    点数:80      順位:2
    点数:85      順位:1
    点数:10      順位:9
    点数:15      順位:8
    点数:60      順位:6
    === 点数の低い順の順位 ===
    点数:65      順位:6
    点数:25      順位:4
    点数:80      順位:8
    点数:65      順位:6
    点数:10      順位:1
    点数:80      順位:8
    点数:85      順位:10
    点数:10      順位:1
    点数:15      順位:3
    点数:60      順位:5
    


Large、Small 関数

Large 関数はある数値の中で、n番目に大きな数値を返します。
Small 関数はある数値の中で、n番目に小さな数値を返します。

  • 【構文】
    WorksheetFunction.Large( 範囲 , 順位 )
    WorksheetFunction.Small( 範囲 , 順位 )

      【戻り値】 倍精度浮動小数点型 (Double)


  • 引数名 省略 説明
    範囲 × 数値を含むセル範囲(レンジオブジェクト)または配列を指定します。
    順位 × 抽出したい数値の順位を指定します。 Large関数の場合は数値を大きい順に並べたときの順位を、 Small関数の場合は数値を小さい順に並べたときの順位を指定します。


  • 使用例
  • 以下のマクロはワークシート上の成績表において、国語点数を点数の高い順と低い順でそれぞれ表示する例です。
    Sub sample_wf017_02()
        Dim rng_jp As Range
        Dim rk As Integer
        Dim pt As Integer
    
        '国語成績の範囲設定
        Set rng_jp = Range("B4:B13")
    
        '点数の高い順に表示
        Debug.Print "=== 点数の高い順 ==="
        For rk = 1 To rng_jp.Rows.count
            pt = WorksheetFunction.Large(rng_jp, rk)
            Debug.Print "順位:" & rk, "点数:" & pt
        Next
    
        '点数の低い順に表示
        Debug.Print "=== 点数の低い順 ==="
        For rk = 1 To rng_jp.Rows.count
            pt = WorksheetFunction.Small(rng_jp, rk)
            Debug.Print "順位:" & rk, "点数:" & pt
        Next
    End Sub
    
    ⇒ サンプルマクロ集 へ


    <データ> テスト成績表 <実行結果(イミディエイトウィンドウ)>
    === 点数の高い順 ===
    順位:1       点数:85
    順位:2       点数:80
    順位:3       点数:80
    順位:4       点数:65
    順位:5       点数:65
    順位:6       点数:60
    順位:7       点数:25
    順位:8       点数:15
    順位:9       点数:10
    順位:10      点数:10
    === 点数の低い順 ===
    順位:1       点数:10
    順位:2       点数:10
    順位:3       点数:15
    順位:4       点数:25
    順位:5       点数:60
    順位:6       点数:65
    順位:7       点数:65
    順位:8       点数:80
    順位:9       点数:80
    順位:10      点数:85
    

カテゴリ内ページ



Page
Top