
『Microsoft Excel』(以下Excel、エクセル)の中の機能としてある[VBA] について基本的な説明をしていきます。
仕事の改善や個人的な知識向上に役立ててください(^o^)
第21回目の今回は
VBAでのオートフィルター機能
について解説していきますので、よろしくお願いします。
これまでのVBAに関する記事は、下記のINDEXを参照してくださいね。
↓サブログ内部リンク(VBA用INDEX)↓
-
-
目次
Excel VBA講座-目次(INDEX)
サブローExcel VBAに関する説明を今後増やして行く予定なので、各リンクに飛ぶような目次(INDEX)を作りました。 随時更新していくので、よろしくお願いします。 スラスラ読めるExcel VBA ...
続きを見る
「オートフィルター(AutoFilter)」メソッド
書式:オブジェクト.AutoFilter([Field],[Criteria1],[Operator],[Criteria2],[VisibleDropDown])
機能:オートフィルター機能を利用して、データを抽出します。
引数:
・オブジェクト(必須):抽出元となるデータ範囲をRangeオブジェクトで指定します。
・Field(省略可能):条件を指定する列がリストの左から何番目かを指定し、一番左を1とします。
定数 | 説明 |
xlAnd | 抽出条件1と抽出条件2をAND条件(両方を満たす)で指定します。 |
xlBottom10Items | 抽出条件1で指定される下位のレコードを抽出します。 |
xlBottom10Percent | 抽出条件1で指定される割合「%」の上位の値をもつレコードを抽出します。 |
xlFilterCellColor | セルの色を指定します。 |
xlFilterDynamic | 動的フィルタ(抽出条件 1 に、XlDynamicFilterCriteria 列挙型 の定数を指定します) |
xlFilterFontColor | フォントの色を指定します。 |
xlFilterIcon | フィルタアイコンを指定します。 |
xlFilterValues | フィルタの値を指定します。 |
xlOr | 抽出条件1または抽出条件2をOR条件で指定します。(いずれかを満たす) |
xlTop10Items | 抽出条件1で指定される上位のレコード数抽出します。 |
xlTop10Percent | 抽出条件1で指定される割合「%」の下位のレコードを抽出します。 |
・Criteria1(省略可能):抽出条件を指定します。(クライテリア1)「=」で空白セルが抽出され、「<>」で空白以外を抽出します。下記参照)
抽出条件 | 記述方法 |
---|---|
Aと等しい | “A” |
Aと等しくない | “<>A” |
Aを含む | “*A*” |
空白セル | “=” |
空白以外のセル | “<>” |
10よりおおきい | “>10” |
10以上 | “>=10” |
10より小さい | “<10” |
10以下 | “<=10” |
・Operator(省略可能):抽出条件の指定方法を指定します。
・Criteria2(省略可能):2つ目の抽出条件を指定します。(クライテリア2)
・VisibleDropDown(省略可能):フィルターボタンを表示する場合はTrue、表示しない場合はFalseを指定します。省略した場合は、フィルターボタンが表示される。フィルターボタンを非表示にすると、ユーザーがオートフィルターを操作できない状態にして抽出結果を表示できます。
<コード例>
Sub sample1() 'B列の中から"A"に一致するデータを抽出
Range("A1").AutoFilter Field:=2, Criteria1:="A"
End Sub
Sub sample2() 'C列の中から1以上5未満の条件に一致するデータを抽出
Range("A1").AutoFilter Field:=3, Criteria1:="<5", Operator:=xlAnd, Criteria2:=">=1"
End Sub
Sub sample3() 'C列の中から上位10番のデータを抽出
Range("A1").AutoFilter Field:=3, Operator:=xlTop10Items
End Sub
「オートフィルター(AutoFilter)」のクリア
フィルターの絞り込みをクリアするには「ShowAllDataメソッド」を使用します。 「ShowAllDataメソッド」を使用してクリアする場合、オートフィルタが設定されていない場合、また絞り込みがされていない場合はエラーが発生します。それを避けるために下記のコード例のように「FilterMode」で絞り込みがされているか判定してからクリアするようにします。
<コード例>
Sub showdata()
If ActiveSheet.FilterMode = True Then'もしフィルターモードになっていれば・・・・
ActiveSheet.ShowAllData’フォリターをクリアし、全表示にする
End If
End Sub

下のVBA講座も是非ご覧下さい!!
関連
前回のVBA講座(第20回)
関連
次回のVBA講座(第22回)