2016-07-07 14 views
0

xlsファイルの列Eをチェックするこのコードがあります。空白でない場合は、この行を新しいワークシートにコピーします。しかし、私は細胞を排除する方法を見つけることができません。列C、D、E、F、Gおよび検索列。私が実行しているマクロ(この場合はE)にデータがある場合は、C、D、F、G以外の行のすべてのセルをコピーします。これは可能ですか?Excel値が空白でない場合、特定のセルの新しいワークシート行にコピーします。

Sub CopyYes() 
    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("Sheet1") 
    Set Target = ActiveWorkbook.Worksheets("Sheet2") 

    J = 1  ' Start copying to row 1 in target sheet 
    For Each c In Source.Range("E1:E1000") ' Do 1000 rows 
     If c <> "" Then 
      Source.Rows(c.Row).Copy Target.Rows(j) 
      j = j + 1 
     End If 
    Next c 
End Sub 
+2

行全体をコピーして、不要なセルを削除することはできません...? – ManishChristian

+0

ええ、私はそれをやっているが、私はできるだけ多くのステップを統合しようとしていた – Nolemonkey

答えて

1

これは、あなたのコード内で、削除部分を追加する方法です。

Sub CopyYes() 
    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("Sheet1") 
    Set Target = ActiveWorkbook.Worksheets("Sheet2") 

    j = 1  ' Start copying to row 1 in target sheet 
    For Each c In Source.Range("E1:E1000") ' Do 1000 rows 
     If c <> "" Then 
      Source.Rows(c.Row).Copy Target.Rows(j) 
      With Target 
       .Range("C" & j).ClearContents 
       .Range("D" & j).ClearContents 
       .Range("F" & j).ClearContents 
       .Range("G" & j).ClearContents 
      End With 
      j = j + 1 
     End If 
    Next c 
End Sub 

は、あなたが疑問を持っているなら、私に教えてください。

+0

それは完璧です。私が必要とするものをまさにやる。ありがとう!もう一度質問します。 – Nolemonkey

+0

内容を消去する代わりに、列を削除できますか? – Nolemonkey

+0

すべてのデータをコピーした後に行うことができます。 – ManishChristian

0

最も簡単なことは、コピーしたくない列/行を含む文字列を書き込むことです。

次に、コードが現在見ている現在の列/行が次のセクションに移動する必要があることを示すif文を記述します。ここで

は、あなたが列/行

Set DoNotCopy as Sheet("blah").Range("D:D") 

は、この情報がお役に立てば幸いとしてあなたは、配列の各部分を定義することができますがあり

Dim DoNotCopy(1 to 10) as ListRows *OR as ListColumns* 

を知らなかった場合は、配列を定義する方法です!

関連する問題