2013-12-16 33 views
0

我想循环遍历单元格区域,并删除整个行,如果单元格不匹配某种模式。由于删除一行跳过了一个迭代步骤,我正在尝试使用'继续',因此我将删除一行并且不移动到下一个单元格,而是重新运行相同的单元格值以不跳过一行。不幸的是继续似乎没有被认可。 (不知道包括什么参考)这是我在做什么:开始循环或不迭代。继续为VBA

Set Values = Sheets("A").Range(Sheets("A").Cells(2, 1), Sheets("A").Cells(2, 1).End(xlDown)) 
    For Each Cell In Values 
     If Not Cell.Value Like "*pattern*" Then 
      Cell.EntireRow.Delete 
      Continue For 
     End If 
    Next Cell 

有关如何使这项工作的任何想法?

+3

通常在删除行时,您会从最后一行开始并向上工作。 –

+0

反向操作比较容易,但可以自上而下完成,只要您自己跟踪行号即可。 http://stackoverflow.com/questions/15839622/vba-macro-to-delete-unchecked-rows-using-marlett-check/15839773#15839773 – NickSlash

回答

2
Dim x as long 

Set Values = Sheets("A").Range(Sheets("A").Cells(2, 1), _ 
           Sheets("A").Cells(2, 1).End(xlDown)) 

For x = Values.cells.count to 1 step -1 
    With Values.Cells(x) 
     If Not .Value Like "*pattern*" Then .EntireRow.Delete 
    End With  
Next x