Excel で特定の複数の行を削除するにはどうすればよいですか?

Excel で特定の複数の行を削除するにはどうすればよいですか?

1 つのドキュメントに 5 つのシートがあります。最初のシートには、最初の列に値を含む行があります。最初のシートの最初の列の値と一致する最初の列の値を持つ残りのシートから、それらの行をすべて削除する必要があります。問題は、削除する必要がある異なる列の値を持つレコードが多数あることです。最初のシートの値 (または最初のシートに共通する値) を含むすべての行を検索して削除するにはどうすればよいでしょうか。

答え1

Sheet1 の列 A の各値を調べ、その値を使用して残りの 4 つのワークシートをフィルター処理すると、必要な結果が得られます。

Sub remove_from_2_to_5()
    Dim var As Variant, w As Long, rw As Long

    With Sheets(1)
        For rw = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
            If Not IsEmpty(.Cells(rw, 1)) Then
                var = .Cells(rw, 1).Value
                For w = 2 To 5
                    With Sheets(w).Cells(1, 1).CurrentRegion
                        .AutoFilter
                        .AutoFilter field:=1, Criteria1:=var
                        With .Offset(1, 0).Resize(.Rows.Count, .Columns.Count)
                            If CBool(Application.Subtotal(103, .Columns(1))) Then
                                .SpecialCells(xlCellTypeVisible).EntireRow.Delete
                            End If
                        End With
                        .AutoFilter
                    End With
                Next w
            End If
        Next rw
    End With

End Sub

最初の For/Next ループが Sheet1 の列 A を下って行くと、見つかった値が記録されます。これは、残りの各ワークシートで操作の条件として使用されます.AutoFilter。フィルターを適用した後にセルが表示されている場合は、行が削除されます。

答え2

各シートに列を挿入して、最初の列の値が最初のシートに出現するかどうかを確認します。最初の列の値が最初のシートに出現する行=iferror(match(a2,sheet1!a:a,0)>0,false)
を取得しtrue、それらをフィルターして削除します。
シートが複数あり、さらに迅速なソリューションが必要な場合は、マクロが必要です。

関連情報