2016-08-26 8 views
0

フィルタリングされたデータを条件範囲でコピーした後、P & L規制されたエンティティシートに貼り付けることができません。 1226でフィルタリングされたデータが最初に貼り付けられ、次に1843でフィルタリングされたデータが1226からのデータの下に貼り付けられるように、以下のコードを調整するにはどうすればよいですか?複数のフィルタリングされた条件を元のデータに貼り付けることなく1つのシートに貼り付けますか?

Sheets("P&L").Select 
Range("A1").AutoFilter Field:=1, Criteria1:= _ 
    "*1226*" 
ActiveSheet.AutoFilter.Range.Copy 
Sheets("P&L Regulated Entities").Select 
Range("A1").Select 
Selection.PasteSpecial _ 
Paste:=xlPasteFormulas, Operation:=xlNone, SkipBlanks:=False,Transpose:=False 


Sheets("P&L").Select 
Range("A1").AutoFilter Field:=1, Criteria1:= _ 
    "*1843*" 
ActiveSheet.AutoFilter.Range.Copy 
Sheets("P&L Regulated Entities").Select 
ActiveCell.Offset(1).Select 
Range("A1").Select 
Selection.PasteSpecial _ 
Paste:=xlPasteFormulas, Operation:=xlNone, SkipBlanks:=False, Transpose:=False 


Sheets("P&L").Select 
Range("A1").AutoFilter Field:=1, Criteria1:= _ 
    "*865*" 
ActiveSheet.AutoFilter.Range.Copy 
Sheets("P&L Regulated Entities").Select 
ActiveCell.Offset(1).Select 
Range("A1").Select 
Selection.PasteSpecial _ 
Paste:=xlPasteFormulas, Operation:=xlNone, SkipBlanks:=False, Transpose:=False 


Sheets("P&L").Select 
Range("A1").AutoFilter Field:=1, Criteria1:= _ 
    "*1223*" 
ActiveSheet.AutoFilter.Range.Copy 
Sheets("P&L Regulated Entities").Select 
ActiveCell.Offset(1).Select 
Range("A1").Select 
Selection.PasteSpecial _ 
Paste:=xlPasteFormulas, Operation:=xlNone, SkipBlanks:=False, Transpose:=False 
+0

Range( "A1")を作成したいと思います。データがある最後の行を見つけて下に移動して動的を選択します。最後の行を見つける方法については、こちらを参照してください。http://stackoverflow.com/questions/11169445/error-in-finding-last-used-cell-in-vba最後の行の戻り値に1を加えます。 –

+0

@ScottCranerでは、これを上記のコードにどのように組み込むかを示すことができますか? – JHags

+1

また、[.Select'/'.Activate'の使用を避けてください](https://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-macros) 。このコードの多くは、おそらく最大10行まで縮小することができます。 – BruceWayne

答えて

0

私はこれを使用します。 With...End With構造を使用すると、.Select文を削除できます。 .Range("A" & .Rows.Count).End(xlUp).Offset(1,0)のような行は、コピーされたデータをRegulated Entitiesシートの最初の空の行に置きます。

With Sheets("P&L") 
    .Range("A1").AutoFilter Field:=1, Criteria1:= _ 
    "*1226*" 
    .AutoFilter.Range.Copy 
End With 

With Sheets("P&L Regulated Entities") 
    .Range("A1").PasteSpecial _ 
Paste:=xlPasteFormulas, Operation:=xlNone, SkipBlanks:=False,Transpose:=False 
End With 


With Sheets("P&L") 
    .Range("A1").AutoFilter Field:=1, Criteria1:= _ 
    "*1843*" 
    .AutoFilter.Range.Copy 
End With 

With Sheets("P&L Regulated Entities") 
    .Range("A" & .Rows.Count).End(xlUp).Offset(1,0).PasteSpecial _ 
Paste:=xlPasteFormulas, Operation:=xlNone, SkipBlanks:=False, Transpose:=False 
End With 


With Sheets("P&L") 
    .Range("A1").AutoFilter Field:=1, Criteria1:= _ 
    "*865*" 
    .AutoFilter.Range.Copy 
End With 

With Sheets("P&L Regulated Entities") 
    .Range("A" & .Rows.Count).End(xlUp).Offset(1,0).PasteSpecial _ 
Paste:=xlPasteFormulas, Operation:=xlNone, SkipBlanks:=False, Transpose:=False 
End With 


With Sheets("P&L") 
    .Range("A1").AutoFilter Field:=1, Criteria1:= _ 
    "*1223*" 
    .AutoFilter.Range.Copy 
End With 

With Sheets("P&L Regulated Entities") 
    .Range("A" & .Rows.Count).End(xlUp).Offset(1,0).PasteSpecial _ 
Paste:=xlPasteFormulas, Operation:=xlNone, SkipBlanks:=False, Transpose:=False 
End With 
関連する問題