読むのにかかる時間: 1未満 分

Excel VBAのIf文で条件によって処理を変える

Excel VBAでは、セルの値や条件によって処理を変えたい場合に「If文」を使用します。

たとえば、「数量が20以上なら○を入力する」「条件に当てはまらない場合は×を入力する」といった処理を自動化できます。

この記事では、If文の基本的な書き方から、Else・ElseIfを使って複数の条件に処理を分ける方法までを、練習用ファイルを使って一緒にやってみましょう。

マクロを動かすための重要なお願い

ダウンロードしたファイルは、通常のExcel形式(.xlsx)になっています。
そのままマクロを書いて保存すると、せっかく書いたコードがすべて消えてしまいます!

💡練習用ファイルを使う前の準備

If文の基本的な使い方

練習用ファイルを使用します

練習用ファイルのA2セルには「20」が入力されています。この値を使って、If文の動きを確認していきましょう。

まずは、条件に当てはまった場合だけ処理を実行する、If文の基本的な使い方を確認します。
以下が、A2セルの数量が20以上の場合、B2セルに「○」を入力するコードです。

If文の基本コード

If Range("A2") >= 20 Then
    Range("B2") = "○"
End If

コードの解説

STEP1
A2セルの数値が20以上か判定する

If Range(“A2”) >= 20 Then

A2セルの数値が20以上かどうかを判定します。
条件を満たしている場合は、Then以降の処理へ進みます。

STEP2
B2セルに「○」を入力する

Range(“B2”) = “○”

A2セルの数値が20以上の場合、B2セルに「○」を入力します。
20未満の場合、この処理は実行されません。

STEP3
If文を終了する

End If

End IfでIf文を終了します。

Elseで条件を満たさない場合の処理を指定する

条件を満たした場合だけでなく、条件を満たさなかった場合にも別の処理を行いたいときは「Else」を使用します。
今回は、A2セルの数値を以下の条件で判定します。

  • 20以上 → B2セルに「○」
  • 20未満 → B2セルに「×」

では、練習用ファイルのA2セルの「20」を「15」に変更してください。

Elseを使ったコード

If Range("A2") >= 20 Then
    Range("B2") = "○"
Else
    Range("B2") = "×"
End If

コードの解説

STEP1
A2セルの数値が20以上か判定する

If Range(“A2”) >= 20 Then

A2セルの数値が20以上かどうかを判定します。
Thenの後には、条件を満たした場合に実行する処理を記述します。

STEP2
条件に応じて入力する値を変える

Range(“B2”) = “○”
Else
Range(“B2”) = “×”

20以上の場合はB2セルに「○」を入力します。
20以上という条件を満たさなかった場合はElse以降へ進み、B2セルに「×」を入力します。
Elseには条件を指定せず、Ifで指定した条件を満たさなかった場合の処理を記述します。

STEP3
If文を終了する

End If

End IfでIf文を終了します。

ElseIfで複数の条件に処理を分ける

3つ以上の条件に分けて処理を行いたい場合は「ElseIf」を使用します。
ここでは、A2セルの数値を次の3つの条件に分けて、B2セルへ結果を入力します。

  • 20以上の場合は「○」
  • 10以上20未満の場合は「△」
  • 10未満の場合は「×」

ElseIfを使ったコード

If Range("A2") >= 20 Then
    Range("B2") = "○"
ElseIf Range("A2") >= 10 Then
    Range("B2") = "△"
Else
    Range("B2") = "×"
End If

コードの解説

STEP1
最初の条件を判定する

If Range(“A2”) >= 20 Then
Range(“B2”) = “○”

まず、A2セルの数値が20以上かどうかを判定します。
20以上の場合は、B2セルに「○」を入力します。

STEP2
次の条件を判定する

ElseIf Range(“A2”) >= 10 Then
Range(“B2”) = “△”

最初の条件を満たさなかった場合、A2セルの数値が10以上かどうかを判定します。
10以上の場合は、B2セルに「△」を入力します。
If文は上から順番に条件を判定するため、ここまで進んだ時点で「20未満」であることはすでに分かっています。

そのため、ElseIfでは「10以上20未満」と記述せず、10以上という条件だけで判定できます。

STEP3
どちらにも当てはまらない場合の処理を行う

Else
Range(“B2”) = “×”
End If

20以上、10以上のどちらの条件にも当てはまらない場合は、B2セルに「×」を入力します。
最後にEnd IfでIf文を終了します。

A2セルの数量を「9」に変更して、もう一度コードを実行してみましょう。
今度はどの条件にも当てはまらないため、B2セルに「×」が入力されます。

If文で使う比較演算子

If文では、「以上」「以下」「等しい」などの条件を指定するために比較演算子を使用します。

判定する条件比較演算子記述例
等しい=Range(“A2”) = 10
等しくない<>Range(“A2”) <> 10
~より大きい>Range(“A2”) > 10
以上>=Range(“A2”) >= 10
~より小さい<Range(“A2”) < 10
以下<=Range(“A2”) <= 10

今回のコードで使用した「>=」 は「以上」を表すため、Range(“A2”) >= 20 で「A2セルの数値が20以上」という条件になります。

If文のコードだけを使いたい方はこちら

If文のコードだけを確認して、そのままコピーして使いたい場合は、スニペット記事にまとめています。

▶ Excel VBAでIf文を使うコピペ用コード

まとめ

Excel VBAのIf文を使うと、セルの値などの条件によって実行する処理を変えることができます。

基本となるIf~Thenに加えて、Elseを使えば条件を満たさない場合の処理、ElseIfを使えば複数の条件に分けた処理を指定できます。

まずはIf文の基本的な書き方を覚えて、セルの値によって処理を変えるところから試してみましょう。

次回は、文字列の一致や空白セルなどをIf文で判定する方法を予定しています。