「compiled」と「firstpickup」という 2 つのワークシートがあります。私がやりたいことは、列 A の値が「compiled」の列 A にも見つかる場合、「firstpickup」シートの行を削除することです。「compiled」は 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