Excel VBA 入門
エクセルVBA入門:For Nextの中でIf条件判定を行う
条件分岐(If)と繰り返し(For Next)を組み合わせて、成績の判定を一気に行う書き方です。
やりたいこと
B列に入っている1行目から4行目までの点数を見て、C列に「優・良・可・不可」を入れます。80点以上は優、60点以上は良、40点以上は可、それ未満は不可です。
1行ずつ手で入れるのではなく、If文で判定する処理を、For Nextで4回繰り返します。
手順1:If文で判定を書く
まず、1行分の判定を If 文で書きます。B列(2列目)の値を見て、C列(3列目)に結果を入れます。
If Cells(i, 2).Value >= 80 Then
Cells(i, 3).Value = "優"
ElseIf Cells(i, 2).Value >= 60 Then
Cells(i, 3).Value = "良"
ElseIf Cells(i, 2).Value >= 40 Then
Cells(i, 3).Value = "可"
Else
Cells(i, 3).Value = "不可"
End If
Cells(i, 2) は「i行目の2列目」という意味です。i の値が変わるたびに、見る行が変わります。
手順2:For Next で囲む
1行目から4行目までを順に判定するので、For i = 1 To 4 から Next i までの間に、If文全体を入れます。
Sub ForIf()
Dim i As Long
For i = 1 To 4
If Cells(i, 2).Value >= 80 Then
Cells(i, 3).Value = "優"
ElseIf Cells(i, 2).Value >= 60 Then
Cells(i, 3).Value = "良"
ElseIf Cells(i, 2).Value >= 40 Then
Cells(i, 3).Value = "可"
Else
Cells(i, 3).Value = "不可"
End If
Next i
End Sub
実行すると、i が 1、2、3、4 と変わりながら、If文の判定が4回行われます。画像の表なら、80点は「優」、60点は「良」、55点は「可」、35点は「不可」になります。
覚えておきたいこと
If文は、上から順に条件を調べ、最初に当てはまったところで終わります。そのため、点数の高い条件から順に書くのがコツです。逆に「40点以上」を先に書くと、80点の人も「可」になってしまいます。
VBAのコードも、今はAIに書いてもらえる時代です
「点数に応じて評価を入れるマクロを作りたい」のような頼み方でも、AIはコードを書いてくれます。ただ、出てきたコードが自分の表に合っているかを確かめ、直す場面では、ここで説明したような仕組みの理解が役に立ちます。
リボンスクールでは、エクセルの関数やVBAの講座と、AIを使って作る講座の両方をご用意しています。