删除所有没有#3作为主键开头的行

时间:2013-05-14 18:04:11

标签: excel vba

基本上, 我需要删除主键字段中没有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

如果你能指出我正确的方向,我将不胜感激!

谢谢!

2 个答案:

答案 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行数据......

或者可能是当您删除该行时,它会影响您正在运行的行的顺序。