VBA100本ノック 8本目:点数の合否判定
こちらで公開されている、100本ノックに挑戦。
www.excel-ubara.com
素晴らしい教材を公開いただき、ありがとうございます。
上記リンク先から、問題文を転載。
全ての科目が50点以上ということは、教科の別を問わないということ。
英語が〇点以上で、国語が△点以上で・・・のような具体的な閾値が
無いので、単純に
- 最低点が50点以上で且つ、
- 合計点が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
なお、合否条件は
- 最低点が50点未満または
- 合計点が350点未満の場合は不合格
とも読み替えることができる。どちらの条件でコーディングするかは、
時と場合と各自のお好みで。
解答を実行した結果がこちら。
※冒頭リンク先の解答例および解説も、ぜひご一読ください。
参考まで。