スライドショー

【VBA入門】オートフィルターを設定・解除する方法を徹底解説!

こんにちは、フリーランスエンジニア兼ライターのワキザカ サンシロウです。

皆さんは、VBAでフィルターを使ったことがありますか?フィルターを使うと、お手軽にデータを絞り込むことができるので便利ですよね。

ただ、既にフィルターが設定されているときは意図しない動きになってしまうときがあります。そこで今回は、

  • フィルターとは
  • オートフィルターの解除方法

といった基礎的なことから、オートフィルターの状態によって解除・設定をわける方法や、オートフィルターの絞り込みをクリアする方法といった応用的な方法まで、徹底的に解説します!

フィルターとは

はじめに、フィルター機能について簡単に解説します。Excelでは次のようにデータに対してフィルターを付けることで、データを絞り込むことができます。

画像:フィルター設定前

画像:フィルター設定後

画像:得意言語「Ruby」で絞り込み後

この例では、フィルターを設定した後、得意言語を「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でオートフィルターを設定する方法については以下で詳しく解説しているので、気になる方は見てみてくださいね!

【VBA入門】オートフィルタでデータ抽出(データのコピー、ソート)
更新日 : 2019年4月28日

オートフィルターを解除する方法とは

ここまでオートフィルターの設定方法について解説してきましたが、データを追加した後にフィルターを再設定したいときもありますよね。そのため、フィルターの解除方法も合わせて覚えておくのがおすすめです!

フィルターを解除する場合は、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だからこそ、フィルターはよく使います。絞り込みのクリア・オートフィルター解除・フィルター再設定などよく使う操作は覚えておくのがおすすめです。

どれも使い方は簡単なので、ぜひ使ってみてくださいね!

LINEで送る
Pocket

無料でSEからWebエンジニアへ転職しませんか?



侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、

  • システムエンジニアという職業だけどコードが書けない
  • 事務作業が多くスキルがないため将来が不安
  • スクールに通うと完全未経験者と同じスタートになるからレベルが合わない
という、すでに知識があるSEならではのお悩みがあることに気づきました。そんな方におすすめなのが、弊社の「転職コース 」です。

弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。さらにこちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。

既に知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。

まずは無料体験レッスンを予約する

書いた人

Sanshiro Wakizaka

Sanshiro Wakizaka

フリーランスエンジニア兼ライターのワキザカ サンシロウです。
ExcelVBAの自動化ツール開発、WEB開発をメインにエンジニア業務をこなしつつ、サムライエンジニアにてライター業務をしております。

プログラミングをこれからやってみたい方に向けて、ためになる記事を全力で書いていきますので宜しくお願い致します!

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説