関数・メソッド

条件に合うデータを抽出して別の場所へコピーする【AdvancedFilterメソッド】【ExcelVBA】

AdvancedFilterメソッド

AdvancedFilter は抽出結果を別の場所にコピーすることができ、
AutoFilter よりも柔軟な絞り込み条件を設定することが可能です。

オートフィルタでは補えない複雑な条件や複数列抽出ができることが特徴です。

構文
Object.AdvancedFilter (ActionCriteriaRange, CopyToRange, Unique)

Object Range オブジェクトを表す変数です。
Action 検索結果を他の範囲にコピーするか、そのまま表示するかを指定します。
下記の XlFilterActionクラス定数 を使用します。
CriteriaRange 検索条件範囲を指定します。 省略すると、検索条件なしで抽出されます。
CopyToRange 抽出結果の貼り付け先です。Action でコピーを選んだときだけ必要です。
Unique Ture に設定すると条件に一致するデータのうち、重複するデータを省きます。
False は重複データも抽出されます。 既定値は False です。
XlFilterAction定数 説明
xlFilterCopy 2 抽出結果を新しい場所にコピーします。
xlFilterInPlace 1 抽出結果をそのまま表示します。

 

サンプルコード

以下をA1セルに貼り付けてください。

日付 担当者 個数 個数
1月1日 Aさん 50 >50
1月2日 Bさん 100
1月3日 Aさん 50
1月4日 Cさん 70
Public Sub Sample()
   Worksheets.Add.Name = "Sheet2"  '「Sheet2」を追加

  'C列の「個数」が50よりも大きいデータを絞り込み
  '「Sheet2」に抽出結果をコピーして貼り付ける
   Worksheets("Sheet1").Range("A1").CurrentRegion.AdvancedFilter _
       Action:=xlFilterCopy, _
       CriteriaRange:=Worksheets("Sheet1").Range("E1:E2").CurrentRegion, _
       CopyToRange:=Worksheets("Sheet2").Range("A1")
                         
End Sub

 

注意点

  • 上記サンプルコードでは、E1:E2に抽出条件を表記しています。
    抽出データと抽出条件の見出しが一致している必要があります。
    ※E1の「個数」と元データC1の「個数」が一致しています。

 

関連記事

 

コメント