VBA入門
フィルターオプションの設定(AdvancedFilter)

ExcelマクロVBAの基本と応用、エクセルVBAの初級・初心者向け解説
公開日:2013年5月以前 最終更新日:2023-01-26

第90回.フィルターオプションの設定(AdvancedFilter)


ワークシートの操作「フィルターオプションの設定」のマクロVBAの記述になります。


便利な機能ではありますが、
そもそも、ワークシートの操作が難しいこともあり、あまり有効に使われていないように感じます。


フィルター詳細設定の使い方

「データ」タブ→「並べ替えとフィルター」グループの「詳細設定」

VBA マクロ フィルターオプション

この機能を使う場合のVBAになります。
フィルターオプションの設定を使うには、
RangeオブジェクトのAdvancedFilterメソッドを使います。


Range.AdvancedFilter メソッド

Range.AdvancedFilter(Action, CriteriaRange, CopyToRange, Unique)

Action

検索結果を他の範囲にコピーして抽出するか、
検索条件と一致する行だけを同じ選択範囲内に表示するかを、
XlFilterActionクラスの以下の定数のいずれかで指定します。
xlFilterCopy:フィルター処理したデータを新しい場所にコピーします。
xlFilterInPlace:データをそのままにします。

CriteriaRange 検索条件範囲を指定します。
省略すると、検索条件なしで抽出されます。
CopyToRange 引数 Action を xlFilterCopy に設定したときは、抽出された行のコピー先のセル範囲を指定します。
それ以外の場合、この引数は無視されます。
Unique True に設定すると、検索条件に一致するレコードのうち、重複するレコードは無視されます。
False に設定すると、重複するレコードも含めて、検索条件に一致するレコードがすべて抽出されます。
既定値は False です。


「フィルターオプションの設定」AdvancedFilterメソッドの使用例

条件で絞って必要な列のみをコピー

VBA マクロ フィルターオプション

VBA マクロ フィルターオプション

「成績表」シートの合格者について、「合格者」シートに転記します。
このとき、コピーする項目は氏名と必要な科目のみを、「合格者」シートの順番で出力します。

Sub sample()
  Worksheets("成績表").Columns("A:G").AdvancedFilter _
    Action:=xlFilterCopy, _
    CriteriaRange:=Worksheets("合格者").Range("A1:A2"), _
    CopyToRange:=Worksheets("合格者").Range("C1:F1")
End Sub

以下のように出力されます。
合格者が抽出され、かつ、"合格者"シートのC1:F1で指定された項目のみ出力されます。

VBA マクロ フィルターオプション


重複を削除してコピー

もっとも便利なのが、重複を削除して、コピーする場合でしょう。
以下に、サンプルコードを提示します。

Range("A1:A10").AdvancedFilter Action:=xlFilterCopy, _
    CopyToRange:=Sheets("Sheet2").Range("A1"), Unique:=True

A1セル~A10セルの重複を削除して、Sheet2へコピーしています。

重複を削除してユニークデータを作成する場合が最も重宝しますが、
その他にも、検索条件をししたり、いろいろな指定が可能です。

引数の指定が不明な場合は、、
マクロの記録で調べて、必要な引数をコピペで使うようにしてください。
ただし、ワークシートでの、この操作は少々難しいです

この機能に限った事ではありませんが、
ワークシートでの操作が出来ない場合は、基本的にはマクロも使用しない事です
重複削除しユニークデータ作成(フィルターオプションの設定)
エクセル作業においては、データの重複を排除して、ユニークなデータを作成する必要がある場合は多々あります。そのような時の操作として、以下の方法があります。・COUNTIF関数で重複を判定して削除 ・ピボットテーブルで重複を削除 ・重複の削除で重複を削除 ・フィルタの詳細設定(フィルターオプションの設定)で重複を削除 …
ワークシートでの操作方法については、しっかり習得してからお使いください。


フィルターオプションの設定の関連記事

