例文を使って繰り返し業務を時短

【マクロ・VBA】オートフィルタ(AutoFilter)を設定する

エクセル、マクロ、VBAでオートフィルタを設定する方法 VBA

オートフィルタの設定を行う手順

  • 対象となるテーブルの範囲を選択する
  • オートフィルタを有効にする
  • オートフィルタの設定を行う
Sub SetAutoFilter()
    '1. 対象となるテーブルの範囲を選択する
    Dim TargetRange As Range
    Set TargetRange = Range("A1:D10")
    
    '2. オートフィルタを有効にする
    TargetRange.AutoFilter
    
    '3. オートフィルタの設定を行う
    TargetRange.AutoFilter Field:=1, Criteria1:=">=100"
End Sub

この例では、対象となるテーブルの範囲をTargetRangeに指定しています。次に、AutoFilterメソッドを使用して、オートフィルタを有効にします。

最後に、AutoFilterメソッドの引数にFieldCriteria1を指定して、オートフィルタの設定を行います。Fieldは、フィルタを設定する列のインデックス(1から始まる)を指定します。Criteria1は、フィルタの条件を指定します。

この例では、1列目にフィルタを設定して、100以上の値を抽出しています。

オートフィルタの設定には、他にも様々なオプションがあります。詳細は、VBAヘルプファイルを参照してください。

オートフィルタ

Sub オートフィルタ()

ActiveSheet.Cells.AutoFilter Field:=1

End Sub

オートフィルタ(パート2)

Sub 表の範囲取得_オートフィルタ()

Dim my_array As Variant
Dim s_row, s_col As Long
Dim max_row, max_col As Long

s_row = 1
s_col = 1

max_row = ThisWorkbook.ActiveSheet.Cells(Rows.Count, s_col).End(xlUp).Row
max_col = ThisWorkbook.ActiveSheet.Cells(s_row, Columns.Count).End(xlToLeft).Column

Set my_array = Range(Cells(s_row, s_col), Cells(max_row, max_col))

my_array.Select

Selection.AutoFilter Field:=1

MsgBox "完了"
End Sub

<表の選択>

  • ActiveSheet.UsuedRange.Select
  • ActiveSheet.Rage(“A1”).CurrentRegion.Select

範囲指定してオートフィルタを実行

Sub 範囲指定してオートフィルタ()
 
Dim LastCell As Range
Set LastCell = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).End(xlToRight)

LastCell.AutoFilter Field:=1, Criteria1:="2"

Dim Result As Long
Result = WorksheetFunction.Subtotal(3, Range("A:A"))

MsgBox "完了" & vbLf & vbLf & Result - 1 & "件"
End Sub

オートフィルタで抽出後、新規シートに貼付け

Sub フィルタ()
    
    ActiveSheet.Range("A1").AutoFilter 1, "*東京*"
 
    ActiveSheet.Range("A1").CurrentRegion.Copy
    Worksheets.Add(After:=ActiveSheet).Name = ActiveSheet.Name & "_" & VBA.Format(Now(), "h時mm分ss秒")
    ActiveSheet.Paste
  
    ActiveSheet.Range("A1").CurrentRegion.Copy ActiveSheet.Range("A1")
    Range("A1").Select
    
    MsgBox "完了 "
End Sub

ダミーデータのダウンロード

オートフィルタ/色で抽出

Sub オートフィルタ_色抽出()

ActiveSheet.Range("A1").AutoFilter Field:=1, Criteria1:=RGB(255, 255, 0), Operator:=xlFilterCellColor

End Sub
  • グレー :RGB(192,192,192)
  • ブルー :RGB(204,255,255)
  • イエロー:RGB(255,255,204)
  • グリーン:RGB(204,255,204)

オートフィルタ/期間で抽出

Sub 期間抽出()
  ActiveSheet.AutoFilterMode = False
  
  Dim 期間1 As String
  Dim 期間2 As String
  期間1 = InputBox("データ抽出開始日を入力してください。(2017/1/1形式で入力)")
  期間2 = InputBox("データ抽出終了日を入力してください。(2017/1/1形式で入力)")
  
  Range("A1").AutoFilter Field:=4, _
  Criteria1:=">=" & 期間1, _
  Operator:=xlAnd, _
  Criteria2:="<=" & 期間2
    
  ActiveSheet.Range("A1").CurrentRegion.Copy
  Worksheets.Add(After:=ActiveSheet).Name = ActiveSheet.Name & "_" & VBA.Format(Now(), "h時mm分ss秒")
  ActiveSheet.Paste
  Range("A1").Select
     
  ActiveSheet.AutoFilterMode = False
  MsgBox "完了 "
End Sub

ダミーデータのダウンロード

コメント

タイトルとURLをコピーしました