Excel VBA 必要な項目列を指定した順番で別シートに抽出する

スポンサーリンク

必要な項目列を指定した順番で別シートに抽出する

フィルターオブションの設定を使用すればさまざまな条件を指定してデータを抽出することができます。

フィルターオプションの設定では、ワークシート上に作成した条件を元に、データを抽出できるためいろいろな条件を自由に設定できます。

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
2行目Sheets(“抽出”).Select】
データを抽出するシート「抽出」をSelect【セレクト】メソッドで選択(アクティブ)にします。


3行目~4行目【Sheets(“日別各店売上”).Range(“A1”).CurrentRegion.AdvancedFilter _
Action:=xlFilterCopy, CopyToRange:=Range(“A1:C1”)】

元データがある「日別各店売上」シートのデータ範囲をCurrentRegion【カレントリジョン】プロパティで参照してAdvancedFilter 【アドバンスドフィルター】メソッドを使用して抽出シートに指定した項目列のデータを抽出シートに抽出します。

実行後


以上で、必要な項目列を指定した順番で別シートに抽出するについての解説を終了します。ありがとうございました。

スポンサーリンク

関連記事・広告