| 
    
     |  | ▼新参者 さん: >久々に質問させていただきます。
 >フィルターで抽出された生産履歴が表示された列がA列からQ列まであります。
 >その中からA列とE列の最終列までをコピーして新規シートにコピーしたいと思います。
 >マクロで行えば、
 >
 >range("a1:a10,e1:e10").select
 >selection.copy
 >
 >で、できますが、
 >生産履歴は日々増えていきますのでフィルターで抽出された行は増えていくので、
 >変数で処理を行うのですが、上記マクロを参考に自分なりに考えたのが、
 >dim n as integer  最終行を取得
 >range(range(cells(1,1),cells(n,1)),range(cells(1,5),cells(n,5)))
 >range((cells(1,1),cells(n,1)),(cells(1,5),cells(n,5)))などと
 >
 >記述してみましたが、インデックスが違いますとかのエラーが出ます。
 >その後の処理はマクロを参考にできましたが上記の列の選択方法ができません。
 >初歩的なものかとは思いますが、よろしくお願いします。
 >会社ではネットが使えないので自宅で投稿しているのでエラー項目が把握できませんでした。
 
 新規シートにA:Eまでをコピーし、B:Dを削除したらいけませんか?
 以下のコードは、
 シート1にあるデータのA列にオートフィルターをかけて
 A〜Eまでを新規シートにコピーして、B〜Dまでを削除するコードです。
 フィルターをかける列と抽出文字はそちらにあわせてみてください。
 参考になればよいのですが・・・
 
 Sub test()
 Dim Nst As Worksheet
 
 Application.ScreenUpdating = False
 With Sheets("Sheet1")
 If .AutoFilterMode = True Then .AutoFilterMode = False
 .Range("A1").CurrentRegion.AutoFilter 1, Criteria1:="a"  'A列の"a"を抽出しています
 With .AutoFilter.Range
 If .Columns(1).SpecialCells(xlCellTypeVisible).Count = 1 Then
 MsgBox "データがありません。" '抽出データがない場合
 Exit Sub
 Else
 .Range(.Columns(1), .Columns(5)).Copy
 Set Nst = Worksheets.Add(after:=Sheets(Sheets.Count))
 With Nst
 .Name = "抽出データ"
 .PasteSpecial
 .Columns("B:D").Delete
 End With
 End If
 End With
 .AutoFilterMode = False
 End With
 Application.ScreenUpdating = True
 End Sub
 
 
 |  |