Vba 查找值并删除前两条记录
我想找到值“No Results”,并删除该行及其上方的两行Vba 查找值并删除前两条记录,vba,excel,Vba,Excel,我想找到值“No Results”,并删除该行及其上方的两行 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) 我可以删除记录的值是,但不能删除上面的记录。已尝试单元格(i-2,“A”).EntireRow.Delete,但它会删除其上的所有记录。你能帮忙吗 Su
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)
我可以删除记录的值是,但不能删除上面的记录。已尝试单元格(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
像这样的事情应该可以做到:
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
仅当要“筛选”的工作表是当前活动的工作表时,此选项才有效。如果此选项是从模块运行的,则最好明确指定工作表,例如工作表(“工作表1”)。单元格(i,“a”)
我对您自己的尝试所做的唯一真正改变是在If语句中使用
范围
,而不是单元格
。使用Range
函数,我们可以使用字符串引用Excel范围,例如Range(“A1”)
。在本例中,我们特别构造了一个引用行(i-2)到i的字符串,因此对于i=9
,我们正在执行Range(“7:9”)。在使用建议的单元格(i-1,“a”)删除后,删除。EntireRow.Delete
在循环中添加额外的行i=i-1
。逻辑似乎很好,但是在运行循环时,我在Range((i-2)和“:”i)处出现语法错误。删除My bad,那一行有一个打字错误,它应该读Range((i-2)和“:”&i)
,我也编辑了我的答案。