スポンサーリンク

【VBA】複数条件(OR/AND)でオートフィルタをかける方法

Excelのフィルタ作業では「1つの条件」だけでなく、複数条件を組み合わせてデータを抽出したい場面がよくあります。
VBAの AutoFilter を使えば、簡単に OR条件 や AND条件 を実現できます。


スポンサーリンク

1. OR条件でフィルタをかける

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

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

OR条件は「いずれかに一致するデータ」を抽出する方法です。
たとえば、「地域が東京 または 大阪」のデータを表示する場合は次のように書きます。

Sub フィルタ_OR条件()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    '地域列(2列目)で「東京」または「大阪」
    ws.Range("A1:C5").AutoFilter _
        Field:=2, _
        Criteria1:="東京", _
        Operator:=xlOr, _
        Criteria2:="大阪"
End Sub

ポイント

  • Criteria1 と Criteria2 を指定
  • Operator:=xlOr で OR条件 にする

この場合、「東京」または「大阪」の行が抽出されます。

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

スポンサーリンク

2. AND条件でフィルタをかける

AND条件は「両方の条件を満たすデータ」を抽出する方法です。
数値条件で使うことが多く、例えば「売上が100以上 かつ 150以下」のデータを表示する場合は次のように書きます。

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

ポイント

  • Operator:=xlAnd で AND条件 にする
  • 範囲指定のように使える(100~150の間など)
商品名地域売上
A商品東京120
C商品東京150

スポンサーリンク

3. 配列を使った複数条件(IN句のように使う)

ExcelのAutoFilterは、配列を使って「いくつかの値の中から一致するもの」を抽出することも可能です。
この場合、条件は OR条件 で解釈されます。

例:「地域が東京、大阪、名古屋のいずれか」を表示する場合

Sub フィルタ_配列条件()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    '地域列(2列目)で「東京」「大阪」「名古屋」
    ws.Range("A1:C5").AutoFilter _
        Field:=2, _
        Criteria1:=Array("東京", "大阪", "名古屋"), _
        Operator:=xlFilterValues
End Sub
商品名地域売上
A商品東京120
B商品大阪80
C商品東京150
D商品名古屋60

スポンサーリンク

5. まとめ

  • OR条件: Operator:=xlOr
  • AND条件: Operator:=xlAnd
  • 複数の文字列条件: Criteria1:=Array(...), Operator:=xlFilterValues

これらを組み合わせることで、柔軟なデータ抽出が可能になります。

コメント

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