Excel VBA 繰り返し構文を使い大量のデータを効率的に処理する方法

 

ExcelVBA  同じ処理を何度も繰り返すことがよくあります。繰り返し処理(ループ構文)を使うことで、大量のデータを効率的に処理できます。使い方や注意点など、サンプルコードをもとに具体的に解説します。

 

2025年の目標は繰り返し作業に悩まされない年にしませんか? Excel VBAを活用した効率化がその第一歩
本サイト参考:Excel VBAで自動化するコードのベースを習得したい方におすすめの記事

 

Excel VBA 繰り返し構文|シーン

以下のシーンで利用します。

1.データの一括処理(100行分のデータを1行ずつ処理)

2.空白セルを検索し、自動で色をつける。

3.一定の条件を満たすまでループ処理を実行する。

 

Excel VBA 繰り返し構文サンプルコード

Excel VBAで効率化の準備をしてみませんか?2025年をよりスムーズに過ごすための資格
基本的な文法やVBAの実践的な応用までを網羅的に学習できる方法は、ExcelVBAエキスパート資格の取得を目指すこと。学習を通して、より効率的に、着実に基礎を身につけることが可能です。資格取得すれば、スキルの証明にもなり、職場での評価アップにも繋がるため、勉強を進めるモチベーションにもなります。
本サイト参考:マクロ知識がないから「何から学べば良いのかわからない」という人におすすめの記事

指定回数の繰り返し(For Next)

標準モジュール(数値を使って指定回数ループする )

Option Explicit

Sub ForNextサンプル()
    Dim i As Integer
    For i = 1 To 10
        Cells(i, 1).Value = "行 " & i ' A列に行番号を入力
    Next i
    MsgBox "処理完了!", vbInformation
End Sub

1行目~10行目のA列に「行 1」「行 2」...と入力する。
Next i で i を1ずつ増やして繰り返す。

 

範囲内のセルを処理(For Each Next)

標準モジュール(セル範囲のデータを1つずつ処理)

Option Explicit

Sub ForEachサンプル()
    Dim rng As Range
    For Each rng In Range("A1:A10") ' A1:A10を順番に処理
        rng.Value = rng.Row ' 行番号を入力
    Next rng
    MsgBox "処理完了!", vbInformation
End Sub

For Each はセル範囲を対象に処理するのに便利です。

条件を満たす間繰り返す(Do While)

標準モジュール(条件が満たされている間ループ)

Option Explicit

Sub DoWhileサンプル()
    Dim i As Integer
    i = 1
    Do While Cells(i, 1).Value <> "" ' A列が空白でない間繰り返す
        Cells(i, 2).Value = "OK"
        i = i + 1 ' 次の行へ
    Loop
    MsgBox "処理完了!", vbInformation
End Sub

A列のデータがある間、B列に "OK" を入力する。
i = i + 1 を忘れると 無限ループ になる。

条件を満たすまで繰り返す(Do Until)

標準モジュール(条件が満たされるまでループ)

Option Explicit

Sub DoUntilサンプル()
    Dim i As Integer
    i = 1
    Do Until Cells(i, 1).Value = "" ' A列が空白になるまで繰り返す
        Cells(i, 2).Value = "OK"
        i = i + 1
    Loop
    MsgBox "処理完了!", vbInformation
End Sub

A列のデータがなくなるまで繰り返す。
Do Until は 条件が偽の間 繰り返すので Do While と逆の動作。

無限ループに注意

標準モジュール(ループの終了条件を適切に設定しないと、無限ループ になりExcelがフリーズすることがあります)

Option Explicit

Sub 無限ループ()
    Dim i As Integer
    i = 1
    Do While i > 0 ' iが常に正のため、無限ループ!
        Cells(i, 1).Value = "ループ"
    Loop
End Sub

i = i + 1 のように カウンタを増やす
Do While i < 1000 などの 上限を設定する

 

Excel VBA 繰り返し構文|まとめ

構文 特徴 用途
For Next 回数が決まっているループ 1~100行目を順番に処理
For Each Next セル範囲などを1つずつ処理 指定範囲のセルにデータ入力
Do While 条件が 真の間 繰り返す データがある間、処理を続ける
Do Until 条件が 偽の間 繰り返す データが空白になるまで繰り返す

 

Excel VBAで自動化するコードのベースを習得したい方におすすめ!

VBAエキスパート資格は、日常業務でExcelを多用し、手動作業を減らしたいと考えている方には価値あるものです。

ExcelVBAエキスパートベーシック
仕事の効率をあげるためにExcelVBAを利用する人が対象の問題集です。


ExcelVBAエキスパートスタンダード

ExcelVBAの開発を仕事にする人が対象の問題集です。

 

Excel  VBA エキスパート資格について知りたい方は、下記「Excel VBAスキルアップを目指すなら知っておきたいVBAエキスパート」をご確認ください。