今回はIF文についてご説明致します。
IF文は「For~Next」などのループと同じくらい、使用頻度が高いと思います。
IF文とループを組み合わせる事で、大抵の作業には対応可能ではないかなと思います。
「For~Next」?、ループ?という方は、
「ExcelVBA 「For~Next」「Do~Loop」 ループの使い方」をご覧下さい。
1.IF文の使い方
IF文とは?
条件によって、処理を分岐させたい時に使用します。
○○○の時は処理A、違う時は処理Bのような分岐させたい場合です。
Excel関数のIF関数と同じような事です。
また、○○○の時は処理A、△△△の時は処理B、それも違う時は処理Cのような複数の条件でTrueのときの処理を、分岐させることも可能です。
もちろん、○○○かつ△△△の時などの複数の条件をどちらも満たす場合などの分岐も記述次第で可能になります。
IF文の分岐の記述方法
IF文は「IF 条件式 Then」で、分岐させたい条件を指定します。
「条件がTrueの処理」、「Else 条件がFalseの処理」と分岐した処理条件を記載して、最後に「End If」で終わります。
次のように記述します。
IF 条件式 Then
Trueの時の処理
Else
Falseの時の処理
End If
もし、Trueの時しか処理をしない場合はElseを省略出来ます。
次のように記述します。
IF 条件式 Then
Trueの時の処理
End If
さらに、Trueの処理が単純な場合は、「End If」も省略して次のように書くことも出来ます。
If 条件式 Then Trueの処理
また、条件を満たさない、Elseにも「ElseIf 条件式 Then」と条件を指定する事が出来ます。
3.比較演算子(条件式)
IF文の条件式でTrue/Falseの判定には、比較演算子を使用します。
演算子一覧
演算子 | 意味 | 例 | 説明 |
< | 小さい | A<B | AがB未満 |
<= | 以下 | A<=B | AがB以下 |
> | 大きい | A>B | AがBより大きい |
>= | 以上 | A>=B | AがB以上 |
= | 等しい | A=B | AとBが等しい |
<> | 等しくない | A<>B | AとBが等しくない |
4.IFの使い方とサンプルコード
IFの単一条件や、複数条件の使い方をサンプルコードを使ってご説明します。
処理がTrueのみの場合
図の様な表があります。
A1が「あ行」ならB1に「Yes」と表示させます。
Option Explicit
Sub Sample1()
If Cells(1, 1) = "あ行" Then 'A1が「あ行」だったら
Cells(1, 2) = "Yes" 'Trueの時B1に「Yes」
End If
End Sub
次のように1行で書く事も可能です。
Sub Sample2()
'1行で書く場合
'A1が「あ行」だったら
If Cells(1, 1) = "あ行" Then Cells(1, 2) = "Yes" 'Trueの時B1に「Yes」
End Sub
処理がTrue/Falseの場合
条件式がTrueの時と、Falseの時の処理をそれぞれ指定する時に使います。
A1とA2が「あ行」ならB1に「Yes」、違ったら「No」と表示させます。
Sub Sample3()
If Cells(1, 1) = "あ行" Then 'A1が「あ行」だったら
Cells(1, 2) = "Yes" 'Trueの時B1に「Yes」
Else
Cells(1, 2) = "No" 'Falseの時B1に「No」
End If
End Sub
IFの条件を複数指定する場合
IF文の条件は、複数指定する事が出来ます。
複数指定するには「AND」、もしくは「OR」で指定します。
A1が「あ行」B1が「Yes」だった場合、C1に「あいうえお」と入力します。
Falseの場合は、「Yesではありません。」と入力します。
Sub Sample4()
If Cells(1, 1) = "あ行" And Cells(1, 2) = "Yes" Then 'A1が「あ行」、且つB1が「Yes」だったら
Cells(1, 3) = "あいうえお" 'Trueの時C1に「あいうえお」
Else
Cells(1, 3) = "Yesではありません。" 'Falseの時C1に「Yesではありません。」
End If
End Sub
Elseにも条件を指定する場合
1つ目の条件式がFalseだった場合、Elseにも条件式を指定する事が出来ます。
「Elseif~Then]と書き、複数設定出来ます。
A1が「あ行」B1が「Yes」だった場合、C1に「あいうえお」と入力し、B1が「No」の場合は、「Yesではありません。」と入力します。
どちらにも当てはまらない場合は「未入力です。」と入力されます。
Sub Sample5()
If Cells(1, 1) = "あ行" And Cells(1, 2) = "Yes" Then 'A1が「あ行」、且つB1が「Yes」だったら
Cells(1, 3) = "あいうえお" 'Trueの時C1に「あいうえお」
ElseIf Cells(1, 1) = "あ行" And Cells(1, 2) = "No" Then
Cells(1, 3) = "Yesではありません。" 'Trueの時C1に「Yesではありません。」
Else
Cells(1, 3) = "未入力です。" 'どちらでもないFalseの時C1に「未入力です。」
End If
End Sub
Elseifを複数使用する場合
「Elseif~Then」は複数設定することが出来ます。
For~Nextのループを使用してA1~3までループして、それぞれの文字列を判定しています。
Sub Sample6()
Dim i As Long
For i = 1 To 3 '1~3ループ
If Cells(i, 1) = "あ行" Then 'あ行だったら
Cells(i, 2) = "あいうえお"
ElseIf Cells(i, 1) = "か行" Then 'か行だったら
Cells(i, 2) = "かきくけこ"
ElseIf Cells(i, 1) = "さ行" Then 'さ行だったら
Cells(i, 2) = "さしすせそ"
End If
Next i
End Sub
5.まとめ
IFは「If 条件式 then」で比較演算子を使用して、True/Falseで判定します。
判定結果で処理を分岐する場合に使用します。
また、条件式は「AND」、「OR」で複数条件を指定出来ます。
ループと併用する事で、ほとんどの処理に対応出来るようになります。