2016-07-07 44 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語句,說如果代碼當前正在查看的當前列/行,那麼它應該移到下一節。

這裏是如何定義的數組,如果你不知道

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

在那裏,你可以定義數組的每一部分爲列/行

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

希望這有助於!

相關問題