0

テーブルの列Aの値が別の別の列Bの値のいずれとも一致しない場合に、テーブルの行を削除するマクロに取り組んでいます。現在、私のコードは最後の行を適切に削除していません。私は一生の間、その理由を理解することはできません。

これが私の現在のコードです:

Sub Stuff()
    Dim rCell As Range, ColumnA As Range, ColumnB As Range
    Dim rowPoint As Integer

    Set ColumnA = ActiveWorkbook.Worksheets("Sheet1").Range("Table2[Column1]") 
    Set ColumnB = ActiveWorkbook.Worksheets("Sheet1").Range("Table1")

    rowPoint = ColumnA.Count

    On Error Resume Next

    For i = rowPoint To 1 Step -1
        For Each rCell In ColumnA
            If Application.CountIf(ColumnB, rCell.Value) = 0 Then rCell.Rows.Delete

        Next rCell
    Next i

End Sub
4

1 に答える 1

-1

最後の行が正しく削除されていないとはどういう意味ですか?

削除されていて、フォーマットに問題がありますか、それとも最後の行がまったく削除されませんか?

フォーマットの問題である場合は、

If Application.CountIf(ColumnB, rCell.Value) = 0 Then rCell.Rows.Delete xlShiftUp

これにより、その列のセルのみが削除され、他の列の構造を変更せずに、削除されたセルの下の行が上に移動します。

于 2013-03-08T06:08:06.650 に答える