Excel VBAでデータを抽出する方法:AutoFilter

大量のデータから必要なものを抽出するにはAutoFilterを用います。

AutoFilterの使い方

データの抽出はExcelの作業の中でも頻度の高い作業です。AutoFilterの構文は下記のとおりです。

Object .AutoFilter ([Field:],[Criteria1:],[Operator:],[Criteria2:],[VisibleDropDown:])
  • Object:Rangeオブジェクトを指定します。
  • Field:左から何番目の列で実行するか、数値で示します。省略可能で、省略した場合、1番左の列(デフォルトのA列)で実行されます。
  • Criteria1:抽出条件を指定します。以下に記入例を示します。
記入例 解説
"*ABC" ABCを含む
"<>ABC" ABC以外
"<>*ABC" ABCを含まない
"=10" 10
">10" 10より大きい
"<=10" 10以下
"<>10" 10以外
"" 空白セル
"<>" 空白セル以外
  • Operator:省略可能で、省略した場合、XlAnd(Crieria1とCriteria2の積集合)となります。主なものを以下に紹介します。
xlAnd Criteria1かつCriteria2
xlOr Criteria1またはCriteria2
xlTop10Items 上から10番目まで
xlBottom10Items 下から10番目まで
xlTop10Percent 上位10%
xlBottom10Percent 下位10%
  • Criteria2:Criteria1に加えて条件がある場合、記入します。
  • VisibleDropDown:TrueまたはFalseを記入します。Trueはフィルタの矢印を表示、Falseは非表示にします。省略した場合はTrueとなります。

使用例

色々な抽出例を紹介します。

'B列の中から値100以上のデータを抽出
Sub AutoFilter_test1()
    Range("A1").AutoFilter Field:=2, Criteria1:=">100"
End Sub
'C列から80以上120以下のデータを抽出 
Sub AutoFilter_test2() 
    Range("A1").AutoFilter Field:=3, Criteria1:="=<120", _ 
                         Operator:=xlAnd, Criteria2:=">=80" 
End Sub
'F列中から上位10個のデータを抽出して、別のシートにコピーする 
Sub AutoFilter()
    With Sheets("Sheet1").Range("A1")
        .AutoFilter Field:=6, Operator:=xlTop10Items
        .CurrentRegion.Copy Sheets("Sheet2").Range("A1") 
    End With
End Sub

購読

平日・毎朝更新中