オートフィルタでデータを絞り込む
動画でExcelマクロ解説
AutoFilterの使い方(1)
動画版「3行マクロオートフィルターでデータを絞り込む」です。
今回はオートフィルターを使って大量のデータから 必要なデータだけを絞り込む マクロを作成します。 また フィルターを解除するマクロや、 絞り込んだ データをコピーして別のセルに貼り付けるマクロも作成しましょう。このようにマクロで絞り込みを行うには RangeオブジェクトのAutoFilter メソッドを使います。
(サンプルファイルは、こちらです。 オートフィルターでデータを絞り込む、時短激うまExcelの3行マクロ~すぐに使えるミニマクロ41回サンプル)
AutoFilter(オートフィルタ)メソッドでデータの絞り込み
AutoFilter(オートフィルタ)メソッドとは
オートフィルタはExcelのデータベース機能として重要な役割を担っています。
VBAでもシンプルなコードで手軽に利用でき、マクロを作成することで必要なデータを絞り込んだりすることが自動化できます。
構文は、
Range.AutoFilter(Field, Criteria1, Operator, Criteria2, VisibleDropDown)
-
サンプルの表を使って、AutoFilterメソッドでデータを絞りこみましょう。autofilter は RANGE オブジェクトのメソッドなので、親オブジェクトとして範囲を指定してやります。サンプルのように一つの
セルを指定した場合は、そのセルを含む範囲と解釈されます。 -
次に引数を指定してやります。半角スペースを空けて第一引数のフィールドFieldを入力してやります。
次にそのフィールドの中で何を探すかということで、 criteria1 のとして”金井*”を探します。 -
コードを実行すると金井という苗字の人が抽出されました。
-
オートフィルターを解除するには、
ActiveSheet.AutoFilterMode = False
または、もう一度オートフィルターメソッドを今度は引数なしで実行します。
ActiveSheet.Range("A1").AutoFilter -
AutoFilterメソッドの構文を再び確認しましょう。AutoFilterメソッドには必須の引数はありません。
オートフィルターを解除する
こちらはAutoFilterメソッドの構文で使われる引数の詳しい解説です。
名前 | 必須 | データ型 | 説明 |
---|---|---|---|
Field | 省略可能 | Variant | フィルターの対象となるフィールド番号を整数で指定します。フィールド番号は、リストの左側から始まります。つまり、最も左側にあるフィールドはフィールド番号 1 になります。 |
Criteria1 | 省略可能 | Variant | 抽出条件 ("101" などの文字列)。 空白のフィールドを検索するには "="、空白以外のフィールドを検索するには "<>"、データ型の (データなし) フィールドを選択するには "><" を使用します。 この引数を省略すると、抽出条件は All になります。 演算子 が xlTop10Items の場合は、Criteria1 に項目数を指定します (たとえば "10" など)。 |
演算子 | 省略可能 | XlAutoFilterOperator | フィルターの種類を XlAutoFilterOperator の定数で指定します。 |
Criteria2 | 省略可能 | Variant | 2 番目の抽出条件となる文字列を指定します。 Criteria1 および Operator と組み合わせて使い、複合抽出条件を構築します。 日、月、または年によってフィルター処理する日付フィールドでの単一条件としても使用されます。 その後には 配列 (レベル、日付) のフィルター処理の詳細を示す配列が続きます。 レベルが 0-2 (年、月、日) の場合は、日付はフィルター処理の期間の中にある 1 つの有効な日付です。 |
SubField | Optional | Variant | 抽出条件を適用するデータ型のフィールド (たとえば、地理学の [人口] フィールド、または株価の [量] フィールド)。 この値を省略すると、"(表示値)" が対象になります。 |
VisibleDropDown | 省略可能 | Variant | True を指定すると、フィルター処理されるフィールドのオートフィルターのドロップダウン矢印を表示します。 False を指定すると、抽出されるフィールドのオートフィルターのドロップダウン矢印を非表示にします。 既定値は True です。 |
オートフィルタで抽出したデータを別のセルにコピーする
-
今度はフィールドを6番目に設定して抽出条件を千葉県にします。
さらにその抽出された範囲を同じシートのL 2セルに貼り付けることにしましょう。
オートフィルタで抽出したデータを別のセルにコピーします。
ActiveSheet.Range("B2").CurrentRegion. _
Copy Destination:=Range("L2")Sub AutoFilterTest3() ActiveSheet.Range("B2").AutoFilter Field:=6, Criteria1:="千葉県" ActiveSheet.Range("B2").CurrentRegion.Copy Destination:=Range("L2") ' ActiveSheet.AutoFilterMode = False End Sub
-
抽出して転記するのが目的で、元データの方のオートフィルターは解除してもよいという場合は、コメントアウトを外して実行してください。