"컴파일됨"과 "첫 번째 픽업"이라는 두 개의 워크시트가 있습니다. 내가 하려는 작업은 A열의 값이 "컴파일됨"의 A열에서도 찾을 수 있는 경우 "firstpickup" 시트의 행을 삭제하는 것입니다. "컴파일됨"은 42,000개 행이고 "firstpickup"은 21,000개이므로 매크로를 실행하고 모든 데이터를 살펴본 후 종료되도록 하고 싶습니다.
대략적인 Google 검색을 기반으로 시도한 몇 가지 옵션은 다음과 같습니다.
Sub RemoveDuplicates()
Dim rCrit As Range 'Range To Search For Duplicates
Dim rFilt As Range 'Range To Remove Duplicates
Dim lLoop As Long
Set rCrit = Worksheets("compiled").Range("A1", Worksheets("compiled").Range("A" & Rows.Count).End(xlUp))
Set rFilt = Worksheets("firstpickup").Range("A1", Worksheets("firstpickup").Range("A" & Rows.Count).End(xlUp))
For lLoop = rCrit.Rows.Count To 2 Step -1
If WorksheetFunction.CountIf(rCrit, rFilt(lLoop).Value) > 0 Then
Worksheets("firstpickup").Rows(lLoop).Delete shift:=xlUp
End If
Next lLoop
End Sub
이 하위 항목은 "if" 함수에서 일치하는 항목을 계속 찾지 못했기 때문에 중복된 행이 있는 것으로 알고 있는 행에 대해서도 행을 삭제하지 않았습니다.
Sub Removeduplicates()
Dim Row As Long
Dim FoundDup As Range
Sheets("compiled").Select
For Row = Range("A24031").End(xlUp).Row To 2 Step -1
Set FoundDup = Sheets("compiled").Range("A:A").Find(Cells(Row, 1), LookIn:=xlValues, lookat:=xlWhole)
If Not FoundDup Is Nothing Then
Cells(Row, 1).EntireRow.Delete
End If
Next Row
End Sub
이 서브도 성공하지 못했습니다. "For" 쿼리 다음에는 디버거가 "end sub"로 건너뜁니다.
이전 시도를 재작업하거나 다른 솔루션을 제공하는 데 도움을 주시면 대단히 감사하겠습니다.
답변1
이 VBA 코드를 사용하면 시트에서 행을 삭제하는 데 도움이 됩니다 Firstpickup
.A열의 값이 A열의 값과 일치하는지 여부의 Complied Sheet
.
Sub DeleRows()
Dim LR As Long, i As Long
With Sheets("Firstpickup")
LR = .Range("A" & Rows.Count).End(xlUp).Row
For i = LR To 1 Step -1
If IsNumeric(Application.Match(.Range("A" & i).Value, Sheets("Complied").Columns("A"), 0)) Then .Rows(i).Delete
Next i
End With
End Sub