VBAを使って、Excel上のフィルタをかける方法のご紹介です。
フィルタのオン/オフ
セル範囲にフィルタをかける/解除する
対象.autofilter
対象.autofilter

まずはフィルタをオンにする方法です。

通常範囲にフィルタをかける場合、セルを選択してホームタブ→並べ替えとフィルタ→フィルタをクリックしますが……。

これをVBAで行う場合、range(“A1:D7”).autofilterのように記述します。
※フィルタ範囲は自動で表全体に広がるので、range(“A1”)などでも同じ結果になる。
※フィルタ範囲は自動で表全体に広がるので、range(“A1”)などでも同じ結果になる。

マクロを実行すると、表に対してフィルタが適用されました。

▼をクリックすると、条件で内容を絞ることができることが確認できます。

再度同じ範囲にマクロを実行する(または並べ替えとフィルタ→フィルタをクリックする)ことで、フィルタを解除することができます。
フィルタによる絞り込み
セル範囲にフィルタをかけ、条件で絞り込む
対象.autofilter 列番号 条件
対象.autofilter 列番号 条件

フィルターをかけた上で、条件による絞り込みを行ってみます。
左から1列目を「男性」で絞り込む場合、range(“A1:C7”).autofilter 1 “男性”と記述します。
左から1列目を「男性」で絞り込む場合、range(“A1:C7”).autofilter 1 “男性”と記述します。

実行すると無事条件が実行されました。列番号を抜かすとエラーになります。

上の列番号と抽出条件は、正式に言えばAutoFilterメソッドのFieldとCriteria1という引数を指定しています。Fieldが列でCriteria1が条件です。
必要なければ覚えなくていいんですが、引数名:=値という形式での指定も可能で、その場合range(“A1:C7″).autofilter field:=3,criteria1:=”会社員”のような記述になります。
必要なければ覚えなくていいんですが、引数名:=値という形式での指定も可能で、その場合range(“A1:C7″).autofilter field:=3,criteria1:=”会社員”のような記述になります。
※Fieldのような名前付き引数を覚えると、引数の順番を変えても実行できる、必要な引数だけを指定できる、後から見てわかりやすいなどのメリットがある……とされてます。
ただ個人的には、普通に省略して順番に書いたほうが見やすいと思います。

で、上の式を実行すると「男性」だけが表示された状態で「会社員」で絞るので、女性の会社員は表示されない表になります。

もし1列目の絞り込みを解除したい場合は、range(“A1:C7”).autofilter 1を実行します。列数を省略(autofilterのみで実行)すると、フィルター自体が解除されます。

性別による縛りが解除され、会社員が全て表示されました。
フィルタの矢印をオン/オフする

もし名前付き引数を使わない場合、たとえばrange(A1:C7).autofilter 1, , , , falseのように記述します(もちろん条件などを指定してもOKです)。falseで隠し、trueで表示します。
Autofilterメソッドの使い方については以上です。

やりたいことから方法を探すエクセル(Excel)操作・関数・VBA(マクロ)逆引きまとめ
逆引き(やりたいことから探す)Excel記事まとめ

関数・演算子・メソッド・プロパティ名から探すExcel/VBA(マクロ)使い方・組み合わせ方まとめ
こちらはExcelやメソッドの諸機能を、機能の名称から探せるまとめ記事です。
コメント