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

【マクロ・VBA】アドバンスフィルタ(AdvancedFilter)を利用して別シートに項目を準備して抽出する

エクセル、マクロ、VBAでアドバンスフィルタで抽出して別シートに転記する方法 VBA

アドバンスフィルタ/別シートに項目を準備_抽出して転記1

アドバンスフィルタ(AdvancedFilter)を使用して、別シートに準備された項目を使ってデータを抽出し、指定されたシートに転記するものです。

  • 検索条件シート/転記先シート準備
    ⇒CriteriaRange→検索条件/CopyToRange→転記先
Sub アドバンスフィルタ_別シートに項目を準備_抽出して転記1()

Dim LastRow1 As Long
LastRow1 = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row               
Dim LastCol1 As Long
LastCol1 = ActiveSheet.Cells(2, Columns.Count).End(xlToLeft).Column    

Selection.AdvancedFilter _
Action:=xlFilterCopy, _
CriteriaRange:=Worksheets("検索条件").Range("A2:J2"), _
CopyToRange:=Worksheets("転記先").Range("A2")

MsgBox "完了"
End Sub

解説

  • 1行目:Sub開始
  • 2行目:変数の宣言
  • 3-4行目:ActiveSheetの最終行と最終列を取得
  • 6行目:AdvancedFilterの使用開始。CopyToRangeには転記先のセルを指定します。ここでは、”転記先”シートの”A2″を指定しています。
  • 7行目:処理完了メッセージを表示
  • 8行目:Sub終了

アドバンスフィルタ/別シートに項目を準備_抽出して転記2

抽出先シート準備

Sub アドバンスフィルタ_別シートに項目を準備_抽出して転記()

Dim LastRow1 As Long
LastRow1 = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row               
LastCol1 = ActiveSheet.Cells(2, Columns.Count).End(xlToLeft).Column    
s_row = 2
s_col = 2
Dim my_array As Variant
my_array = ActiveSheet.Range(Cells(s_row, s_col), Cells(LastRow1, LastCol1))

'my_array.AdvancedFilter _
'Action:=xlFilterCopy, CriteriaRange:=Range("K2:L3"), _
    'CopyToRange:=Worksheets("抽出先").Range("I2:J2")  'I2からJ2に抽出列の項目を準備
    'MsgBox "完了"

ActiveSheet.Range(Cells(1, 1), Cells(LastRow1, LastCol1)).Select

Selection.AdvancedFilter _
Action:=xlFilterCopy, CriteriaRange:=Range("K2:L3"), _
CopyToRange:=Worksheets("抽出先").Range("I2:J2")       'I2からJ2に抽出列の項目を準備

MsgBox "完了"
End Sub
  • 抽出先シートのI2からJ2に抽出列の項目を準備

コメント

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