2017-01-23 6 views
0

これは現在使用しているコードですが、完全に機能しますが、行く。 行の一部のみをコピーするコードを指定するにはどうすればよいですか? 私はその問題がどこにあるのかというコードにコメントしました。 助けがあれば助かります! P.P.私はこれがすでに解決されていると思ったので、私はしばらくこの投稿を延期しましたが、私の検索は何も見つかりませんでした。セルが条件を満たす場合にシートAの行の一部のみをコピーし、別のシートにコピー

Sub CopySPData() 

    Dim c As Range 
    Dim j As Integer 
    Dim Source As Worksheet 
    Dim Target As Worksheet 

    ' Change worksheet designations as needed 
    Set Source = ActiveWorkbook.Worksheets("All") 
    Set Target = ActiveWorkbook.Worksheets("Host New") 

    j = 3  ' Start copying to row 3 in target sheet 
    For Each c In Source.Range("F1:F1000") ' Do 1000 rows 
     If c = "Host" Then 
      Source.Rows(c.Row).Copy Target.Rows(j) ' I think the issue is in this line 
      j = j + 1 
     End If 
    Next c 
End Sub 
+0

下記の回答を見て、彼らがあなたのために働いているかどうかをお知らせください –

答えて

0

あなただけの行の来る一部が含まれているRange()ためRows()を変更する必要があります。

Source.Rows(c.Row).Copy Target.Rows(j) 

に:たとえば、あなたがSourceシートでKにCから列のみ、とはTargetシートでMに列Eに貼り付けたい場合は、変更する必要があります。

Source.Range("C" & c.Row & ":K" & c.Row).Copy Target.Range("E" & j) 
+0

ありがとうございます!それはトリックでした! – Mikeymoo

0

のは、あなたがその行の列Fの値が「ホスト」に等しいG列に列Eのセルをコピーしたいとしましょう、と「ホスト新規」シート、駅に貼り付け

Source.Range("E" & c.Row & ":G" & c.Row).Copy Target.Range("A" & j) 

:列Aからrting、あなたは以下の行を使用することができますあなたはFor Each c In Source.Range("F1:F1000")ループを使用することなく、一度に全範囲をコピーするAutoFilterメソッドを使用することができます。

+0

こんにちはシャイ、ありがとう、それは助けになった!私がループをやっている理由は、私はプライマリリストから検索するために12の異なる名前があり、それぞれ別のシートに移動する必要があるからです。オートフィルタは依然としてその作業に最適だと思いますか? – Mikeymoo

関連する問題