Excel VBAでボタン一発オートフィルター
エクセルの「オートフィルタ」は、ワークシートのデータリストから特定の条件を満たすデータを絞り込んで抽出し、表示する機能です。
データが大きいとその中から条件に合うものを見つけるのは大変ですが、この機能を使えば簡単に抽出することができます。
今回はこの機能をVBAを使ってボタン一発で実行できるサンプルアプリを紹介します。
オートフィルタを設定するサンプルアプリの説明
「オートフィルタ設定」ボタンをクリックするとBクラスまたはCクラスの生徒で国語、英語、数学の点数が60点から80点未満にある生徒を抽出します。
「オートフィルタ解除」ボタンでフィルタを解除できます。
サンプルアプリのソースコード コードの作成手順はこちら
「オートフィルタ設定」ボタンのソースコード
Sub ボタン1_Click()
'ワークシートを指定する
Dim Sh1 As Worksheet
Set Sh1 = ThisWorkbook.Worksheets("Sheet1")
'変数を定義する
Dim workEndR1
'データの最終行を取得する
workEndR1 = Sh1.Cells(Rows.Count, 2).End(xlUp).Row
'オートフィルター範囲を指定する
Dim Rng1 As Range
Set Rng1 = Range(Sh1.Cells(5, 2), Sh1.Cells(workEndR1, 8))
'オートフィルターの設定
With Rng1
'2列目が「B」又は「C」となっているデータを指定
.AutoFilter Field:=2, Criteria1:="=B", Operator:=xlOr, Criteria2:="=C"
'5列目、6列目、7列目が 60 以上 又は 80 未満となっているデータを指定
.AutoFilter Field:=5, Criteria1:=">=60", Operator:=xlAnd, Criteria2:="<80"
.AutoFilter Field:=6, Criteria1:=">=60", Operator:=xlAnd, Criteria2:="<80"
.AutoFilter Field:=7, Criteria1:=">=60", Operator:=xlAnd, Criteria2:="<80"
End With
End Sub
「オートフィルタ解除」ボタンのソースコード
Sub ボタン2_Click()
'ワークシートを指定する
Dim Sh1 As Worksheet
Set Sh1 = ThisWorkbook.Worksheets("Sheet1")
'変数を定義する
Dim workEndR1
'データの最終行を取得する
workEndR1 = Sh1.Cells(Rows.Count, 2).End(xlUp).Row
'オートフィルター範囲を指定する
Dim Rng1 As Range
Set Rng1 = Range(Sh1.Cells(5, 2), Sh1.Cells(workEndR1, 8))
'オートフィルターが有効となっているか無効となっているか確認する
If (ActiveSheet.AutoFilterMode = False) Then
Exit Sub
End If
'オートフィルターが有効となっている場合オートフィルターを無効にする
Rng1.AutoFilter
End Sub
Range.AutoFilter メソッドの説明
Range(セル範囲).AutoFilter Field:= 絞り込む列番号, Criteria1:= 絞り込む文字列
例:
Range(“A1″).AutoFilter Field:=1, Criteria1:="田中", Operator:=xlOr, Criteria2:="佐藤"
Range(“A1″).AutoFilter Field:=2, Criteria1:=">=25″
引数の説明
引数 | 定数 | 説明 |
Field | – | フィルタの対象となるフィールド番号を整数で指定。 表の左端列が「1」 |
Criteria1 | – | 抽出条件となる文字列を指定。 “=" と指定すると、空白セルが抽出。 “" と指定すると空白以外のフィールドが抽出。 省略すると、抽出条件はALL。 |
Operator | xlAnd | And条件 |
xlOr | Or条件 | |
xlTop10Items | 上位トップ10 | |
xlBottom10Items | 下位ワースト10 | |
xlTop10Percent(5) | 上位トップ10% | |
xlBottom10Percent(6) | 下位ワースト10% | |
Criteria2 | – | 2 番目の抽出条件となる文字列を指定 |
VisibleDropDown | TRUE | フィールドにドロップダウン矢印を表示 |
FALSE | フィールドにドロップダウン矢印を非表示 |
フィルターを解除する場合は、AutoFilterメソッドを引数なしで使います。
Range.AutoFilter
フィルターの解除ではなく、絞り込み結果のみクリアしたいときはShowAllDataメソッドを使います。
Activesheet.ShowAllData
ディスカッション
コメント一覧
まだ、コメントがありません