Excel

VBAでオートフィルター抽出と解除を楽にする方法

オートフィルターを頻繁に使うとき、エクセルの一般機能よりフィルター抽出するとだんだん面倒だな、と感じることがあります。

VBAで少し簡単に抽出する方法です。

エクセルの一般機能の場合のオートフィルタ抽出と解除

B列「取引先」の文字列で「含む」の抽出をする場合の例です。例:「すずめ」を含むデータを抽出する。

フィルタ-

(1)データ範囲内を選択し(例えばセルA1)、リボン [ データ ] > [ 並べ替えとフィルター ] グループ > [ フィルター ] をクリックします。

フィルター

(2)取引先の右側の三角「▼」をクリックし、検索ボックスに「すずめ」と入力し、「OK」をクリックします。

オートフィルタ

「すずめ」を含むデータが抽出されました。

抽出結果

解除する場合は、リボン [ データ ] > [ 並べ替えとフィルター ] グループ > [ クリア ] をクリックします。

フィルター解除

抽出するデータが「含む」以外の場合は、テキストフィルターより選ぶ必要があり、更に手間がかかります。

テキストフィルター

エクセルVBAのオートフィルタ抽出と解除

最初に以下の設定をします。

(1)検索ボックスとコマンドボックスを設置するため、1行目~3行目に行を挿入します。

(2)セルB2に枠線を設定します。ここは抽出文字を入力するセルです。

抽出するデータ

サンプルコード

データ入力セル範囲と引数は省略しています。

抽出

「指定の値を含む」で抽出するコード例です。

Sub cmdChushutu()

    Dim cNo As Long
    Dim mName As String
    
    mName = Range("B2")
    mName = "*" & mName & "*"    
   
    Range("A4").AutoFilter 2, mName
End Sub

抽出条件は変数「mName」で指定しています。

引数を省略しない場合

Range("A4").AutoFilter Field:=2, Criteria1:=mName

  • 「Field」はフィルターの対象となるフィールド番号です。
  • 「Criteria1」は抽出条件です。

これ以外に以下の引数があります。

  • Operator:フィルターの種類をXlAutoFilterOperator列挙の定数で指定する
  • Criteria2:追加の抽出条件
  • VisibleDropDown:オートフィルターの矢印の表示・非表示の設定(True/False)で指定する

解除

解除のコード例です。

Sub cmdKaijo()
   ActiveSheet.AutoFilterMode = False
End Sub

シートにコントロールを設置する

シートにコントロールを設置するには2つの方法があります。

  • フォームコントロール
  • ActiveXコントロール

ここではフォームコントロールの方法で説明します。

(1)リボン [ 開発 ] > [ コントロール ] グループ > [ 挿入 ] > [ フォームコントロール ] より「ボタン」をクリックします。

フォームコントロール

(2)マクロの登録が表示されるので、「cmdChushutu」を選択します。

マクロの登録

(3)「OK」をクリックします。

マクロの登録

ボタンが設置されました。

ボタン

ボタンの文字の書式設定をする場合は、ボタンを選択した状態で右クリックより「コントロールの書式設定」を選択します。

コントロールの書式設定

(5)「抽出」と同じ方法で「解除」ボタンを設置します。

(4)マクロの登録が表示されるので、「cmdKaijo」を選択し、「OK」をクリックします。

マクロの登録

完成です。

ボタンの設置後

「含む」以外の抽出条件の場合をオプションボタンで選択する方法を別記事で載せます。

-Excel
-

© 2021 オフィスのQ&A