Excel VBAを使った業務効率化の中で、特定の文字列を含むデータをフィルタリングする処理は非常に一般的です。この記事では、初心者にもわかりやすいようにVBAコードでこのタスクを実現する方法とその応用例を説明します。
目次
Excel VBAの基本
Excel VBA(Visual Basic for Applications)は、Microsoft Excelに組み込まれたプログラミング言語です。これを用いると、単純作業の自動化だけでなく、高度なデータ分析やレポート作成も可能になります。
そもそも、どこにVBAコードを書いて、どう実行すれば良いのか分からない場合は、以下の記事をご参照ください。
あわせて読みたい


Excel VBAで作業を効率化する具体的な手順とコード例
Excel VBA(Visual Basic for Applications)は、Excelで作業効率を向上させるためのプログラミング言語です。しかし、多くの初心者がどう入門するべきか、どうコードを...
created by Rinker
¥3,344
(2023/10/01 13:20:52時点 Amazon調べ-詳細)
基本的なフィルタリングコード
Excel VBAで特定の文字列を含むデータをフィルタリングする基本的なコードを以下に示します。
1 2 3 4 5 6 7 |
Sub BasicFilter() Dim ws As Worksheet Set ws = ThisWorkbook.Sheets("Sheet1") ws.Range("A1:C10").AutoFilter Field:=1, Criteria1:="*特定の文字列*" End Sub |
コードの解説
このコードでは、Sheet1
のA1:C10
範囲のデータをフィルタリングしています。Criteria1:="*特定の文字列*"
で、1列目に特定の文字列を含む行だけがフィルタリングされます。
補足:ワイルドカードの使用
上記のコードでは、アスタリスク(*)がワイルドカードとして使われています。これにより、”特定の文字列”が前後に何か文字があってもマッチします。
応用例
特定の文字列をフィルタリングする基本のコードを応用して、さまざまなシナリオで使用する方法を考察します。
例1: 複数のシートでフィルタリング
1 2 3 4 5 6 7 8 9 10 |
Sub MultiSheetFilter() Dim wsNames As Variant Dim ws As Worksheet wsNames = Array("Sheet1", "Sheet2", "Sheet3") For Each ws In ThisWorkbook.Sheets(wsNames) ws.Range("A1:C10").AutoFilter Field:=1, Criteria1:="*特定の文字列*" Next ws End Sub |
例2: 複数の条件でフィルタリング
1 2 3 4 5 6 7 |
Sub MultiCriteriaFilter() Dim ws As Worksheet Set ws = ThisWorkbook.Sheets("Sheet1") ws.Range("A1:C10").AutoFilter Field:=1, Criteria1:="*特定の文字列*", Operator:=xlOr, Criteria2:="*別の文字列*" End Sub |
例3: 日付範囲でフィルタリング
1 2 3 4 5 6 7 |
Sub DateRangeFilter() Dim ws As Worksheet Set ws = ThisWorkbook.Sheets("Sheet1") ws.Range("A1:C10").AutoFilter Field:=2, Criteria1:=">=2023/01/01", Operator:=xlAnd, Criteria2:="<=2023/12/31" End Sub |
例4: フィルタリング後のデータを新しいシートにコピー
1 2 3 4 5 6 7 8 9 |
Sub CopyFilteredData() Dim ws As Worksheet, newWs As Worksheet Set ws = ThisWorkbook.Sheets("Sheet1") Set newWs = ThisWorkbook.Sheets.Add ws.Range("A1:C10").AutoFilter Field:=1, Criteria1:="*特定の文字列*" ws.Range("A1:C10").SpecialCells(xlCellTypeVisible).Copy Destination:=newWs.Range("A1") End Sub |
例5: フィルタリングされたデータをCSVで出力
1 2 3 4 5 6 7 8 9 10 11 12 |
Sub ExportFilteredDataToCSV() Dim ws As Worksheet Set ws = ThisWorkbook.Sheets("Sheet1") ws.Range("A1:C10").AutoFilter Field:=1, Criteria1:="*特定の文字列*" ws.Range("A1:C10").SpecialCells(xlCellTypeVisible).Copy Workbooks.Add ActiveSheet.Paste ActiveWorkbook.SaveAs Filename:="filtered_data.csv", FileFormat:=xlCSV ActiveWorkbook.Close End Sub |
まとめ
Excel VBAを使って特定の文字列を含むデータを効率よくフィルタリングする方法について詳しく見てきました。基本的なコードから応用例まで、多様なケースでの使用方法を考えました。これらの知識を使って、日々の業務をより効率的にしてください。
created by Rinker
¥3,344
(2023/10/01 13:20:52時点 Amazon調べ-詳細)
コメント