得点や点数データに対して、「点数がこの範囲ならCランク」「この点数以上はSランク」といった評価・ランク付けを行いたい場面は多くあります。
VBAのMATCH
関数を使えば、指定した値がどの区間に当てはまるかを検索し、それに応じたランクや評価ラベルを自動で設定できます。
本記事では、VBAで点数に応じたランクを自動で判定し、必要に応じて色も付ける実用的な方法をご紹介いたします。
目次
想定される利用シーン
- テストやアンケートの得点に応じた評価ランクを自動的に表示したい。
- 得点が特定の区間にあるかを調べて、判定結果を出力したい。
- 指定ランクに該当するデータだけ色分けしたい。
VBAコードの例
以下のコードでは、セル範囲 C3:C8
に入力された得点をもとに、右隣の列にランク(”C”~”S”)を出力します。また、「Bランク」に該当するデータは黄色で強調表示されます。
Sub AssignRankBasedOnScore()
Dim scoreCell As Range
Dim rankIndex As Long
Dim scoreThresholds, rankLabels
' 得点のしきい値と評価ラベル
scoreThresholds = Array(0, 30, 60, 80)
rankLabels = Array("C", "B", "A", "S")
' 得点のあるセル範囲を指定
For Each scoreCell In Range("C3:C8")
If IsNumeric(scoreCell.Value) Then
rankIndex = WorksheetFunction.Match(scoreCell.Value, scoreThresholds, 1)
scoreCell.Offset(0, 1).Value = rankLabels(rankIndex - 1)
' Bランクの場合は黄色で塗りつぶし
If rankIndex = 2 Then
scoreCell.Interior.ColorIndex = 6
End If
End If
Next scoreCell
End Sub
コードの解説
処理項目 | 内容 |
---|---|
scoreThresholds | ランク分けの基準点を昇順で定義した配列です。 |
rankLabels | それぞれの基準に対応する評価ラベルの配列です。 |
Match(..., , 1) | 「以上」の範囲にマッチするインデックスを返します(近似一致)。 |
Offset(0, 1) | 得点の右隣の列にランクを出力します。 |
ColorIndex = 6 | 該当行がBランクの場合にセルを黄色で塗りつぶします。 |
評価の基準例(今回の設定)
得点の範囲 | ランク |
---|---|
0〜29 | C |
30〜59 | B |
60〜79 | A |
80以上 | S |
応用可能な拡張例
- 合格・不合格のような2値判定への応用。
- 配列をワークシートのセルから読み込んで柔軟にカスタマイズ。
- 該当ランクごとに背景色や文字色を変えるデザイン連携。
まとめ
MATCH
関数をVBA内で使うことで、数値の区間判定やランク付けを効率的に実装できます。
評価軸とラベルを配列として保持しておくことで、処理の再利用性も高く、実務における採点・分類・区分処理などで非常に役立ちます。
得点評価やランキング分類を自動化したい方は、ぜひこの方法を活用してみてください。