オートフィルタの設定を行う手順
- 対象となるテーブルの範囲を選択する
- オートフィルタを有効にする
- オートフィルタの設定を行う
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
メソッドの引数にField
とCriteria1
を指定して、オートフィルタの設定を行います。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
コメント