トップ > Excelマクロ > 2-3 条件分岐(IF関数)
【今回できるようになること】
・基本的な条件分岐
こんにちはー!!
今回はプログラミングの3要素の1つ、「条件分岐」を学びます!
ちなみに、プログラミングの3要素とは、
「順次」・・・プログラムが上から順番に実行されること
「反復」・・・前回と前々回で扱った、繰り返しの処理のこと
「分岐」・・・今回扱う、条件によって処理を分けること
です!
今回の内容で、プログラミングの3要素が揃います。
それでは始めていきましょう!
突然ですが質問です。下のような場合、生徒5人×2教科分のテストの合否判定をD列に表示したい場合、あなたならどうしますか?
ちなみに、60点以上で合格とします。
Excel関数の知識があれば、IF関数を使って一発ですね。
それでは上記に加えて、不合格のセルが分かりやすいように、
不合格のセルの背景色だけを「赤色」に変更したい場合、どうすれば良いでしょうか?
ExcelのIF関数だけでは、セルの書式を変えることはできませんね。
こんなときも、マクロが大活躍します。
それでは、VBEを開いて標準モジュールを追加し、メモ帳みたいなものの「Option Explicit」以下に、下のコードを書いてみましょう!
※コピペ用↓
Sub Bunki()
Dim i As Integer
For i = 2 To 11
If Cells(i, 3) >= 60 Then '←もしセル(i,3)の値が60以上ならば
Cells(i, 4).Value = "合格" '←セル(i,4)に「合格」と表示
Else '←もしセル(i,3)の値が60以上でなければ
Cells(i, 4).Value = "不合格" '←セル(i,4)に「不合格」と表示
Cells(i, 4).Interior.Color = RGB(255, 0, 0) '←セル(i,4)の背景色を赤色にする
End If '←条件分岐の終点
Next i
End Sub
これが書けたら、いままで同様、実行ボタンを配置してマクロ(Bunki)を実行してみましょう!
下のように、合否判定と背景色が更新されたら成功です!
今回のコードでは、
『C列の点数を調べて、もし60点以上なら同じ行のD列に「合格」を記入、60点以上でなければ「不合格」を記入して背景色を変更』
という処理を、2行目から11行目にかけて繰り返し実行しています。
さて、
『C列の点数を調べて、もし60点以上なら同じ行のD列に「合格」を記入、60点以上でなければ「不合格」を記入して背景色を変更』
の部分ですが、
ここで本日のメイン、条件分岐の構文が使われています。
条件分岐の構文をざっくり書くと以下のようになります。
If 条件式 Then
条件式が成り立つときに実行する処理
Else
条件式が成り立たないときに実行する処理
End If
条件分岐のコードでは、最初に条件式を書き、その条件式が成り立つかどうかで処理が分かれます。
条件が成り立つ場合は、「If 条件式 Then」と「Else」の間の処理だけが実行されて、If構文が終了します。
反対に、条件が成り立たない場合は、「Else」と「End If」の間の処理だけが実行されて、If構文が終了します。
条件分岐の構文について、詳しくは第3章で解説しますので、今回はざっくり理解していただければ大丈夫です。
【今回のまとめ】
・条件によって処理を分けたいときは、条件分岐の文「If構文」を使う