ExcelVBA IF文の使い方と分岐方法

ExcelVBA-基礎編

今回は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<BAがB未満
<=以下A<=BAがB以下
>大きいA>BAがBより大きい
>=以上A>=BAがB以上
=等しいA=BAとBが等しい
<>等しくないA<>BAと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」で複数条件を指定出来ます。

ループと併用する事で、ほとんどの処理に対応出来るようになります。

タイトルとURLをコピーしました