• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:オートフィルタ抽出後、別シートの3ヶ所にコピペ)

エクセルVBAでオートフィルタの抽出後にコピペする方法

このQ&Aのポイント
  • エクセルVBAを使用して、オートフィルタの結果を別シートにコピーするコードについて質問があります。
  • 現在、オートフィルタの結果を指定の範囲にコピーしていますが、引数の数が一致せずエラーが発生しています。
  • また、オートフィルタの結果を複数の範囲に分けてコピーすることは可能でしょうか?解決策を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

同じデータを3回貼るのではなく、10行ずつにわけて貼るのですよね? 一旦どこかにデータを退避させて10行ずつ貼ったらどうでしょう? 以下は、新たにシートを挿入してデータを一時貼り付け、作業後にシートを削除しています。 Sub 工事抽出コピペ02()   Dim Obj As Object   Dim ws As Worksheet      With Sheets("工事台帳")     Set Obj = .Range("E5:E65536").Find(.Range("E2"), LookAt:=xlWhole)     If Obj Is Nothing Then       MsgBox "見つかりませんでした。"       Sheets("工事別表示").Range("B11:F65536").ClearContents       Exit Sub     Else       Set ws = Sheets.Add       Range("工事別明細1,工事別明細2,工事別明細3").ClearContents       .Range("B6").AutoFilter Field:=4, Criteria1:=.Range("E2").Value       .Range("F5:J" & .Range("B65536").End(xlUp).Row).Copy     End If   End With      With ws     .Range("F1").PasteSpecial Paste:=xlPasteValues     .Range("F1:J10").Copy     Range("工事別明細1").Cells(1).PasteSpecial Paste:=xlPasteValues     .Range("F11:J20").Copy     Range("工事別明細2").Cells(1).PasteSpecial Paste:=xlPasteValues     .Range("F21:J30").Copy     Range("工事別明細3").Cells(1).PasteSpecial Paste:=xlPasteValues   End With   Application.DisplayAlerts = False   ws.Delete   Application.DisplayAlerts = True   Application.CutCopyMode = False End Sub

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

自分がやりたいことを文章で説明すること。 読者にコードだけ書いて読み解かせるようなことはやらないでほしい。 フィルタ(結果が多数行ある場合で)の結果を、離れた3セル範囲に分けて貼り付けたいのなら、質問のコードは無理だろう。 普通のコピー操作でもそんな事は出来ない経験は無いですか。 一旦作業セル範囲の、行と列を使わないとダメでしょう。 例 Sub test01() 'Range("a2, b3, D5").Select 'Range("A1").Copy Range("a2, b3, D5") 'Range("A1").Copy Range(n1, n2, n3) 'Range("abc").Select 'Range("abc,abd,abe").Select 'Range("A1").Copy Range("abc, abd, abe") Range("A1:A3").Copy Range("abc, abd, abe") End Sub  はすべてうまく行くようだ(1つだけコメント記号をはずして実行する) ただしabc、abd、abe は1セルに名前をつけたセル範囲の名前。 ーーーー Sub test02 Range("A1:A3").Copy Range("xyc, xyd, xye") 'xyc, xyd, xyeはおのおの3セル範囲指定  OK 3->3はOK Range("A1:A4").Copy Range("xyc, xyd, xye") ''xyc, xyd, xyeはおのおの4セル範囲指定  ERR 3->4はエラ- End Sub こういうのをやって試してみれば良い。

yunako0517
質問者

お礼

みなさま回答をありがとうございました。 教えてくださったのをいろいろ試してみて、うまくいきました。 本当にありがとうございました。 一件一件お礼を書かずにすみません。

  • mks1902
  • ベストアンサー率40% (11/27)
回答No.1

一例 Sheets("工事別表示").Range("工事別明細1").PasteSpecial Paste:=xlPasteValues Sheets("工事別表示").Range("工事別明細2").PasteSpecial Paste:=xlPasteValues Sheets("工事別表示").Range("工事別明細3").PasteSpecial Paste:=xlPasteValues

関連するQ&A