PR

【ExcelVBA】条件分岐(IFステートメント)の使い方

ExcelVBA-IF条件分岐-アイキャッチ その他
スポンサーリンク

基本のIFステートメントの書き方

条件分岐と言うと難しそうに聞こえますが、IF文を使うときは頭の中で日本語に変換しながら書くと分かりやすいです。

条件分岐とは、簡単に言うと「もし○○だったら××をする」という意味になります。
「もしも」「IF」「だったら」「Then」に置き換えて考えてみます。

If ○○(条件式) Then
 ××(どうするかを書く)
EndIf

さいごは「EndIf」で締めくくり、IF文はここまでですよ、というのを書いておきます。

これを念頭に置きつつ、条件式○○処理××を実際の処理に当てはめていきます。

「もしA1セルの値が「30」だったらB1セルに「〇」と出力する
という処理の場合は下のようになります。

If Range(“A1”) = 30 Then
 Range(“B1”) = “〇”
EndIf

A1セルの値が30の時はB1セルに「〇」と表示され、A1セルが30以外の場合は何も出力されません。

条件に一致しない場合の処理を書きたい場合は「Else」(その他の場合)を使用します。
下の例はA1セルの値が「30」の場合B1セルに「〇」を出力し、A1セルの値が「30」ではない場合は「×」を出力します。

If Range(“A1”) = 30 Then
 Range(“B1”) = “〇”
 Else
 Range(“B1”) = “×”
EndIf

A1セルの値が30以上の場合は「△」、50以上の場合は「〇」を出力して、それ以外を「×」としたい場合は、2つ目の条件判定を「EsleIf 条件式」で書いてつなげていきます。
3つ以上判定することも可能です。

If Range(“A1”) >= 30 Then
  Range(“B1”) = “△”
 ElseIf Range(“A1”) >= 50 Then
  Range(“B1”) = “〇”
 Else
Range(“B1”) = “×”
EndIf

スポンサーリンク

Ifステートメントで複数条件(OR条件:どちらかに一致)を使う方法

次はOR条件を使用して、条件①または条件②のどちらかに当てはまる場合に処理を実行する、というIF文を書いていきます。

(条件①)A1セルの値が1の場合または(条件②)A1セルの値が2の場合、B1セルに「〇」を出力します。(どちらも一致しない場合は「×」を出力。)

If Range(“A1”) = 1 Or Range(“A1”) = 2 Then
 Range(“B1”) = “〇”
 Else
Range(“B1”) = “×”
EndIf

OR条件はつなげて書くことで3つ以上でも判定することが可能です。
横につなげて書くと読みにくくなってしまうので「 _」半角スペースとアンダースコアでコード内を改行して下のように書くと条件が複数あることが分かりやすいです。

If Range(“A1”) = 1 Or _
Range(“A1”) = 2 Or _
Range(“A1”) = 3 Then
  Range(“B1”) = “〇”
 Else
Range(“B1”) = “×”
EndIf

スポンサーリンク

Ifステートメントで複数条件(AND条件:どちらも一致)を使う方法

次はAND条件を使用して、複数の条件すべてに当てはまる場合に処理を実行する、というIF文を書いていきます。

(条件①)A1セルの値が10以上で且つ(条件②)A1セルの値が20以下、B1セルに「〇」を出力します。(一致しない場合は「×」を出力。)

If Range(“A1”) >= 10 And Range(“A1”) <= 20 Then
 Range(“B1”) = “〇”
Else
Range(“B1”) = “×”
EndIf

OR条件と同様にAND条件も3つ以上つなげて書くことも可能です。

スポンサーリンク

Ifステートメントで使用する比較演算子

Ifステートメントで条件式に使用する比較演算子をまとめました。

比較演算子意味
A = BAとBが等しい
A <> BAとBが等しくない
A < BAがBより小さい
A > BAがBより大きい
A <= BAがB以下
A >= BAがB以上

比較演算子以外にもIS演算子などを使用して、値を判定することも可能です。
それぞれ別の記事で詳しく書いていますので参考にしてください。

もし値が日付だったら「IsDate(文字列)」

もし値が数値だったら「IsNumeric(文字列)」

もし特定の文字列が含まれる場合「InStr(文字列, “探したい文字列”)」

スポンサーリンク

行ループ内でIF文で判定する方法

1行ずつ行をループし、繰り返し処理を行う中でIF文で判定していく方法について説明します。

下の例では1行目~10行目まで10~100までの値が入っています。
値が30以下の場合は「×」、30より大きく70以下の場合は「△」、70より大きい場合は「〇」と出力していきます。

ExcelVBA-IF文行ループ_実行前

サンプルマクロで実行している内容
① 1行目~10行目まで繰り返す
② A列の値が30以下の場合、B列に「×」を出力する
③ A列の値が70以下の場合、B列に「△」を出力する
④ その他の場合、B列に「〇」を出力する

Sub sample1()
    
    '1行目~10行目まで繰り返す…⓵
    For i = 1 To 10
    
        'A列の値が30以下の場合…⓶
        If Cells(i, 1) <= 30 Then
        
            'B列に結果を出力
            Cells(i, 2) = "×"
           
          'A列の値が70以下の場合…⓷
          ElseIf Cells(i, 1) <= 70 Then
          
            'B列に結果を出力
            Cells(i, 2) = "△"
            
          'その他の場合…⓸
          Else
          
            'B列に結果を出力
            Cells(i, 2) = "〇"
        
        End If
        
    Next
         
End Sub

マクロを実行すると下のようになります。
B列に結果が出力されました。

ExcelVBA-IF文行ループ
スポンサーリンク

※コードのコピー利用について

・コードのコピーは自由におこなっていただけます。
・気を付けて作成はしていますがコードには誤りがある可能性があります。
・自身の環境で動作確認をしていますが、すべての方の環境で同様に動くことは保証できません。
・データの破損等の責任は負いかねますのでご自身の責任のもとお使いください。

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