重複削除してコピー(AdvancedFilter)
重複データを排除して、別シートにコピーする場合です。以下の表で説明します。フィルターオプションを使います。このマクロは、この指定と同じになりります。似たような方法ですが、コピー部分を自分で記述する場合です。
重複の無いユニークなデータ作成
簡単な例で シート「元データ」A列に、1行目に見出し、2行目以降にデータが入っている シート「ユニーク」このA列に、シート「元データ」のA列をユニーク(一意)にして取り出します。まずは、エクセルらしく、ワークシート関数とフィルターを使って 非常にエクセルらしい、素直な処理です。




同じテーマ「マクロVBA入門」の記事

第86回.総合練習問題10

・マクロVBA練習問題 ・シンキングタイム ・マクロVBA練習問題解答へ
第88回.並べ替え(Sort)
・Range.Sortメソッド・・・Excel2003までのソート ・2007以降の並べ替え ・Excel2003までのSortとExcel2007以降のSortの使い分け
第89回.オートフィルター(AutoFilter)
・Range.AutoFilterメソッド ・AutoFilterModeプロパティ ・AutoFilterオブジェクト ・オートフィルタのVBA使用例 ・日付のフィルタ ・オートフィルタまとめ
第90回.フィルターオプションの設定(AdvancedFilter)
第91回.条件付き書式(FormatCondition)
・FormatConditionsコレクション ・FormatConditionオブジェクト ・条件付き書式のマクロVBA実践例 ・マクロVBAの条件付き書式について
第126回.入力規則(Validation)
・Validationオブジェクト ・入力規則(Validation)の使用例 ・入力規則を設定しても無効データが入力されてしまう場合への対処
第92回.名前定義(Names)
・Namesコレクション ・Nameオブジェクト ・RangeオブジェクトのNameプロパティ ・名前定義を使ったRangeの書き方 ・シートコピー時は名前定義に注意 ・名前定義の実践例
第93回.ピボットテーブル(PivotTable)
・ピボットテーブル(PivotTable)を構成するオブジェクト群 ・Excel2010のピボットテーブル(PivotTable)のマクロ記録 ・Excel2003のピボットテーブル(PivotTable)のマクロ記録 ・Excel2010とExcel2003のピボットテーブルVBAの違いについて ・ピボットテーブル(PivotTable)のマクロVBA実践例
第94回.コメント(Comment)
・コメント(Comment)に関する各種オブジェクト ・コメント(Comment)の挿入 ・コメント(Comment)の削除 ・コメント(Comment)の編集 ・コメント(Comment)実践例
第95回.ハイパーリンク(Hyperlink)
・Hyperlinksコレクション ・Hyperlinkオブジェクト ・ハイパーリンクの追加 ・ハイパーリンクの削除 ・既に設定されているハイパーリンクの扱い方
第96回.グラフ(Chart)
・グラフ(Chart)関連のオブジェクト群 ・単純な棒グラフの作成 ・2軸グラフの作成と、グラフタイトルをA1セルにリンク ・マクロVBAでのグラフの扱いについて


新着記事NEW ・・・新着記事一覧を見る

ブール型(Boolean)のis変数・フラグについて|VBA技術解説(2024-04-05)
テキストの内容によって図形を削除する|VBA技術解説(2024-04-02)
ExcelマクロVBA入門目次|エクセルの神髄(2024-03-20)
VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)
累計を求める数式あれこれ|エクセル関数応用(2024-01-22)
複数の文字列を検索して置換するSUBSTITUTE|エクセル入門(2024-01-03)
いくつかの数式の計算中にリソース不足になりました。|エクセル雑感(2023-12-28)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.RangeとCellsの使い方|VBA入門
4.ひらがな⇔カタカナの変換|エクセル基本操作
5.繰り返し処理(For Next)|VBA入門
6.変数宣言のDimとデータ型|VBA入門
7.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
8.並べ替え(Sort)|VBA入門
9.セルのクリア(Clear,ClearContents)|VBA入門
10.Findメソッド(Find,FindNext,FindPrevious)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。


このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