Excel の便利機能のひとつに オートフィルタ(AutoFilter) があります。
手作業でも簡単にフィルタリングできますが、VBA を使えば 自動で条件を指定して絞り込み が可能です。
この記事では、まず AutoFilter の基本構文と引数の意味 をわかりやすく解説します。
目次
1. AutoFilter の基本構文
VBA でフィルタをかける基本的な書き方は次の通りです。
Range("A1").AutoFilter Field:=列番号, Criteria1:=条件
解説:
Range("A1")
→ フィルタを適用する範囲(通常は見出しセルを含む範囲を指定).AutoFilter
→ フィルタを実行するメソッドField
→ 何列目に条件をかけるか指定Criteria1
→ フィルタ条件
2. 具体例:B列に「東京」のみを表示
Sub Sample_AutoFilter()
'A1:D1 の見出しに対してフィルタを設定
Range("A1:D1").AutoFilter _
Field:=2, Criteria1:="東京"
End Sub
実行結果:
- B列(2列目)のデータを対象に
- 「東京」と一致する行だけを表示
👉 ここでのポイントは 「見出し行を含む範囲を指定」 することです。見出しがないと正しく動きません。
3. AutoFilter の主な引数
AutoFilter メソッドには、便利なオプションがいくつかあります。
(1) Field
- フィルタをかける列番号(数値で指定)
- 範囲の左端を「1」として数えます
例:Field:=3
→ 指定範囲の3列目(見出し基準で数える)
(2) Criteria1
- フィルタ条件を指定
- 文字列(”東京”)、数値(”>=100″)、ワイルドカード(”A*”)などが使えます
例:
Criteria1:="大阪"
→ 「大阪」と一致Criteria1:=">=100"
→ 100以上の数値
(3) Operator
- 複数条件を指定するときに使用
xlAnd
→ 両方の条件を満たす(AND条件)xlOr
→ どちらかを満たす(OR条件)
(4) Criteria2
- 2つ目の条件を指定する場合に使用
例:Criteria1:=">=100", Operator:=xlAnd, Criteria2:="<=200"
👉 「100以上かつ200以下」を抽出できます。
4. AutoFilter の注意点
- 必ず見出し行を含めて範囲指定する
- フィルタは「ワークシートに表示中のデータ」を対象にする
- すでにフィルタがかかっている状態で再実行すると、条件が上書きされる
5. まとめ
AutoFilter
は Field(列番号) と Criteria1(条件) が基本Operator
やCriteria2
を組み合わせると複雑な条件指定も可能- 実務で多用するので、構文と引数の意味をしっかり理解しておくことが大切
コメント