基本上, 我需要删除主键字段中没有3作为第二个数字的所有记录,例如可以看起来像这样
#39001
或没有#3
我想要的是所有非#3的单元格都会被删除 我想出了以下代码, 它删除了一些非#3,但不是全部。 我有超过13000行要扫描
Sub keep3()
'
' RemoveNum Macro
Dim i As Integer
For i = 2 To 14000
If InStr(Cells(i, 2), "3") = 2 Then
Else
Rows(i).EntireRow.Delete
End If
Next i
End Sub
如果你能指出我正确的方向,我将不胜感激!
谢谢!
答案 0 :(得分:3)
当你删除一行时,它下面的所有行向上移动,然后你增加“i”,这实际上是跳过新移动的行。请尝试以下方式......
Sub keep3()
'
' RemoveNum Macro
Dim i As Integer
i = 2
While i < 14000
If InStr(Cells(i, 2), "3") = 2 Then
' Do nothing
i = i + 1
Else
Rows(i).EntireRow.Delete
' Note - not incrementing i here
End If
Wend
End Sub
答案 1 :(得分:0)
2种可能性:
删除包含Else
的行。我认为它阻止了删除以你想要的方式工作。我假设你没有超过14000行数据......
或者可能是当您删除该行时,它会影响您正在运行的行的顺序。