如果值不为空,Excel将某些单元格复制到新的工作表行

我有这个代码,将检查我的xls文件列E,如果它不是空白复制行到一个新的工作表。 但是我找不到如何排除单元格。 列C,D,E,F和G以及search列。 如果我正在运行的macros(在这种情况下是E)中有数据,我想复制该行上的每个单元除了C,D,F,G。这可能吗?

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 

这就是你可以在代码中添加删除部分的方法:

 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 

如果您有任何疑问,请告诉我。

最简单的事情就是编写一个包含你不想复制的列/行的string数组。

然后写一个if语句,说如果代码当前正在查看的当前列/行,那么它应该移到下一部分。

如果你不知道如何定义一个数组,

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

在那里你可以定义数组的每一部分为列/行

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

希望这可以帮助!