首页 > 解决方案 > VBA试图遍历一列并删除整行,如果它们包含一个值

问题描述

我不太擅长循环。

我正在尝试使用 VBA 循环遍历列以查找任何值,然后如果找不到任何值,则删除整行(这本质上是一种删除我已标记(或未标记)的数据行的方法这个案例))。

我尝试过各种各样的事情。我最近的尝试如下,但它只是删除每一行,无论该单元格是否有值。有什么建议么?

Dim i as Long
For i = 1 To 50
If Cells(i, 1).Value = "" Then
    Selection.EntireRow.Delete
Else
    i = i + 1
End If
Next i
End Sub

标签: excelvba

解决方案


这里有几个问题:

  1. 在循环中删除行时向后工作,如果向前移动,您的行号会随着您的删除而改变。

  2. 接下来不需要增加变量“i”我已经这样做了

  3. 使用 Worksheet 对象删除行而不是选择

我会这样重写:

Sub delete()

Dim i As Long
For i = 50 To 1 Step -1
    If Cells(i, 1).Value = "" Then
        Worksheets("Sheet1").Rows(i).EntireRow.delete
    End If
Next i

End Sub

推荐阅读