Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 查找值并删除前两条记录_Vba_Excel - Fatal编程技术网

Vba 查找值并删除前两条记录

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

我想找到值“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
,但它会删除其上的所有记录。你能帮忙吗

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)
,我也编辑了我的答案。