質問: "C:\○○○\Desktop\test1.xlsx" 'ブック作成 With Workbooks.Add ' 既存ブックから新規ブックへコピーするシートを指定する ' シート名もコピー元のシート名になる ' Field=左から数えた列 Criteria1:=抽出条件の指定 ThisWorkbook.Sheets(Array("マスタA")).Copy Before:=.Sheets(1) Range("A1").AutoFilter Field:=17, Criteria1:=">10" ' 新規作成したブックを保存する(※拡張子によってFileFormatが違う) .SaveAs fileName:=filePath, FileFormat:=Excel.XlFileFormat.xlOpenXMLWorkbook ' 新規作成したファイルを閉じる .Close End With End Sub ``` ### 試したこと ThisWorkbook.Sheets(Array("マスタA")).Copy Before:=.Sheets(1) Range("A1").AutoFilter Field:=17, Criteria1:=">10" この行で「Criteria1:=">10"」(数値が10以上)の条件が合った行を抽出して、別ブックに転記される記述にしました。 このあと実現したいことに記載したように、さらに特定した列だけにしぼって出力したいのですが手が詰まってしまいました。 ### 補足情報(FW/ツールのバージョンなど) まだ手探り状態ですので、たくさんコメントアウトの記述がありますが気にしないでください。。
回答: 元シートでフィルターしたあと各列をコピペすれば必要なデータだけコピーされます。 ``` With Workbooks.Add Set tgt = .Sheets(1) Set base = ThisWorkbook.Sheets(1) base.Range("A1").AutoFilter Field:=4, Criteria1:=">10" c = 1 For Each a In Array("A", "C") base.Range(base.Cells(1, a), base.Cells(1, a).End(xlDown)).Copy tgt.Cells(1, c) c = c + 1 Next .Close End With ```