Excel VBAのIf文で複数のデータを順番に判定する
Excel VBAのIf文を使うと、セルの値によって処理を変えることができます。
一覧表など複数のデータを同じ条件で判定したい場合は、If文とFor文を組み合わせることで、1行ずつ順番に条件を判定できます。
この記事では、If文とFor文を組み合わせて複数のデータを順番に判定する方法を、具体例を使って解説します。
ダウンロードしたファイルは、通常のExcel形式(.xlsx)になっています。
そのままマクロを書いて保存すると、せっかく書いたコードがすべて消えてしまいます!
💡練習用ファイルを使う前の準備
- ファイルをダウンロードして開く
- マクロ有効ブック(.xlsm)形式で保存し直す
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コードの解説
For i = 2 To 6
変数 i の値を2から6まで順番に変更しながら、For文の中に記述した処理を繰り返します。
今回は、i の値が判定するデータの行番号になります。
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列へ「○」「△」「×」のいずれかを入力します。
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の値 | 判定するセル | 結果を入力するセル |
|---|---|---|
| 2 | A2 | B2 |
| 3 | A3 | B3 |
| 4 | A4 | B4 |
| 5 | A5 | B5 |
| 6 | A6 | B6 |
となります。
If文とFor文を組み合わせるときの考え方
If文とFor文を組み合わせたコードは長く見えますが、それぞれの役割を分けて考えると分かりやすくなります。
If文の役割
→ データが条件に当てはまるか判定して、実行する処理を決める
For文の役割
→ 判定するデータを1行ずつ順番に変更する
つまり、If文で行っている条件判定を、For文を使って複数のデータに繰り返していると考えればOKです。
For文そのものの書き方や繰り返し処理について詳しく知りたい場合は、こちらの記事で解説しています。
If文とFor文を組み合わせたコードだけを使いたい方はこちら
If文とFor文を組み合わせたコードだけを確認して、そのままコピーして使いたい場合は、スニペット記事にまとめています。
▶ Excel VBAでFor文とIf文を組み合わせるコピペ用コード
まとめ
Excel VBAのIf文とFor文を組み合わせると、複数のデータを同じ条件で順番に判定できます。
If文が「条件によって処理を変える」役割、For文が「判定するデータを順番に変える」役割を持っています。
一覧表など複数のデータを同じ条件で判定するときは、If文を1つずつ記述するのではなく、For文と組み合わせることで効率よく処理できます。




