【VBAスタンダードに挑戦!】
本日の5分勉強の内容
********************************************************
・セル. AutoFilter Field, Criteria, Operator, Criteria2
セル番地 | AutoFilter を設定する範囲のセル番地を指定する 特別な理由がなければ表の左上のセルを指定する |
Field | AutoFilter を設定する表の左から何列目かを指定する |
Criteria1 | 絞り込み条件1つ目 |
Operator | 2つ目の条件がある場合 Or/And を指定する |
Criteria2 | 絞り込み条件2つ目 |
・絞り込み条件が3つ以上になる場合は配列を使用し、
Operator に xlFilterValues を指定する
条件ひとつ
・ID列から「B」でフィルタリングする
Range("a1").AutoFilter Field:=1, Criteria1:="B"
「引数名 :=」を省略して記述できる
Range("a1").AutoFilter 1, "B"
条件2つ
・値段列から500円以上3000円未満でフィルタリングする
Range("a1").AutoFilter Field:=3, Criteira1:=">500", xlAnd, Criteira2:="<3000"
or
Range("a1").AutoFilter 3, ">500", xlAnd, "<3000"
条件3つ以上
・値段列から500円、700円、1000円でフィルタリングする
Dim Price(2) As String
Price(0) = "500"
Price(1) = "700"
Price(2) = "1,000"
Range("a1").AutoFilter 3, Price, xlFilterValues
※数字で入力していても String で定義しないと成功しませんでした。
Price(2) = "1,000"のように、数字に「桁区切りスタイル」を設定した場合、
カンマも指定する必要があるようです。 (私のPCだけ?)
テキストには記載しておりませんでしたが、
AutoFilterのコードは、
「2つまで条件を指定でき、ひとつの列に対して実行する」
ようです。
なので、複数列に適用したい場合は、それぞれの列に対して
一行記述が必要で、実行する順番も考慮する必要があるようです。
2つ目の AutoFilter は1つ目の AutoFilter の結果に対して実行するので。
・・・
よくよく考えると、手動でフィルタリングするのと同じですね。
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/