●確認テスト4

【問題文】

    【高難度】セルB4の値を基準にセルC4に次の条件で評価を入力しなさい。

【解答例1】

Sub TestIf4_1()
    '0以下かつ30未満なら、評価は『不可』
    If 0 <= Cells(4, 2) And Cells(4, 2) < 30 Then
       Cells(4, 3) = "不可"
    '30以下かつ55未満なら、評価は『可』
    ElseIf 30 <= Cells(4, 2) And Cells(4, 2) < 55 Then
       Cells(4, 3) = "可"
    '55以下かつ75未満なら、評価は『良』
    ElseIf 55 <= Cells(4, 2) And Cells(4, 2) < 75 Then
       Cells(4, 3) = "良"
    '75以下かつ100以下なら、評価は『優』
    ElseIf 75 <= Cells(4, 2) And Cells(4, 2) <= 100 Then
       Cells(4, 3) = "優"
    'それ以外(-1や101)なら、評価は『入力ミス』
    Else
       Cells(4, 3) = "入力ミス"
    End If
End Sub

【解答例2】

Sub TestIf4_2()
    '0~100なら各評価を入力
    If 0 <= Cells(4, 2) And Cells(4, 2) <= 100 Then
        '0~100で、30未満なら評価は『不可』
        If Cells(4, 2) < 30 Then
           Cells(4, 3) = "不可"
        '0~100で、30未満でなく、55未満なら評価は『可』
        ElseIf Cells(4, 2) < 55 Then
           Cells(4, 3) = "可"
        '0~100で、55未満でなく、75未満なら評価は『良』
        ElseIf Cells(4, 2) < 75 Then
           Cells(4, 3) = "良"
        'それ以外(0~100で、75未満でない)なら評価は『優』
        Else
           Cells(4, 3) = "優"
        End If
    '0~100でないなら『入力ミス』
    Else
       Cells(4, 3) = "入力ミス"
    End If
End Sub

【解説】

今回は条件が多めです。まずは、条件をまとめてみましょう。

評価(入力文)数値
不可0以上 ~ 30未満
30以上 ~ 55未満
55以上 ~ 75未満
75以上 ~ 100以下
入力ミスその他

「優」は100以下なので注意しましょう。
今回は解答例を2つ用意しました。まずは解答例1から確認してみます。

解答例1の解説です。
解答例1では、順当に条件毎にAndを使用して各評価を決め、どれも該当しない場合は入力ミスとしています。

解答例2の解説です。
すべての条件が0以上かつ100以下の時に不可、可、良、優のいずれかで、それ以外がエラーです。その分岐を行った後、数値により評価を分岐させています。

If文+Andは非常に有用です。確実に使えるようにしましょう。