アクセス上位ページ
 
最近の更新内容
(6)-q.Find メソッド ⇐ [PREV]
[NEXT] ⇒ (6)-s.End プロパティ

Excel VBA ≫ 1.基礎編 - セル・レンジ(6)-r.AutoFilter メソッド

AutoFilter メソッド

表などに対して、ある条件でフィルタをかけたい場合、AutoFilter メソッドを使用します。 フィルタをかけると、フィルタの条件に合致した行だけ表示され、それ以外の行は非表示になります。 セルのHidden プロパティを使用することで表示された行だけを処理の対象とすることができます。



引数をすべて省略するとフィルタはかけずに、ドロップダウンの矢印のみ表示します。 ドロップダウンの矢印を表示すると、手動でフィルタをかけることができます。

AutoFilter を解除したい場合はワークシートの AutoFilterMode プロパティを使用してください。

  • 【構文】
    object.AutoFilter (
      [, Field] [, Criteria1] [, Operator] [, Criteria2] [, VisibleDropDown] )

  • 引数名 省略 定数/
    データ型
    説明
    Field Variant型 フィルタの対象となるフィールド番号を整数で指定します。フィールド番号は、リストの左側'1'から始まります。
    Criteria1 Variant型 抽出条件となる文字列を指定します。 "=" と指定すると、空白セルが抽出され、"<>" と指定すると空白以外のフィールドが抽出されます。 省略すると、抽出条件は All になります。
    Operator xlAnd 抽出条件 1 と抽出条件 2 の論理演算子 AND
    xlBottom10Items 表示される最低値項目 (抽出条件 1 で指定される項目数)
    xlBottom10Percent 表示される最低値項目 (抽出条件 1 で指定される割合)
    xlFilterCellColor セルの色
    xlFilterDynamic 動的フィルタ
    xlFilterFontColor フォントの色
    xlFilterIcon フィルタ アイコン
    xlFilterValues フィルタの値
    xlOr 抽出条件 1 または抽出条件 2 の論理演算子 OR
    xlTop10Items 表示される最高値項目 (抽出条件 1 で指定される項目数
    xlTop10Percent 表示される最高値項目 (抽出条件 1 で指定される割合)
    Criteria2 Variant型 2 番目の抽出条件となる文字列を指定します。 引数 Criteria1 および引数 Operator と組み合わせて使い、複合抽出条件を指定します。
    VisibleDropDown Variant型 True を指定すると、フィルタのフィールドにあるオートフィルタのドロップダウン矢印を表示します。 False を指定すると、ドロップダウン矢印を表示しません。 既定値は True です。

  • AutoFilter メソッドの使用例1
  • 1つの項目(列)に対して1つの条件でフィルタをかける例です。 以下の例では1月の売上が100万以上の行を表示します。
    Sub sample_b06h_01()
        With ActiveSheet
            'オートフィルター設定済を考慮して
            '一旦オートフィルターを解除
            .AutoFilterMode = False
    
            'ヘッダー行(3行目)に対してAutoFilterメソッドを使用し、
            '1月(Field=2)の売上が100万以上を表示
            .Rows(3).AutoFilter _
                Field:=2, _
                Criteria1:=">=100"
        End With
    End Sub
    

    <サンプルデータ> テストデータ
    <sample_b06h_01 実行結果> sample_b06h_01 実行結果
  • AutoFilter メソッドの使用例2
  • 1つの項目(列)に対して2つの条件(AND)でフィルタをかける例です。 以下の例では1月の売上が100万以上、200万未満の行を表示します。
    Sub sample_b06h_02()
        With ActiveSheet
            'オートフィルター設定済を考慮して
            '一旦オートフィルターを解除
            .AutoFilterMode = False
    
            'ヘッダー行(3行目)に対してAutoFilterメソッドを使用し、
            '1月(Field=2)の売上が100万以上かつ200万未満を表示
            .Rows(3).AutoFilter _
                Field:=2, _
                Criteria1:=">=100", _
                Operator:=xlAnd, _
                Criteria2:="<200"
        End With
    End Sub
    

    <サンプルデータ> テストデータ
    <sample_b06h_02 実行結果>
    sample_b06h_02 実行結果
  • AutoFilter メソッドの使用例3
  • 2つの項目(列)に対してそれぞれ1つの条件でフィルタをかける例です。 以下の例では1月と3月の売上がともに100万以上の行を表示します。
    Sub sample_b06h_03()
        With ActiveSheet
            'オートフィルター設定済を考慮して
            '一旦オートフィルターを解除
            .AutoFilterMode = False
    
            'ヘッダー行(3行目)に対してAutoFilterメソッドを使用し、
            '1月(Field=2)と3月(Field=4)の売上が
            'ともに100万以上を表示
            .Rows(3).AutoFilter _
                Field:=2, _
                Criteria1:=">=100"
    
            .Rows(3).AutoFilter _
                Field:=4, _
                Criteria1:=">=100"
        End With
    End Sub
    

    <サンプルデータ> テストデータ
    <sample_b06h_03 実行結果> sample_b06h_03 実行結果
  • AutoFilter メソッドの使用例4
  • 1つの項目(列)に対して1つの条件でフィルタをかける例です。 以下の例では1月の売上上位3つを表示します。

    ※原因不明の事象
    上位3つというフィルタ条件を指定して AutoFilter メソッドを実行すると原因不明のエラーが発生します。 以下の例では、一度引数なしで AutoFilter メソッドを実行してから、 再度フィルタ条件を指定して AutoFilter メソッドを実行することでこのエラーを回避しています。 この方法が正しいかどうかはわからず、このようにするとエラーが発生しないというものです。 何か原因がわかり次第、内容を更新したいと思います。

    Sub sample_b06h_04()
        With ActiveSheet
            'オートフィルター設定済を考慮して
            '一旦オートフィルターを解除
            .AutoFilterMode = False
    
            With .Rows(3)   'ヘッダーの行を指定すればok
                '一度オートフィルターだけ設定
                .AutoFilter
                '1月(Field=2)の売上上位3つを表示
                .AutoFilter _
                    Field:=2, _
                    Criteria1:="3", _
                    Operator:=xlTop10Items
            End With
        End With
    End Sub
    

    <サンプルデータ> テストデータ
    <sample_b06h_04 実行結果> sample_b06h_04 実行結果

カテゴリ内ページ



Page
Top