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

Excel VBAのIf文で複数のデータを順番に判定する

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

一覧表など複数のデータを同じ条件で判定したい場合は、If文とFor文を組み合わせることで、1行ずつ順番に条件を判定できます。

この記事では、If文とFor文を組み合わせて複数のデータを順番に判定する方法を、具体例を使って解説します。

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

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

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

If文で複数のデータを判定する

これまでのIf文では、A1セルなど特定のセルを指定して条件を判定してきました。

一覧表のように複数のデータを同じ条件で判定する場合、1つずつIf文を書くのではなく、For文と組み合わせることで同じ判定を繰り返すことができます。

ここでは、A列の2行目から6行目までの数値を順番に判定し、B列へ次の結果を入力します。

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

If文とFor文を組み合わせたコード

For i = 2 To 6
    If Cells(i, 1) >= 20 Then
        Cells(i, 2) = "○"
    ElseIf Cells(i, 1) >= 10 Then
        Cells(i, 2) = "△"
    Else
        Cells(i, 2) = "×"
    End If
Next i

コードの解説

STEP1
判定する行を順番に変更する

For i = 2 To 6

変数 i の値を2から6まで順番に変更しながら、For文の中に記述した処理を繰り返します。

今回は、i の値が判定するデータの行番号になります。

STEP2
A列の値をIf文で判定する

For i = 2 To 6
If Cells(i, 1) >= 20 Then
Cells(i, 2) = “○”
ElseIf Cells(i, 1) >= 10 Then
Cells(i, 2) = “△”
Else
Cells(i, 2) = “×”
End If
Next i

Cells(i, 1)の i には、For文によって2、3、4……と順番に行番号が入ります。

そのため、

iが2 → A2セルを判定
iが3 → A3セルを判定
iが4 → A4セルを判定

というように、同じIf文を使って判定するセルを順番に変更できます。

判定した結果は、同じ行のB列へ「○」「△」「×」のいずれかを入力します。

STEP3
次の行へ進む

Next i

If文による判定が終わると、Next iで次の繰り返しへ進みます。

i の値が1つ増え、次の行を同じ条件で判定します。

今回は i が6になるまで繰り返すため、A2セルからA6セルまでを順番に判定できます。

RangeではなくCellsを使う理由

1つのセルを判定する場合は、次のようにRangeを使ってセル番地を直接指定できます。

If Range(“A2”) >= 20 Then

しかし、複数の行を順番に判定する場合、判定するセルをA2、A3、A4……と変更する必要があります。

そこで、行番号と列番号を数値で指定できるCellsを使用します。

Cells(i, 1)

i の値が変わることで行番号も変わるため、For文と組み合わせて複数のデータを順番に処理できます。

今回の場合は、

iの値判定するセル結果を入力するセル
2A2B2
3A3B3
4A4B4
5A5B5
6A6B6

となります。

If文とFor文を組み合わせるときの考え方

If文とFor文を組み合わせたコードは長く見えますが、それぞれの役割を分けて考えると分かりやすくなります。

If文の役割
→ データが条件に当てはまるか判定して、実行する処理を決める

For文の役割
→ 判定するデータを1行ずつ順番に変更する

つまり、If文で行っている条件判定を、For文を使って複数のデータに繰り返していると考えればOKです。

For文そのものの書き方や繰り返し処理について詳しく知りたい場合は、こちらの記事で解説しています。

▶ Excel VBAのFor文の使い方を詳しく解説

If文とFor文を組み合わせたコードだけを使いたい方はこちら

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

▶ Excel VBAでFor文とIf文を組み合わせるコピペ用コード

まとめ

Excel VBAのIf文とFor文を組み合わせると、複数のデータを同じ条件で順番に判定できます。

If文が「条件によって処理を変える」役割、For文が「判定するデータを順番に変える」役割を持っています。

一覧表など複数のデータを同じ条件で判定するときは、If文を1つずつ記述するのではなく、For文と組み合わせることで効率よく処理できます。