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

スポンサーリンク
スポンサーリンク

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

データに項目列見出しがある場合
Rangeオブジェクトの
AdvancedFilter【アドバンスドフィルター】メソッドを使用して
指定した項目列のデータを抽出することができます。

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 【アドバンスドフィルター】メソッドを使用して
抽出シートに指定した項目列のデータを抽出シートに抽出します。


実行後


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

スポンサーリンク
スポンサーリンク

フォローする

スポンサーリンク
スポンサーリンク