Excelマクロ&vba[実践ビジネス入門講座]解説| IFとは?
本ブログは、著者国本温子さんの『Excelマクロ&vba[実践ビジネス入門講座]』を解説させて頂くブログとなります。
条件分岐について
条件分岐とは、条件の結果によって異なる処理を実行する仕組みです。
例) 明日は休日か?
Yes → 夜更かしして映画を観る
No → 寝る
上のようにYesかNoで実行する処理を決めます。
マクロの処理で例えるなら、
もしA1セルの数値が10以上であれば、
A1セルを青色に塗る。
違えば、
A1セルを赤色に塗る。
このようなコードを組んで、作業を自動化させます。
条件分岐はマクロではとても重要な役割を果たすのでしっかりと理解しましょう。
逆に、条件分岐を理解できれば、マクロをほとんど習得したようなものです。
IF構文
IFとは、エクセルの関数でもあるように、
もし、○○なら→△△を実行する
それ以外なら→■■を実行するという意味になります。
マクロでIFを使えるようになると、
セルを削除するや、シートの名前を変更する、シートを追加するといった、
関数ではできない処理が行えるようになります!
例えば、売上表を対象として、売上高が10万円未満のセルは削除することや、
10万円以上の売上高があれば、新しいシートを作成し、コピーするなどの処理が可能になります。
IFステートメントの記述方法
上記で説明したIF文の記述方法をご紹介します。
IF 条件式 Then
処理の内容
End If
これが条件分岐の構文となります。
はじめに説明したA1の数値が10以上ならセルを青色にする
という処理をマクロで記述すると、
IF Range("A1") >= 10 Then
Range("A1").Interior.Color = vbBlue
End If
条件を記述する比較演算子は下記表をご参考ください。
”.Interior.Color” はセル背景の色という意味で、
”.Interior.Color = vbBlue”のように、色を=で指定します。
基本的には”vb+ 色”と記述すればその色になります。(vbRedやvbBlackなど)
次に条件式がYesなら○○、Noなら△△という処理の記述方法をご紹介します。
IF 条件式 Then
条件式がYesの場合に処理する内容
Else
条件式がNoの場合に処理する内容
End If
A1セルの数値が10以上であれば、A1セルを青色に、
違えば赤色に塗るという処理内容を紹介します。
IF Range("A1") >= 10 Then
Range("A1").Interior.Color = vbBlue
Else
Range("A1").Interior.Color = vbRed
End If
このように、Elseを付け足すだけで簡単にYes Noで処理結果を分けることができます。
複数の条件を組み合わせる方法
先程はもし○○ならAを実行、違えばBを実行という構文を紹介しましたが、
もし○○かつ△△ならや、もし○○もしくは△△なら
というような複数の条件を組み合わせる方法をご紹介します。
AndとOrを使用することで複数条件を組合すことができます。
例)もしA1セルの数値が5以上かつ15以下であれば
コード) If Range("A1") <= 5 And Range("A1") >= 15 Then
例)もしA1セルの数値がB1セルより大きいもしくはB2セルより大きければ
コード) If Range("A1") < Range("B1") Or Range("A1") < Range("B2") Then
このように、複数条件も簡単に書くことができます。
3つ以上の条件を判定して処理する場合
これまで、"条件に合えば処理を行う"、"条件にYesならA、NoならB”の記述方法をご紹介しましたが、
ここでは3つ以上の条件に応じて処理を行う方法をご紹介します。
IF 条件1 Then
条件1がYesの場合の処理
ElseIf 条件2 Then
条件2がYesの場合の処理
ElseIf 条件3 Then
条件3がYesの場合の処理
Else
どれにも該当しない場合の処理
End If
このように、Else Ifとすることで3つ以上の条件に対応可能です。
また、上では条件3までしか書いていませんが、同様に4つ以上も加えることができます。
例) A1セルの数値を判定する。90点以上ならB1セルに"優"、
70点以上なら"良"、60点以上なら"可"、それ以下なら"不可"
If Range("A1") >= 90 Then
Range("B1") = "優"
ElseIf Range("A1") >= 70 Then
Range("B1") = "良"
ElseIf Range("A1") >= 60 Then
Range("B1") = "可"
Else
Range("B1") = "不可"
End If
このようにコードが長くなりますが、複数条件にも対応可能です!
エクセルマクロに関する内容をyoutubeで発信しています。
ぜひご覧ください!
ブログの解説本 Excelマクロ&vba[実践ビジネス入門講座]はこちら