Vba: 値のリストを分類する方法


VBA を使用して Excel で値のリストを並べ替えるには、次の基本構文を使用できます。

 SubRankValues ()
    Dim i As Integer

    For i = 2 To 11
    Range(" C " & i) = WorksheetFunction.Rank(Range(" B " & i), Range(" B2:B11 "), 0)
    Next i
End Sub

この特定の例では、セルB2:B11の値をランク付けし、そのランクをセルC2:C11に表示します。

最後の引数0は、値が昇順でランク付けされる必要があることを指定します (最大の値には 1 のランクが与えられ、2 番目に大きい値には 2 のランクが与えられます)。

値を降順に並べるには、単に01に置き換えます。

次の例は、この構文を実際に使用する方法を示しています。

例: VBA を使用して値を並べ替える方法

次のようなバスケットボール選手のリストとその得点があるとします。

ポイント列の各値のランクを計算するとします。

これを行うには、次のマクロを作成できます。

 SubRankValues ()
    Dim i As Integer

    For i = 2 To 11
    Range(" C " & i) = WorksheetFunction.Rank(Range(" B " & i), Range(" B2:B11 "), 0)
    Next i
End Sub

このマクロを実行すると、次の出力が表示されます。

ポイント列の各値の順位が C 列に表示されます。

例えば:

  • 41 ポイントのプレーヤー H が最も高いポイント値を持っているため、ランク1が与えられます。
  • 40 ポイントのプレーヤー C は 2 番目に高いポイント値を持っているため、ランク2を受け取ります。

等々。

ポイント列の値を降順にランク付けするには、 Rankメソッドの最後の引数を0から1に変更します。

 SubRankValues ()
    Dim i As Integer

    For i = 2 To 11
    Range(" C " & i) = WorksheetFunction.Rank(Range(" B " & i), Range(" B2:B11 "), 1)
    Next i
End Sub

このマクロを実行すると、次の出力が表示されます。

ポイント列の各値の順位が C 列に表示されます。

例えば:

  • 11 ポイントのプレーヤー I のポイント値が最も低いため、ランク1が与えられます。
  • 13 ポイントのプレーヤー E は 2 番目に低いポイント値を持っているため、ランク2を受け取ります。

等々。

: VBA Rankメソッドの完全なドキュメントはここにあります。

追加リソース

次のチュートリアルでは、VBA で他の一般的なタスクを実行する方法について説明します。

VBA: 特定のテキストを含むセルを数える方法
VBA: 範囲内の行数をカウントする方法
VBA: COUNTIF 関数と COUNTIFS 関数の書き方

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です