我想找到价值"没有结果"并删除它上面的行和两行。
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)
我可以删除记录的值,但不是上面的记录。尝试Cells(i-2, "A").EntireRow.Delete
但删除了它上面的所有记录。能帮忙吗?
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
答案 0 :(得分:1)
这样的事情可以解决问题:
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
函数,我们可以使用字符串引用Excel范围,例如Range("A1")
。在这种情况下,我们特别构造一个引用行(i-2)到i的字符串,因此对于i = 9
我们正在执行Range("7:9").Delete
。