VBA100本ノック 8本目:点数の合否判定

こちらで公開されている、100本ノックに挑戦。
www.excel-ubara.com
素晴らしい教材を公開いただき、ありがとうございます。

上記リンク先から、問題文を転載。
f:id:Infoment:20220113231637p:plain

全ての科目が50点以上ということは、教科の別を問わないということ。
英語が〇点以上で、国語が△点以上で・・・のような具体的な閾値
無いので、単純に

  1. 最低点が50点以上で且つ、
  2. 合計点が350点以上の場合に合格

へ条件を置き換えることができる。

今回は、成績表の範囲を行単位でループ処理してみよう。

Sub VBA_100Knock_008()
    ' 成績表の範囲。
    Dim ResultRange As Range
    Set ResultRange = Range("A1:G12")
    
    Dim i As Long
        ' 2行目から最終行目までをループ処理。
        For i = 2 To ResultRange.Rows.Count
            ' 最低点が50点以上で且つ合計点が350点以上の場合、
            ' 合否判定列に「合格」をセット。それ以外の場合、
            ' 空白をセットする。
            If WorksheetFunction.Min(ResultRange.Rows(i)) >= 50 And _
               WorksheetFunction.Sum(ResultRange.Rows(i)) >= 350 Then
                ResultRange.Rows(i).Cells(7) = "合格"
            Else
                ResultRange.Rows(i).Cells(7) = vbNullString
            End If
        Next
End Sub

なお、合否条件は

  1. 最低点が50点未満または
  2. 合計点が350点未満の場合は不合格

とも読み替えることができる。どちらの条件でコーディングするかは、
時と場合と各自のお好みで。


解答を実行した結果がこちら。
f:id:Infoment:20220113234131g:plain

※冒頭リンク先の解答例および解説も、ぜひご一読ください。

参考まで。