オートフィルタでの抽出結果を別のシートに貼り付けるVBAを紹介します。
エクセルの「オートフィルタの詳細設定」という機能をマクロ化したものです。
オートフィルタの詳細設定は便利ですよね。
私もよく使っています。数回のマウス操作で出来るのでとても便利に感じています。
数回のマウス操作作業と言っても抽出のたびに行うとなると、数回が積み重なって、しまいには面倒に感じませんか。
シートを指定したり、セルを指定したりと1回の抽出で10の工程はありますね。
確かに、改めて考えるとかなりの手数ですね。
今回はその手数をさらに減らすVBAの紹介です。
オートフィルタでの抽出結果を別のシートに貼り付けるVBA
Sub 抽出1()
Dim a As Long
Dim Data As Range
Sheets(“Sheet2”).Select
Range(Cells(4, 1), Cells(Rows.Count, 12)).Clear
With Worksheets(“Sheet1”)
a = .Cells(Rows.Count, 1).End(xlUp).Row
Set Data = Range(.Cells(1, 1), .Cells(a, 12))
End With
Data.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range(“A1:A2”), CopyToRange:=Range(“A4”), Unique:=False
End Sub
解説
重複したデータが不要の場合は、「Unique:=False」を「Ture」に変更
抽出1マクロの「抽出項目の見出し」と「条件」をSheet1のN1:N2に変更
Sub 抽出2()
Dim a As Long
Dim Data, Con As Range
Sheets(“Sheet2”).Select
Columns(“A:L”).Clear
With Worksheets(“Sheet1”)
a = .Cells(Rows.Count, 1).End(xlUp).Row
Set Data = Range(.Cells(1, 1), .Cells(a, 12))
Set Con = .Range(“N1:N2”)
End With
Data.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Con, CopyToRange:=Range(“A1”), Unique:=False
End Sub
コメント