【問題文】
【解答例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は非常に有用です。確実に使えるようにしましょう。