はじめに
Excelで作業をしていると、
「特定の条件に合う行だけを表示したい」
「大量のデータから必要な行だけを抽出したい」
そんな場面がよくあります。
VBAでは、オートフィルタを使うことで、
条件に合う行だけをすばやく抽出できます。
ここでは、行をオートフィルタで抽出する基本のコードと、そのしくみを解説します。
まずはコードを確認
Range("A1").AutoFilter Field:=1, Criteria1:="東京"
もっともシンプルな書き方です。
A列(1列目)で「東京」に一致する行だけを抽出します。
コードのしくみを解説
AutoFilter の基本構造
Range("A1").AutoFilter Field:=列番号, Criteria1:=条件
- Field:どの列で絞り込むか
- Criteria1:抽出条件
A1セルは「見出し」を指すことが多く、
見出し行に対して AutoFilter を設定するのが一般的です。
具体的な例で理解する
1列目で「完了」の行だけ抽出する
Range("A1").AutoFilter Field:=1, Criteria1:="完了"
数値条件で抽出する(例:100以上)
Range("A1").AutoFilter Field:=2, Criteria1:=">=100"
複数条件で抽出する(OR条件)
Range("A1").AutoFilter Field:=1, Criteria1:="東京", Operator:=xlOr, Criteria2:="大阪"
部分一致で抽出する(LIKE検索)
Range("A1").AutoFilter Field:=1, Criteria1:="*支店*"
ワイルドカード(*)を使うと柔軟に検索できます。
フィルタを解除する
ActiveSheet.AutoFilterMode = False
フィルタを完全に解除したいときに使います。
あわせて知っておきたいポイント
フィルタを設定する前に、既存のフィルタを解除する
If ActiveSheet.AutoFilterMode Then
ActiveSheet.AutoFilterMode = False
End If
重複したフィルタ設定を避けられます。
フィルタ範囲を明示的に指定する
Range("A1:D100").AutoFilter Field:=2, Criteria1:=">0"
データ範囲が明確な場合は、範囲指定が安全です。
テーブル(ListObject)に対するフィルタ
ListObjects("Table1").Range.AutoFilter Field:=1, Criteria1:="有効"
テーブル形式のデータでは、ListObject を使うと安定します。
使うときに気をつけたいこと
- 見出し行が正しく設定されていることが前提
→ 見出しがないと意図しない列が抽出されることがあります。
- 結合セルがあるとフィルタが正しく動作しないことがあります
→ 可能なら結合を避けるのが安全です。
- 抽出後の行操作(削除・コピー)は慎重に
→ 可視セルだけを扱う場合は SpecialCells(xlCellTypeVisible) を使います。
まとめ
- AutoFilter を使うと、条件に合う行だけを簡単に抽出できる
- 数値・文字列・部分一致・複数条件など柔軟に設定可能
- フィルタ解除や範囲指定など、実務で役立つポイントも多い
- 見出し行と結合セルに注意すると、安定したコードになる
オートフィルタを使いこなせると、大量データの整理がぐっと楽になります。

オートフィルタは、実務でのデータ整理に欠かせない機能です。
VBAで自動化することで、毎日の作業が静かに、でも確実に軽くなります。

必要な行だけ、そっと見せてくれるのがフィルタのいいところ。
VBAは、そんな気配りも得意なんだなあ。

コメント