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 のランクが与えられます)。
値を降順に並べるには、単に0を1に置き換えます。
次の例は、この構文を実際に使用する方法を示しています。
例: 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 関数の書き方