0

所以基本上,我需要删除所有没有 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

有任何想法吗?

谢谢

4

1 回答 1

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 的行。

于 2013-05-14T20:27:59.230 回答