【エクセルマクロ】最終行までループを繰り返す:使用例11選

【エクセルマクロ】最終行までループを繰り返す:使用例11選-アイキャッチ ExcelVBA

エクセルマクロで、最終行までループ処理を繰り返すコードを記載しています。

このページのマクロコードは、コピペで使えます。
ぜひお試しください😉

最終行まで繰り返す(Forループ)

以下のマクロを実行すると、最終行までループ処理を繰り返します。


Sub 最終行までループ()
    Dim lastRow As Long
    Dim i As Long
    
    'A列の最終行を取得
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row
    
    '2~最終行までループ
    For i = 2 To lastRow
    
        'B列に値を入力
        Cells(i, 2) = "チェック" & i
    Next i
End Sub

 

マクロ実行前


 

マクロ実行後

A列の最終行を取得して、B列に値を自動入力します。


 
 

最終行まで繰り返す(Forループ 偶数行だけ)

以下のマクロを実行すると、最終行までループ処理を繰り返します。


Sub 最終行までループ_For()
    Dim lastRow As Long
    Dim i As Long

    ' A列の最終行を取得
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row

    ' 2から最終行まで、2つおきに行を処理
    For i = 2 To lastRow Step 2
        ' 偶数行のセルBに「処理済み」と記入
        Cells(i, 2).Value = "処理済み"
    Next i
End Sub

 

マクロ実行前


 

マクロ実行後

セルB列に「処理済み」を記入する例です。
For文のStepオプションを使用して、2つおきに行を処理しています。


 
 

最終行まで繰り返す(Forループ 条件一致)

以下のマクロを実行すると、最終行までループ処理を繰り返します。


Sub 最終行までループ_For()
    Dim lastRow As Long
    Dim i As Long

    ' A列の最終行を取得
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row

    ' 2から最終行までループ
    For i = 2 To lastRow
        ' セルAの値が50より大きい場合
        If Cells(i, 1).Value > 50 Then
            ' 対応するセルBに「条件合致」と記入
            Cells(i, 2).Value = "条件合致"
        End If
    Next i
End Sub

 

マクロ実行前


 

マクロ実行後

セルA列の値が50より大きい場合に、セルB列に「条件合致」を記入する例です。


 
 

最終行まで繰り返す(Forループ 列コピー)

以下のマクロを実行すると、最終行までループ処理を繰り返します。


Sub 最終行までループ_For()
    Dim lastRow As Long
    Dim i As Long

    ' A列の最終行を取得
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row

    ' 2から最終行までループ
    For i = 2 To lastRow
        ' セルAのデータをカラムCにコピー
        Cells(i, 3).Value = Cells(i, 1).Value
    Next i
End Sub

 

マクロ実行前


 

マクロ実行後

セルA列のデータをC列にコピーする例です。


 
 

最終行まで繰り返す(For Eachループ)

以下のマクロを実行すると、最終行までループ処理を繰り返します。


Sub 最終行までループ_ForEach()
    Dim lastRow As Long
    Dim cell As Range

    ' A列の最終行を取得
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row

    ' セルB列に値を入力
    For Each cell In Range("B2:B" & lastRow)
        cell.Value = "チェック" & cell.Row
    Next cell
End Sub

 

マクロ実行前


 

マクロ実行後

For Eachループを使用して、セルB列の各セルに対して値を入力します。

Range(“B2:B” & lastRow)で、セルB2から最終行までのセル範囲を指定し、
それぞれのセルに対してループが行われます。


 
 

最終行まで繰り返す(For Eachループ セル合計)

以下のマクロを実行すると、最終行までループ処理を繰り返します。


Sub 最終行までループ_ForEach()
    Dim lastRow As Long
    Dim totalSum As Double
    Dim cell As Range

    ' A列の最終行を取得
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row

    ' セルの値を合計
    totalSum = 0
    For Each cell In Range("A2:A" & lastRow)
        totalSum = totalSum + cell.Value
    Next cell

    ' 合計を表示
    MsgBox "合計値: " & totalSum
End Sub

 

マクロ実行後

セルA2から最終行までの値を合計する例です。


 
 

最終行まで繰り返す(For Eachループ セル検索)

