删除包含特定字符串的行,同时保留行为空白的行

时间:2019-10-08 07:17:48

标签: excel vba

我有一个工作表,其中“ B”列中的某些单元格包含字符串(它们都以某种形式包含“ DELETE”),而某些单元格为空白。

我要删除“ B”列中的单元格包含字符串“ DELETE”的所有行,但保留“ B”列中的单元格为空白的行。

我只能基于“ A”列确定循环的范围(最后一行),因为它一直填充到末尾。

我在循环中尝试做的另一件事是删除“ E”列中的单元格不等于字符串“ Active”的所有行。这不起作用。

字符串“ DELETE”可以是大小写随机的(“ DELETE”,“ delete”,“ Delete”等)

我的代码删除了几行然后停止。

Sub format_pull()
Dim sh1 As Worksheet

Set sh1 = Sheets("Sheet1")

    LastRow = crc.Cells(Rows.Count, "A").End(xlUp).Row
    For x = 2 To LastRow

        If InStr(1, sh1.Range("B" & x).Value, UCase("DELETE"), 1) = 0 Then sh1.Range("B" & x).Value = "KEEP"
        If sh1.Range("B" & x).Value = "DELETE" Then sh1.Range("B" & x).EntireRow.Delete
        If sh1.Range("E" & x).Value <> "Active" Then sh1.Range("E" & x).EntireRow.Delete

    Next x

End Sub

1 个答案:

答案 0 :(得分:2)

在循环中删除时,总是最好向后进行操作,如下所示:

For x = LastRow To 2 Step -1
    ...
Next x

这样,当删除某些内容时它不会混乱,但行计数器不会调整。