地下鉄四つ橋線 玉出駅 徒歩1分 / 南海本線 岸里玉出駅 徒歩3分 大阪市西成区のパソコン教室
文字の大きさ
無料相談・お申込み

Excel VBA 入門

エクセルVBA入門:For Nextの中でIf条件判定を行う

条件分岐(If)と繰り返し(For Next)を組み合わせて、成績の判定を一気に行う書き方です。

やりたいこと

B列に入っている1行目から4行目までの点数を見て、C列に「優・良・可・不可」を入れます。80点以上は優、60点以上は良、40点以上は可、それ未満は不可です。

1行ずつ手で入れるのではなく、If文で判定する処理を、For Nextで4回繰り返します。

Excelの画面。A列に名前、B列に点数が4行入っている。下のVBAエディターには、For Nextの中にIf文を書いたコードが表示されている
上がExcelの表(B列が点数)、下がVBAエディターのコードです。

手順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を使って作る講座の両方をご用意しています。