📘 Excel逆引き事典

【VBA】全てのシートを完全一致で抽出する方法

手作業で大量のデータから特定のシートを抽出するのは大変です。この記事では、VBAを使用して簡単に全てのシートから完全一致するデータのみを抽出する方法を紹介します。

サンプルコード

VBA
Option Explicit
Sub ExtractSheets()
    Dim ws As Worksheet, targetWs As Worksheet
    Dim lastRow As Long, i As Long
    Dim searchStr As String
    
    ' 検索文字列の設定
    searchStr = "完全一致する文字列"
    
    ' 新しいワークシートを作成して結果を格納
    Set targetWs = ThisWorkbook.Worksheets.Add
    targetWs.Name = "抽出結果"
    
    Application.ScreenUpdating = False
    For Each ws In ThisWorkbook.Worksheets
        If ws.Name <> targetWs.Name Then
            lastRow = targetWs.Cells(targetWs.Rows.Count, 1).End(xlUp).Row + 1
            ' 各シートのデータを検索し、完全一致する行を抽出
            For i = 1 To ws.UsedRange.Rows.Count
                If ws.Cells(i, 1).Value = searchStr Then
                    targetWs.Cells(lastRow, 1).Value = ws.Cells(i, 1).Value
                    lastRow = lastRow + 1
                End If
            Next i
        End If
    Next ws
    Application.ScreenUpdating = True
End Sub

よくある質問

Q 元に戻せますか?

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

Q エラーが出たら?

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