📘 Excel逆引き事典

【VBA】データの最終行を完全一致で別ブックとして保存する方法

日々の業務で大量のデータを扱っていると、特定の条件に一致するデータのみ抽出し、別ファイルとして保存したい場面がよくあります。この記事では、Excel VBAを使って、指定した文字列と完全一致する行だけを別のブックとして保存する方法を紹介します。

サンプルコード

VBA
Option Explicit
Sub SaveMatchingRowsToNewWorkbook()
    Dim ws As Worksheet, wbSrc As Workbook, wbDest As Workbook
    Dim lastRow As Long, i As Long
    Dim searchValue As String
    
    ' ソースワークブックとシートを設定
    Set wbSrc = ThisWorkbook
    Set ws = wbSrc.Sheets("Sheet1")
    
    ' 検索文字列を指定(ここでは「完全一致」とするための例として使用)
    searchValue = "完全一致"
    
    ' ターゲットワークブックを作成
    Set wbDest = Workbooks.Add
    
    ' 画面更新停止と警告オフ
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    
    ' 最終行を取得
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    
    ' 各行の処理
    For i = 1 To lastRow
        If ws.Cells(i, 1).Value = searchValue Then
            ' 完全一致した行をコピー
            ws.Rows(i).Copy Destination:=wbDest.Sheets(1).Rows(wbDest.Sheets(1).UsedRange.Rows.Count + 1)
        End If
    Next i
    
    ' 新しいワークブックを保存
    wbDest.SaveAs ThisWorkbook.Path & "\完全一致データ.xlsx"
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
End Sub

よくある質問

Q 元に戻せますか?

A.
VBAの実行結果は「元に戻す」が効きません。必ずバックアップを取ってから実行してください。

Q エラーが出たら?

A.
シート名や列番号が正しいか確認してください。