【VBA】特定の文字を含む行を開かずにコピーする方法
日々の業務で大量のデータの中から特定の情報を素早く抽出したいことはありませんか?この記事では、Excel VBAを使って特定の文字列が含まれる行だけを選択し、それを別のシートにコピーする方法を紹介します。これにより、手作業でのデータ整理や分析時間を大幅に短縮できます。
サンプルコード
VBA
Option Explicit
Sub CopyRowsWithSpecificText()
Dim wsSource As Worksheet, wsTarget As Worksheet
Dim lastRow As Long, i As Long
Dim targetSheetName As String
Dim searchKeyword As String
' シートと検索キーワードの設定
Set wsSource = ThisWorkbook.Sheets("Sheet1")
targetSheetName = "TargetSheet"
searchKeyword = "特定の文字"
' メイン処理開始前、画面更新停止
Application.ScreenUpdating = False
' ターゲットシートが存在しない場合、新規作成
On Error Resume Next
Set wsTarget = ThisWorkbook.Sheets(targetSheetName)
If wsTarget Is Nothing Then
Set wsTarget = ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
wsTarget.Name = targetSheetName
End If
On Error GoTo 0
' 最終行の取得
lastRow = wsSource.Cells(wsSource.Rows.Count, "A").End(xlUp).Row
' データコピー処理
For i = 1 To lastRow
If InStr(1, wsSource.Cells(i, 1), searchKeyword) > 0 Then
wsSource.Rows(i).Copy Destination:=wsTarget.Range("A" & wsTarget.Rows.Count + 1)
End If
Next i
' メイン処理終了後、画面更新再開
Application.ScreenUpdating = True
End Subよくある質問
Q 元に戻せますか?
A.
VBAの実行結果は「元に戻す」が効きません。必ずバックアップを取ってから実行してください。
Q エラーが出たら?
A.
シート名や列番号が正しいか確認してください。