0
レポートから複数のワークシートにデータをコピーするマクロを作成中です。マクロは正常に動作しますが、私は小さなことで苦労しています。私はB9:Jの範囲だけでなくN8:Nもコピーしたいと思いますが、("B9:J" & "N9:N" & Lastrow)
をコピーすると、マクロはB列からN列にすべてコピーされますが、K、L、M列はスキップします。Range("B2", "N2")
とRange("B2" & "N2")
Copy tgt.Range("B2").End(xlDown).Offset(1)
にありますが、動作しません。Excelでオートフィルタを使用して複数の範囲をコピーアンドペーストする
Sub report_template()
Const fromFile = "c:\Users\" & Environ("username") & "\Desktop\Report.xls"
Dim srcBook As Workbook
Set srcBook = Application.Workbooks.Open(fromFile, _
UpdateLinks:=False)
Application.ScreenUpdating = False
srcBook.Sheets("Report Page").Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
ActiveSheet.Name = "report"
srcBook.Close False
Dim src As Worksheet
Dim tgt As Worksheet
Dim filterRange As Range
Dim filterRange2 As Range
Dim filterRange3 As Range
Dim filterRange4 As Range
Dim copyRange As Range
Dim Lastrow As Long
Dim tgt2 As Worksheet
Set src = ThisWorkbook.Sheets("report")
Set tgt = ThisWorkbook.Sheets("1")
Set tgt2 = ThisWorkbook.Sheets("2")
Set tgt3 = ThisWorkbook.Sheets("3")
Set tgt4 = ThisWorkbook.Sheets("4")
src.AutoFilterMode = False
Lastrow = src.Range("B" & src.rows.Count).End(xlUp).Row
Set filterRange = src.Range("A8:J" & Lastrow)
Set copyRange = src.Range("B9:J" & Lastrow)
filterRange.AutoFilter Field:=1, Criteria1:="EN > 1"
copyRange.SpecialCells(xlCellTypeVisible).Copy tgt.Range("B2").End(xlDown).Offset(1)
Set filterRange2 = src.Range("A8:J" & Lastrow)
filterRange2.AutoFilter Field:=1, Criteria1:="EN > 2"
copyRange.SpecialCells(xlCellTypeVisible).Copy tgt2.Range("B2").End(xlDown).Offset(1)
Set filterRange3 = src.Range("A8:J" & Lastrow)
filterRange3.AutoFilter Field:=1, Criteria1:="EN > 3"
copyRange.SpecialCells(xlCellTypeVisible).Copy tgt3.Range("B2").End(xlDown).Offset(1)
Set filterRange4 = src.Range("A8:J" & Lastrow)
filterRange4.AutoFilter Field:=1, Criteria1:="EN > 4"
copyRange.SpecialCells(xlCellTypeVisible).Copy tgt4.Range("B2").End(xlDown).Offset(1)
Application.DisplayAlerts = False
Worksheets("report").Delete
Application.DisplayAlerts = True
Application.ScreenUpdating = False
End Sub
は答えをいただき、ありがとうございます。マクロは正しい列をコピーしますが、列Nのデータは列Nにコピーされるのではなく、列Kにコピーされます。私は次の行で同じメソッドを実行しましたが、 'Range(" B2 "&"、 "&" N2 "'。 – Adrian
あなたの選択範囲の間に空白領域を残したい場合は、 K、L、M列のデータがありますか?そうでない場合、最も簡単な方法は全範囲(BからNまで)をコピーしてKからMにクリアすることです – avb
列K、L aqnd Mには、私はこれらの列に「触れない」ことを望んでいません。次に、それぞれの範囲を別々にコピーします。 – Adrian