オートフィルターを頻繁に使うとき、エクセルの一般機能よりフィルター抽出するとだんだん面倒だな、と感じることがあります。
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」をクリックします。
完成です。
「含む」以外の抽出条件の場合をオプションボタンで選択する方法を別記事で載せます。