Excel vba如果单元格包含文本,则删除行

use*_*749 1 excel vba excel-vba

我正在使用此代码:

Dim r As Integer   
For r = 1 To Sheet1.UsedRange.Rows.Count        
    If Cells(r, "Q") = "0" Then           
    Sheet1.Rows(r).EntireRow.Delete    
    End If
Next  
Run Code Online (Sandbox Code Playgroud)

问题是它不会删除所有内容,它只是删除了一些行,我必须按下多次使用此代码的按钮才能删除"Q"中的所有"0"实例

来自类似问题的答案

如何基于搜索关键字VBA 反转For循环
删除行

小智 5

我很感激这在评论中已得到解决,但为了完整起见,您需要颠倒for/next循环的顺序,如下所示:

Dim r As Integer   
For r = Sheet1.UsedRange.Rows.Count to 1 step -1
    If Cells(r, "Q") = "0" Then           
        Sheet1.Rows(r).EntireRow.Delete    
    End If
Next  
Run Code Online (Sandbox Code Playgroud)

以前的方式,通过删除列表开头的整行,您将所有内容向上移动一行.通过从下到上开始,删除整行不会影响尚未处理的项目的行号.

很高兴你把事情解决了.