Excel VBAを使うと、複雑なデータ操作が簡単になります。 二重のFor-Nextループを使うと、セル、行、または列の集まり全体的に繰り返し処理を効率化します。この記事では、2つのFor-Nextループの基本的な構文と、それを使った具体的な例を紹介します。
2つのFor-Nextループの使い方
【基本構文】
二重のFor-Nextループは以下のように記述します。
For 変数1 = 開始値1 To 終了値1
For 変数2 = 開始値2 To 終了値2
' 処理
Next 変数2
Next 変数1
変数1と変数2はループカウンタとして機能し、開始値から終了値までの範囲を繰り返します。
For nextを複数同時に使用する実践例
例1【行と列のデータを操作する】
以下の例では、Excel の表のすべてのセルに適切な操作を行うために二重ループを使用します。
Sub DoubleLoopExample()
Dim i As Integer, j As Integer
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
For i = 1 To 10 ' 1行目から10行目まで
For j = 1 To 5 ' 1列目から5列目まで
' 各セルに値を設定
ws.Cells(i, j).Value = "Row " & i & " Col " & j
Next j
Next i
End Sub
このサンプルコードは、特定のシートの最初の10行と最初の5列の各セルに対して、その行と列の番号を示すテキストを挿入します。
例2【条件に応じたデータの処理】
二重ループを利用して条件に基づいた複雑なデータ処理を行った例を見てみましょう。
Sub ConditionalDataProcessing()
Dim i As Integer, j As Integer
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
For i = 1 To ws.Rows.Count
For j = 1 To ws.Columns.Count
If ws.Cells(i, j).Value > 100 Then
' 値が100を超えるセルに対して、何らかの処理を行う
ws.Cells(i, j).Value = ws.Cells(i, j).Value * 1.1
End If
Next j
Next i
End Sub
このサンプルコードは、シート上のすべてのセルを走査し、値が100を超える場合にその値を10%増加させます。
まとめ
二重のFor-Nextループは、連続データを扱う際に非常に強力なツールです。上記の例は、Excel VBAでのデータ操作の基本を広く、さまざまな応用により日々の作業を大幅に効率化することができます。