透2017/12/52019/4/28オートフィルタって使っていますか?VBAでオートフィルタを使うとExcelシート上の表で条件に当てはまるデータだけ表示することができて便利です。抽出されたデータの件数を取得する方法など応用的な内容についても解説していきます。まとめオートフィルタとはオートフィルタとは、Excelシート上の表で条件に当てはまるデータを表示し、他のデータは非表示にします。オートフィルタの使い方オートフィルタを使うためには、以下のように記述します。VisibleDropDown]]]])オブジェクト名には対象となるRangeオブジェクトを指定します。引数の使って条件を設定します。設定についての説明は以下の表のとおりです。フィルタの対象となるフィールド番号を整数で指定。抽出条件となる文字列を指定。指定すると、空白セルが抽出。指定すると空白以外のフィールドが抽出。省略すると、抽出条件はALL。引数Criteria1とCriteria2を使って複合条件でデータ抽出することができます。それではサンプルコードで確認しましょう。データを使用しています。※実際に動かしてみたい方は、以下にサンプルで使用するデータをCSV形式でおいておくので、csv形式で読み込んで使用してください。Sub[/code]画像:実行結果このサンプルコードでは、2列目の平均気温が25度以上のデータを表示するように設定しています。複数条件やで絞り込む方法And条件やOr条件など複数の条件で絞り込む場合は、引数Operatorの定数を指定します。Operator:x=xlAndと指定すると複数の条件をすべて満足するデータを表示します。Operator:x=xlOrと指定すると複数の条件のいずれかを満足するデータを表示します。それでは、サンプルコードで確認しましょう。Sub画像:実行結果このサンプルコードでは、2列目の平均気温が25度以上でかつ30度未満のデータを表示するように設定しています。文字列の一部分を含む条件でデータの絞り込みを行いたい場合は、ワイルドカードを使います。ワイルドカードとは、あるパターンにマッチするように表現した文字列のことです。「*」(アスタリスク)を使うと0文字以上の任意の文字を指定することができます。使い方をサンプルコードで確認しましょう。オートフィルタ適用後このサンプルでは、ワイルドカード文字「*」(アスタリスク)を使って「藤」を含む文字列に絞り込んで表示しています。ちなみに、ワイルドカードの使い方については、こちらで詳しく解説しています。ワイルドカードでは「*」(アスタリスク)や「?」を使いますが、これらの文字を含むパターンでデータを絞り込みたい場合の記述方法についても説明しています。解除する方法オートフィルタを解除するには、AutoFilterを引数なしで記述します。サンプルコードで確認しましょう。日付を条件とする場合は、注意が必要です。標準の日付の表示形式と同じ場合は、Excel2007以前とExcel2010以降で記述が異なります。Excel2007以前の場合は以下のように記述します。Criteria1:=DateValue("2017/8/1")Excel2010以降の場合は以下のように記述します。Criteria1:="2017/8/1"サンプルコードで確認しましょう。サンプルコードはExcel2016で実行結果を確認しています。Sub画像:実行結果このサンプルコードでは、8月10日から8月20日より前のデータを表示するように設定しています。抽出されたデータは可視セルですので、可視セルをコピーして貼り付けます。アクティブセル領域に対して、SpecialCellsメソッドで可視セルのみを選択します。サンプルコードで確認しましょう。抽出されたデータを昇順で並び替えるには、AutoFilterオブジェクトのSortプロパティを使用します。抽出されたデータの中でソートが行われます。サンプルコードで確認しましょう。Sub画像:実行結果このサンプルコードでは、平均気温のデータに対して25度以上30度以下の条件でデータの抽出を行っています。最高気温のデータで昇順にソートしています。オートフィルタが解除されても並び順は元に戻りませんので、注意しましょう!なお、オブジェクトのSortプロパティを使ってソートする方法については、こちらで詳しく解説しています。抽出されたデータの件数を取得する方法VBAでは、オートフィルタで抽出されたデータの件数を取得するプロパティやメソッドがありません。ここではExcelシートの数式で使用するワークシート関数のSABTOTAL関数を使う方法をご紹介します。Sub画像:実行結果ここでは、ワークシート関数のSABTOTAL関数を使って数値を含むセル数を取得しています。SABTOTAL関数は第1引数で、集計方法を整数値で指定します。以下のような集計が可能です。標本分散また、ワークシート関数の使い方については、こちらで詳しく解説していますので、ぜひ参考にしてください。2019年4月28日まとめここでは、オートフィルタの使い方について説明しました。表のデータの中から注目したいデータだけを抽出することができるので便利です。使いこなすことができるように、この記事を何度も参考にして下さいね!TweetPocket無料でSEからWebエンジニアへ転職しませんか?侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、システムエンジニアという職業だけどコードが書けない事務作業が多くスキルがないため将来が不安スクールに通うと完全未経験者と同じスタートになるからレベルが合わないという、すでに知識があるSEならではのお悩みがあることに気づきました。弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。こちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。熊本在住のフリープログラマ兼ライターです。C/C++/C#、Java、Python、HTML/CSS、PHPを使ってプログラミングをしています。専門は画像処理で最近は機械学習、ディープラーニングにはまっています。幅広くやってきた経験を活かしてポイントをわかりやすくお伝えしようと思います。お問合せはこちらでも受け付けています。