Excel VBAでMATCH関数を使い得点に応じたランク付けを行う方法|範囲内検索と配列連携の実装

得点や点数データに対して、「点数がこの範囲なら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〜29C
30〜59B
60〜79A
80以上S

応用可能な拡張例

  • 合格・不合格のような2値判定への応用。
  • 配列をワークシートのセルから読み込んで柔軟にカスタマイズ。
  • 該当ランクごとに背景色や文字色を変えるデザイン連携。

まとめ

MATCH関数をVBA内で使うことで、数値の区間判定やランク付けを効率的に実装できます。
評価軸とラベルを配列として保持しておくことで、処理の再利用性も高く、実務における採点・分類・区分処理などで非常に役立ちます。

得点評価やランキング分類を自動化したい方は、ぜひこの方法を活用してみてください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次