目次
概要
Excel には、オートフィルターにワイルドカード(*
や ?
)を指定し、特定の文字列を 含む行だけ、あるいは 含まない行だけ を抽出する機能がございます。本記事では、VBA を用いた実装例を示しながら、ワイルドカード指定の基本と応用を丁寧に解説いたします。
前提条件
項目 | 内容 |
---|---|
対応 Excel | Microsoft 365 または 2016 以降 |
データ範囲 | F3:I100 に見出し行を含む表が配置されている想定 |
マクロ設置先 | 標準モジュール |
サンプルコード(VBA)
1. 特定の文字列を含む行のみ抽出する例
Sub FilterContainsKeyword()
Dim tblRange As Range ' フィルター対象
Set tblRange = Worksheets("Sheet1").Range("F3").CurrentRegion ' 見出し行を含む範囲
'--- 列 4(H 列)で「森」を含む行を抽出 ---
tblRange.AutoFilter Field:=4, Criteria1:="=*森*"
End Sub
2. 特定の文字列を含まない行だけ抽出する例
Sub FilterExcludesKeyword()
Dim tblRange As Range
Set tblRange = Worksheets("Sheet1").Range("F3").CurrentRegion
'--- 列 4(H 列)で「森」を含まない行を抽出 ---
tblRange.AutoFilter Field:=4, Criteria1:="<>*森*"
End Sub
コードのポイント
行 | 説明 |
---|---|
3 | CurrentRegion で表全体(見出し含む)を取得いたします。開始セルは実データに合わせて変更してください。 |
6 | =*森* は「森」を含むセルのみ抽出するワイルドカード式です。* は任意の文字列を表します。 |
12 | <>*森* とすると「森」を含まないセルのみ抽出できます。<> は「一致しない」条件を示します。 |
応用例
目的 | 実装のヒント |
---|---|
複数キーワードを OR 条件で抽出 | Criteria1:=Array("*森*", "*林*"), Operator:=xlFilterValues |
AND 条件で複合抽出 | 2 回目以降の AutoFilter で別列に条件を重ねると AND 条件になります。 |
大文字小文字を区別したい | Application.MatchCase = True を実行してからフィルターを設定します(処理後は False に戻してください)。 |
よくある質問
質問 | 回答 |
---|---|
ワイルドカード ? と * の違いは何ですか。 | * は 0 文字以上の任意の文字列、? は任意の 1 文字を表します。部分一致の柔軟性が異なります。 |
抽出後、可視セルだけをコピーしたい場合は。 | tblRange.SpecialCells(xlCellTypeVisible).Copy で可視セルのみを扱えます。 |
まとめ
ワイルドカードを利用したオートフィルター設定により、特定文字列を 含む/含まない 行を即座に抽出できます。まずはサンプルマクロを実行し、想定どおりの行が表示されることをご確認ください。キーワードや列番号を変更するだけで、さまざまなデータセットへ応用可能ですので、ぜひ業務効率化にお役立てください。
【AI×就労支援】Neuro Dive(ニューロダイブ)で先端ITを学び、スペシャリストとしての就職を目指しませんか?
最後に宣伝をさせてください。
「AIやデータサイエンスを仕事にしたい」 「でも、独学には限界が…」
そんな方に知ってほしいのが、日本初の”先端IT特化型”就労移行支援『Neuro Dive』です。
IT職種への就職率80%超、職場定着率95%超という実績は、信頼の証。「学びたい」を「仕事」に繋げるプロフェッショナルです。
ご興味があれば、ぜひ公式サイトをチェックしてみてください。