必须删除单元格的第一个字符,如果不是#3Created循环永远不会结束

时间:2013-05-14 20:22:26

标签: excel vba

所以基本上,我需要删除主键字段中没有3作为第二个数字的所有记录,例如可以看起来像这样

#39001

或没有#3

我想要的是所有非#3开始的单元格,它们的行被删除我想出了以下代码,它会删除所有,但宏永远不会停止运行..

 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 :(得分:0)

请改为尝试:

Sub keep3()

    Dim i As Integer

    For i = 14000 To 2 Step -1
        If Mid(Cells(i, 2), 2, 1) = "3" Then
            Rows(i).EntireRow.Delete
        End If
    Next

End Sub

请注意,循环是向后的 - 这是因为当你删除一行时,下面的行会被拉起来,所以你的循环可以做一些奇怪的事情,如果你前进然后删除一行,因为你可能会跳过您可能还想删除的下一行。此外,我更改了IF语句,因为您说要删除第二个字符为3的行。