У меня есть две таблицы: "составлен" и "первый пикап". То, что я хочу сделать, это удалить строки в листе "firstpickup", если значение в столбце A также можно найти в столбце A "compiled". "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

Эта подпрограмма не находила совпадений в функции "если", поэтому никогда не удаляла строки, даже для строк, которые, как я знал, имели дубликаты.

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 ответ1

0

Вы можете использовать этот код 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .