删除行如果和那么ELSEIF

时间:2015-09-18 18:52:24

标签: vba excel-vba excel

大家好!

我有一个重文件,在A和D列中有不同的值。 现在我希望这个脚本完成以下操作:

  1. 如果A列中的值是D列中的“Option One”和“K”,则删除整行。
  2. 另外删除整个原始if,如果A列中的值是“选项2”,则列D中的“M”
  3. 以下代码执行此操作70%,我找不到问题。 它总是留下一些行并完全删除不需要的条目,我必须运行此代码两次。

    非常感谢您的帮助!谢谢!

    Sub RemoveSomeLines()
    
    Dim RemoveRow As Long
    
    RemoveRow = Cells(Rows.Count, "A").End(xlUp).Row
    For y = 1 To RemoveRow
    If Cells(y, "A").Value = "Option One" And _
       Cells(y, "D").Value = "K" Then
       Cells(y, "A").EntireRow.Delete
    
    ElseIf Cells(y, "A").Value = "Option Two" And _
       Cells(y, "D").Value = "M" Then
       Cells(y, "A").EntireRow.Delete
    
    End If
    Next y
    
    End Sub
    

1 个答案:

答案 0 :(得分:4)

尝试倒退:

For y = RemoveRow To 1 Step -1

它可能正在跳过行,因为您要删除一行,向上移动下一行,然后跳过在下一个循环中向上移动的行,因为y递增1。

看起来像这样:

删除第20行。
整张纸向上移动。
第21行现在是第20行 y在下一个循环上递增,变为21 新行20实际上完全被跳过了。

或者,我认为如果你删除一行时将y递减1会有效,但是只需要向后工作而不是向前进行代码更改。