関数・メソッド

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

AdvancedFilterメソッド

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

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

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

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

 

サンプルコード

以下を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の「個数」が一致しています。

 

関連記事

 

コメント

タイトルとURLをコピーしました