한 문서에 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