オートフィルターで3つ以上のOR条件で抽出する方法
エクセルのオートフィルタ機能をVBAを使用してデータを抽出します。
AutoFileterの構文は以下になります。
expression.AutoFilter (Field, Criteria1, Operator, Criteria2, SubField, VisibleDropDown)
パラメータの説明は以下の通りです。
名前 | 必須 / オプション | 説明 |
---|---|---|
Field | 省略可能 | フィルターの対象となるフィールド番号を整数で指定します。フィールド番号は、リストの左側から始まります。 |
Criteria1 | 省略可能 | 抽出条件 (“101” などの文字列)。 空白のフィールドを検索するには “=”、空白以外のフィールドを検索するには “<>“、データ型の (データなし) フィールドを選択するには “><" を使用します。 この引数を省略すると、抽出条件は All になります。 Operator が xlTop10Items の場合は、Criteria1 に項目数を指定します (たとえば “10” など)。 |
Operator | 省略可能 | XlAutoFilterOperator |
Criteria2 | 省略可能 | 2 番目の抽出条件となる文字列を指定します。 |
SubField | Optional | 抽出条件を適用するデータ型のフィールド (たとえば、地理学の [人口] フィールド、または株価の [量] フィールド)。 この値を省略すると、”(表示値)” が対象になります。 |
VisibleDropDown | 省略可能 | True を指定すると、フィルター処理されるフィールドのオートフィルターのドロップダウン矢印を表示します。 False を指定すると、抽出されるフィールドのオートフィルターのドロップダウン矢印を非表示にします。 既定値は True です。 |
XlAutoFilterOperatorの説明は以下の通りです。
名前 | 値 | 説明 |
---|---|---|
xlAnd | 1 | Criteria1 と Criteria2 の論理 AND |
xlBottom10Items | 4 | 表示される最も低い値のアイテム (Criteria1 で指定されたアイテムの数) |
xlBottom10Percent | 6 | 表示される最も低い値のアイテム (Criteria1 で指定されたパーセンテージ) |
xlFilterCellColor | 8 | セルの色 |
xlFilterDynamic | 11 | 動的フィルター |
xlFilterFontColor | 9 | フォントの色 |
xlFilterIcon | 10 | フィルター アイコン |
xlFilterValues | 7 | フィルターの値 |
xlOr | 2 | Criteria1 または Criteria2 の論理 OR |
xlTop10Items | 3 | 表示される最も高い値のアイテム (Criteria1 で指定されたアイテムの数) |
xlTop10Percent | 5 | 表示される最も高い値のアイテム (Criteria1 で指定されたパーセンテージ) |
サンプルコード
Sub autofilterTest() ActiveSheet.AutoFilterMode = False Range("$A$1:$B$10").AutoFilter _ Field:=1, _ Criteria1:=Array("101", "102", "105"), _ Operator:=xlFilterValues End Sub
解説
2行目でオートフィルタを実行前に解除します。
ActiveSheet.AutoFilterMode = False
6行目で「xlFilterValues」を指定して配列内の文字列を抽出条件としています。
Operator:=xlFilterValues
配列に格納した「101」「102」「105」のデータが想定通り抽出されました\(^o^)/
コメント