以下のマクロを実行すると、最終行までループ処理を繰り返します。


Sub 最終行までループ_ForEach()
    Dim lastRow As Long
    Dim foundCells As String
    Dim cell As Range

    ' A列の最終行を取得
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row

    ' 特定の文字列を含むセルを検索
    foundCells = ""
    For Each cell In Range("A2:A" & lastRow)
        If InStr(cell.Value, "りんご") > 0 Then
            foundCells = foundCells & cell.Address & ", "
        End If
    Next cell

    ' 検索結果を表示
    If Len(foundCells) > 0 Then
        MsgBox "検索文字列を含むセルのアドレス: " & Left(foundCells, Len(foundCells) - 2)
    Else
        MsgBox "検索文字列を含むセルはありませんでした。"
    End If
End Sub

 

マクロ実行後

セルA2から最終行までの中で、
特定の文字列を含むセルのアドレスを検索する例です。


 
 

最終行まで繰り返す(Do Whileループ)

以下のマクロを実行すると、最終行までループ処理を繰り返します。


Sub 最終行までループ_DoWhile()
    Dim lastRow As Long
    Dim i As Long

    ' A列の最終行を取得
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row

    ' 2~最終行までループ
    i = 2
    Do While i <= lastRow

        ' B列に値を入力
        Cells(i, 2) = "チェック" & i
        
        i = i + 1
    Loop
End Sub

 

マクロ実行前


 

マクロ実行後

Do Whileループを使用して、セルB列に値を入力する処理を作成します。
iの値が最終行を超えるまでループが続きます


 
 

最終行まで繰り返す(Do Whileループ 重複削除)

以下のマクロを実行すると、最終行までループ処理を繰り返します。


Sub 最終行までループ_DoWhile()
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim i As Long
    
    ' アクティブなシートを取得
    Set ws = ActiveSheet
    
    ' 最終行を取得
    lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
    
    i = 2
    ' 重複を削除
    Do While i <= lastRow
        ' 同じ値が他のセルに存在するかチェック
        If WorksheetFunction.CountIf(ws.Range("A2:A" & i), ws.Cells(i, 1).Value) > 1 Then
            ' 重複があれば行を削除
            ws.Cells(i, 1).Delete Shift:=xlUp
            lastRow = lastRow - 1
        Else
            ' 重複がなければ次の行へ
            i = i + 1
        End If
    Loop
End Sub

 

マクロ実行前


 

マクロ実行後

A列の商品名から重複を削除します。


 
 

最終行まで繰り返す(Do Untilループ)

以下のマクロを実行すると、最終行までループ処理を繰り返します。


Sub 最終行までループ_DoUntil()
    Dim lastRow As Long
    Dim i As Long

    ' A列の最終行を取得
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row

    ' 2~最終行までループ
    i = 2
    Do Until i > lastRow

        ' B列に値を入力
        Cells(i, 2) = "チェック" & i
        
        i = i + 1
    Loop
End Sub

 

マクロ実行前


 

マクロ実行後

Do Untilループを使用して、セルB列に値を入力する処理を作ります。
iの値が最終行を超えるまでループが続きます。


 
 

最終行まで繰り返す(Do Untilループ 空白行を見つける)

以下のマクロを実行すると、最終行までループ処理を繰り返します。


Sub 最終行までループ_DoUntil()
    Dim ws As Worksheet
    Set ws = ActiveSheet
    Dim lastRow As Long
    Dim i As Long
    
    ' A列の最終行を取得
    lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
    
    i = 2
    ' 最初の空白行を見つける
    Do Until IsEmpty(ws.Cells(i, 1))
        i = i + 1
    Loop
    
    ' 結果を表示
    MsgBox "最初の空白行は行 " & i & " です。"
End Sub

 

マクロ実行後

指定の列で最初の空白行を見つけて、その行番号を表示します。


 
 
この記事がお役に立ちますと幸いです。
 

【エクセルマクロ】最終行を取得する:使用例10選 自動化
...

 

「ExcelVBA自動化のすべて ~35の事例で課題解決力を身につける~」
業務改善コンサルタントが教える ビジネスの現場で役立つExcelVBAの知識を解説
基本的な解決法と、応用例も紹介しています!