必要な項目列を指定した順番で別シートに抽出する
フィルターオブションの設定を使用すればさまざまな条件を指定してデータを抽出することができます。
フィルターオプションの設定では、ワークシート上に作成した条件を元に、データを抽出できるためいろいろな条件を自由に設定できます。
AdvancedFilter【アドバンスドフィルター】メソッド
指定した項目列のデータをフィルターオプションの設定で抽出するには、Range【レンジ】オブジェクトのAdvancedFilter【アドバンスドフィルター】メソッドを使用します。
AdvancedFilter【アドバンスドフィルター】メソッドの書式と設定値の説明
[]内は省略可能です。
オブジェクト.AdvancedFilter( Action[, CriteriaRange, CopyToRange, Unique] )
- オブジェクト(必須)
Range【レンジ】オブジェクトを指定します。抽出元となるセル範囲を指定します。単一セルを指定した場合は、そのセルを含むアクティブセル領域が対象になります。 - Action【アクション】(必須)
抽出先をxlFilterAction列挙型の定数で指定します。xlFilterAction列挙型の定数 定数 値 内容 xlFilterInPlace
【フィルターインプレイス】1 抽出元のデータを折りたたんで表示します。 xlFilterCopy
【フィルターコピー】2 引数CopyToRangeで指定したセル範囲にデータを
コピーして抽出します。 - CriteriaRange【クライテリアレンジ】(省略可)
ワークシート上に作成した抽出条件範囲を指定します。省略した場合は、抽出条件なしとみなされます。 - CopyToRange【コピートゥレンジ】(省略可)
引数ActionがxlFilterCopyのときに有効になり、抽出先となるセル範囲を指定します。(上記設定の場合は必須です。) - Unique【ユニーク】(省略可)
重複しているデータを抽出しない場合はTrueを指定します。省略した場合は、重複しているデータも抽出します。
ShowAllData【ショーオールデータ】メソッド
AdvancedFilter【アドバンスドフィルター】メソッドで引数Action【アクション】がxlFilterInPlaceの場合(元データに抽出データを折りたたんで表示する場合)にフィルターモードを解除してすべてのデータを表示するにはWorkSheet【ワークシート】オブジェクトのShowAllData【ショーオールデータ】メソッドを使用します。
フィルターモードでないときにShowAllData【ショーオールデータ】メソッドを実行するとエラーになるのでフィルター実行状態を取得するFilterModeプロパティがTrue(フィルターモード)であることを確認してからShowAllData【ショーオールデータ】メソッドを使用します。
ShowAllData【ショーオールデータ】メソッドの使用例
Sub フィルター解除() If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData End If End Sub
使用例として、A1セルから始まる、日別各店売上データから抽出したい項目列見出しを抽出シートに入力してデータを抽出するコード例をご紹介します。
元データ
抽出先シート
(元データの抽出項目見出しをコピーすれば間違いなく抽出できます。項目列の順番は自由に設定できます。)
必要な項目列を指定した順番で別シートに抽出するコードと解説
Sub 項目列抽出() Sheets("抽出").Select Sheets("日別各店売上").Range("A1").CurrentRegion.AdvancedFilter _ Action:=xlFilterCopy, CopyToRange:=Range("A1:C1") End Sub
データを抽出するシート「抽出」をSelect【セレクト】メソッドで選択(アクティブ)にします。
3行目~4行目【Sheets(“日別各店売上”).Range(“A1”).CurrentRegion.AdvancedFilter _
Action:=xlFilterCopy, CopyToRange:=Range(“A1:C1”)】
元データがある「日別各店売上」シートのデータ範囲をCurrentRegion【カレントリジョン】プロパティで参照してAdvancedFilter 【アドバンスドフィルター】メソッドを使用して抽出シートに指定した項目列のデータを抽出シートに抽出します。
実行後
以上で、必要な項目列を指定した順番で別シートに抽出するについての解説を終了します。ありがとうございました。