0

基本的に、主キー フィールドの 2 桁目が 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

ループが逆方向に進んでいることに注意してください。これは、行を削除すると下の行がプルアップされるためです。そのため、前に進んでから行を削除すると、次の行をスキップする可能性があるため、ループが奇妙なことを行う可能性があります。あなたも削除したかったかもしれません。また、2 番目の文字が 3 である行を削除したいとおっしゃっていたので、IF ステートメントを変更しました。

于 2013-05-14T20:27:59.230 に答える