我有一个工作表,其中“ 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
答案 0 :(得分:2)
在循环中删除时,总是最好向后进行操作,如下所示:
For x = LastRow To 2 Step -1
...
Next x
这样,当删除某些内容时它不会混乱,但行计数器不会调整。