データを効率的に抽出したい
Excelで作業していると、「特定の文字列を含む行だけを抜き出して、新しいシートにまとめたい」という場面が出てきます。
たとえば、顧客リストの中から「東京都」という文字を含む行を抜き出して、別のシートにコピーする作業です。手動でやろうとすると、膨大なデータがあった場合にはとても時間がかかります。
しかし、VBAを使うと、この作業を自動化して、数秒で終わらせることができます。
VBAを使って特定の文字列を含む行を抽出し、別のシートにコピーする方法について解説します。
特定の文字列を含む行を抽出する基本的なコード
最初に、基本となるコードを紹介します。今回は「東京都」という文字列を含む行を、新しいシートにコピーする例を作成します。
コード例
Sub ContainingText()
Dim sourceWs As Worksheet
Dim targetWs As Worksheet
Dim lastRow As Long
Dim i As Long
Dim searchText As String
' 元のシートとコピー先のシートを設定
Set sourceWs = ThisWorkbook.Sheets("Sheet1")
Set targetWs = ThisWorkbook.Sheets("Sheet2")
' 検索する文字列
searchText = "東京都"
' 元のシートの最終行を取得
lastRow = sourceWs.Cells(sourceWs.Rows.Count, 1).End(xlUp).Row
' 対象シートの内容をクリア
targetWs.Cells.Clear
' 最初の行にヘッダーをコピー
sourceWs.Rows(1).Copy targetWs.Rows(1)
' 行ごとに検索して、文字列を含む行をコピー
For i = 2 To lastRow
If InStr(sourceWs.Cells(i, 1).Value, searchText) > 0 Then
sourceWs.Rows(i).Copy Destination:= _
targetWs.Rows(targetWs.Cells(targetWs.Rows.Count, 1).End(xlUp).Row + 1)
End If
Next i
MsgBox "処理が完了しました!"
End Sub
sourceWsとtargetWsで、それぞれ元のシートとコピー先のシートを指定しています。searchTextに「東京都」を指定し、この文字列を含む行を検索します。InStr関数を使って、対象セルに文字列が含まれているかを調べています。- 見つかった行は、新しいシート(Sheet2)にコピーされます。
- 最後に、処理完了のメッセージを表示します。
複数の文字列を検索する場合の応用
次に、1つではなく複数の文字列を検索したい場合を考えます。
たとえば、「東京都」か「大阪府」を含む行を抽出したいときのコードです。
コード例(複数文字列)
Sub MultipleTexts()
Dim sws As Worksheet
Dim tws As Worksheet
Dim lastRow As Long
Dim i As Long
Dim stxt1 As String
Dim stxt2 As String
' 元のシートとコピー先のシートを設定
Set sws = ThisWorkbook.Sheets("Sheet1")
Set tws = ThisWorkbook.Sheets("Sheet2")
' 検索する文字列
stxt1 = "東京都"
stxt2 = "大阪府"
' 元のシートの最終行を取得
lastRow = sws.Cells(sws.Rows.Count, 1).End(xlUp).Row
' 対象シートの内容をクリア
tws.Cells.Clear
' 最初の行にヘッダーをコピー
sws.Rows(1).Copy tws.Rows(1)
' 行ごとに検索して、文字列を含む行をコピー
For i = 2 To lastRow
If InStr(sws.Cells(i, 1).Value, stxt1) > 0 Or _
InStr(sws.Cells(i, 1).Value, stxt2) > 0 Then
sws.Rows(i).Copy tws.Rows(tws.Cells(tws.Rows.Count, 1).End(xlUp).Row + 1)
End If
Next i
MsgBox "処理が完了しました!"
End Sub
stxt1とstxt2に「東京都」と「大阪府」を指定しています。InStr関数を使って、いずれかの文字列をOR条件で検索しています。- どちらかの文字列が含まれている行は、新しいシート(Sheet2)にコピーされます。
実装するメリット
特定の文字列を含む行を別シートに抽出するマクロを実装することで、次のようなメリットがあります。
主なメリット
- 手動での作業がなくなる
例えば数百行、数千行のデータがある場合、手動で「東京都」を含む行を探すのは大変です。VBAで自動化することで、一瞬で処理できます。 - 間違いを防げる
複数のデータをチェックしながらコピーする際に、人為的なミスが発生することがありますが、VBAで処理すればその心配はありません。 - データの整理が簡単になる
条件にあった行だけを別シートにコピーすれば、整理や分析がしやすくなります。 - レポート作成がスムーズになる
特定の条件に合ったデータだけを抽出し、そのままレポートに利用できるので、仕事の効率が大幅に向上します。
まとめ
特定の文字列を含む行を抽出して別のシートにコピーするマクロを使うことで、膨大なデータを扱う際にも作業が簡単に、迅速に、正確に行えるようになります。
今回は「東京都」や「大阪府」といった条件で抽出する例を紹介しましたが、条件を変更することで、さまざまなデータ抽出が可能です。
ぜひ、このマクロを活用して、業務の効率化を実現してください。
