スポンサーリンク

【VBA】1列に条件を指定してオートフィルタをかける方法

Excelでデータを扱う際、「特定の列で条件を指定して必要なデータだけを表示したい」と思うことはよくあります。
その際に便利なのが AutoFilter です。今回は、VBAを使って「1列に条件を指定してフィルタをかける方法」を解説します。


スポンサーリンク

1. 基本的な構文

オートフィルタを特定の列に適用する場合、基本構文は以下のようになります。

Range("範囲").AutoFilter Field:=列番号, Criteria1:="条件"
  • Range(“範囲”)
    フィルタをかけたいデータの範囲を指定します。
    通常は表全体(ヘッダーを含む範囲)を指定します。
  • Field
    どの列にフィルタをかけるかを列番号で指定します。
    範囲の左端を1として数えます。
  • Criteria1
    抽出条件を文字列で指定します。
    例: "東京"">=100" など。

スポンサーリンク

2. 具体例:商品リストを地域で絞り込む

次のような商品データを想定します。

商品名地域売上
A商品東京120
B商品大阪80
C商品東京150
D商品名古屋60

ここで「地域が東京」のデータだけを表示したい場合、以下のように記述します。

Sub フィルタ_東京のみ表示()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    '表全体にフィルタを設定
    ws.Range("A1:C5").AutoFilter Field:=2, Criteria1:="東京"
End Sub
  • Field:=2 → 範囲「A1:C5」の2列目(地域)を対象にする
  • Criteria1:="東京" → 地域が「東京」の行だけを表示する

実行すると、東京以外の行は非表示になります。


スポンサーリンク

3. 数値条件を指定する場合

売上が100以上のデータだけを表示する場合は次のように書きます。

Sub フィルタ_売上100以上()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    '売上列(3列目)で100以上の条件
    ws.Range("A1:C5").AutoFilter Field:=3, Criteria1:=">=100"
End Sub

数値条件も文字列として "">=100"" のように書くのがポイントです。


スポンサーリンク

4. 部分一致検索(ワイルドカード)

文字列の場合はワイルドカードも使えます。

  • *:任意の文字列
  • ?:任意の1文字

例:商品名が「A」で始まるものを表示する

ws.Range("A1:C5").AutoFilter Field:=1, Criteria1:="A*"

5. まとめ

  • Field で対象列を番号指定
  • Criteria1 で条件を指定(文字列・数値・ワイルドカードも可)
  • 部分一致検索にも対応できる

VBAのオートフィルタを活用すれば、日々のデータ抽出作業を大幅に効率化できます。

コメント

タイトルとURLをコピーしました