find一个值并删除前两个logging

我想find值“没有结果”,并删除它上面的行和两行。

Name 1(A1) (A2 is empty) App(B2) Efforts (C2) No Results(A3) Name 3 (A4) Valid (A5) Name 2(A6) (A7 is empty) No Results(A8) 

我能够删除logging的价值是,但不是上面的logging。 试过的Cells(i-2, "A").EntireRow.Delete但它删除上面的所有logging。 能否请你帮忙。

 Sub Macro1() Last = Cells(Rows.Count, "A").End(xlUp).Row For i = Last To 1 Step -1 If (Cells(i, "A").Value) = "No Results" Then Cells(i, "A").EntireRow.Delete End If Next i End Sub 

像这样的事情应该做的伎俩:

 Public Sub Macro1() Dim i As Long For i = Cells(Rows.Count, "A").End(xlUp).Row To 1 Step -1 If Cells(i, "A").Value = "No Result" Then Range((i-2) & ":" & i).Delete End If Next i End Sub 

这只有在你想“过滤”的工作表是当前活动的工作表时才起作用,如果这是打算从一个模块运行,那么最好明确地指定工作表,例如Sheets("Sheet1").Cells(i, "A")

我对你自己的尝试做的唯一真正的改变是在你的If语句中使用Range而不是Cells 。 使用Range函数,我们可以使用一个string来引用一个Excel范围,例如Range("A1") 。 在这种情况下,我们构造一个string引用行(i-2)到i,所以对于i = 9我们正在执行Range("7:9").Delete