こんにちは、フリーランスエンジニア兼ライターのワキザカ サンシロウです。
皆さんは、VBAでフィルターを使ったことがありますか?フィルターを使うと、お手軽にデータを絞り込むことができるので便利ですよね。
ただ、既にフィルターが設定されているときは意図しない動きになってしまうときがあります。そこで今回は、
- フィルターとは
- オートフィルターの解除方法
といった基礎的なことから、オートフィルターの状態によって解除・設定をわける方法や、オートフィルターの絞り込みをクリアする方法といった応用的な方法まで、徹底的に解説します!
フィルターとは
はじめに、フィルター機能について簡単に解説します。Excelでは次のようにデータに対してフィルターを付けることで、データを絞り込むことができます。
この例では、フィルターを設定した後、得意言語を「Ruby」で絞り込んで表示しています。このように、データを簡単に絞り込むことができるのがフィルター機能の特徴です。
VBAでフィルターを設定する場合は、AutoFilterメソッドを使って以下のように書きます。
AutoFilterメソッドの使い方:
Range(セル範囲).AutoFilter Field:=絞り込む列番号, Criteria1:=絞り込む文字列
言葉だけではわかりづらいので、実際に動くサンプルを用意しました。
サンプルコード:
Sub Test() Range("A1:C6").AutoFilter Field:=3, Criteria1:="VBA" End Sub
3列目の得意言語を「VBA」で絞り込んだサンプルです。「Field:=3」で3列目、「Criteria1:=”VBA”」で絞り込み条件を「VBA」にしています。
このように簡単にデータを絞り込むことができるので、「特定のデータのみCSVファイルに出力する」ような、データを絞り込む処理をVBAで入れたいときはとても便利です。
VBAでオートフィルターを設定する方法については以下で詳しく解説しているので、気になる方は見てみてくださいね!
オートフィルターを解除する方法とは
ここまでオートフィルターの設定方法について解説してきましたが、データを追加した後にフィルターを再設定したいときもありますよね。そのため、フィルターの解除方法も合わせて覚えておくのがおすすめです!
フィルターを解除する場合は、AutoFilterメソッドを引数なしで使います。
フィルターを解除するコード:
Sub Test() Range("A1:C6").AutoFilter End Sub
このように、フィルターを簡単に解除することができます。
絞り込みをクリアする方法とは
フィルターの解除ではなく、絞り込み結果のみクリアしたいときもありますよね。絞り込みをクリアするためには、ShowAllDataメソッドを使って次のように書きます。
サンプルコード:
Sub Test() Activesheet.ShowAllData End Sub
このように、簡単に絞り込みをクリアすることができます。ShowAllDataメソッドを使って一度データを全て表示した後、フィルターの条件を変えてデータ取得するケースは多いので、覚えておくと便利です。
オートフィルターの状態に応じてフィルター設定・クリアをわける方法とは
ここまでオートフィルターの設定方法・解除方法・絞り込みクリア方法について解説してきました。
ただ、フィルターの設定状態を意識せずにコードを書くと、フィルターを設定しようとしたときに解除してしまったり、クリアしようとしたときにフィルター設定がなくエラーになってしまったり、意図しない動きになってしまうときがあります。
そのため、オートフィルターの状態によって処理をわけるのがおすすめです!オートフィルターの状態は、AutoFilterModeプロパティを使って次のように確認します。
使い方:
Sub Test() 'フィルター設定 Range("A1:C6").AutoFilter Field:=3, Criteria1:="VBA" 'フィルター状態によって処理分岐 IF ActiveSheet.AutoFilterMode = True Then Debug.Print "フィルター設定済み" ElseIF ActiveSheet.AutoFilterMode = False then Debug.Print "フィルター未設定" End If End Sub
フィルター設定解除・絞り込みクリアはフィルターが設定されていたときの処理に書き、フィルターの設定はフィルターが設定されていないときの処理に書くことで、想定通りの動きになります。
このように、フィルターの条件を意識して処理を作るのがおすすめです!
まとめ
今回は、VBAでオートフィルターを設定・クリア・解除する方法について解説しました!データをたくさん使うExcelだからこそ、フィルターはよく使います。絞り込みのクリア・オートフィルター解除・フィルター再設定などよく使う操作は覚えておくのがおすすめです。
どれも使い方は簡単なので、ぜひ使ってみてくださいね!