Junchi Lab

トップ > Excelマクロ > 2-3 条件分岐(IF関数)

2-3 条件分岐(IF関数)


【今回できるようになること】

・基本的な条件分岐


こんにちはー!!
今回はプログラミングの3要素の1つ、「条件分岐」を学びます!

ちなみに、プログラミングの3要素とは、
「順次」・・・プログラムが上から順番に実行されること
「反復」・・・前回と前々回で扱った、繰り返しの処理のこと
「分岐」・・・今回扱う、条件によって処理を分けること
です!

今回の内容で、プログラミングの3要素が揃います。
それでは始めていきましょう!


vba2_3_1


突然ですが質問です。下のような場合、生徒5人×2教科分のテストの合否判定をD列に表示したい場合、あなたならどうしますか?
ちなみに、60点以上で合格とします。


vba2_3_2


Excel関数の知識があれば、IF関数を使って一発ですね。


vba2_3_3


それでは上記に加えて、不合格のセルが分かりやすいように、
不合格のセルの背景色だけを「赤色」に変更したい場合、どうすれば良いでしょうか?

ExcelのIF関数だけでは、セルの書式を変えることはできませんね。
こんなときも、マクロが大活躍します。


それでは、VBEを開いて標準モジュールを追加し、メモ帳みたいなものの「Option Explicit」以下に、下のコードを書いてみましょう!

1-4 マクロを動かす 参照

vba2_3_6


※コピペ用↓

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)を実行してみましょう!

1-4 マクロを動かす 参照


下のように、合否判定と背景色が更新されたら成功です!


vba2_3_4


今回のコードでは、
『C列の点数を調べて、もし60点以上なら同じ行のD列に「合格」を記入、60点以上でなければ「不合格」を記入して背景色を変更』
という処理を、2行目から11行目にかけて繰り返し実行しています。


vba2_3_5


さて、
『C列の点数を調べて、もし60点以上なら同じ行のD列に「合格」を記入、60点以上でなければ「不合格」を記入して背景色を変更』
の部分ですが、
ここで本日のメイン、条件分岐の構文が使われています。

条件分岐の構文をざっくり書くと以下のようになります。


If 条件式 Then

 条件式が成り立つときに実行する処理

Else

 条件式が成り立たないときに実行する処理

End If


条件分岐のコードでは、最初に条件式を書き、その条件式が成り立つかどうかで処理が分かれます。

条件が成り立つ場合は、「If 条件式 Then」と「Else」の間の処理だけが実行されて、If構文が終了します。
反対に、条件が成り立たない場合は、「Else」と「End If」の間の処理だけが実行されて、If構文が終了します。

条件分岐の構文について、詳しくは第3章で解説しますので、今回はざっくり理解していただければ大丈夫です。


vba2_1_7

【今回のまとめ】

・条件によって処理を分けたいときは、条件分岐の文「If構文」を使う


前回 2-2 平均を計算する(AVERAGE関数)
次回 2-4 自動で最後まで繰り返す(オートフィル)