Макрос Excel удаляет строку с последовательными дублирующимися данными столбца - PullRequest
0 голосов
/ 12 января 2020

Я новичок в программировании макросов в Excel. У меня есть файл Excel с более чем 1000 строк данных, и я хотел бы удалить всю строку, когда данные в столбце 44 повторяются в последовательных строках. Я приложил сценарий, который я пытался настроить безрезультатно. В настоящее время скрипт удаляет большинство дублирующих строк, но не все, и я не могу понять, почему.

Sub deleteDupes()
  Dim i As Long
With Sheets("Sheet1")
For i = .Cells(Rows.Count, 1).End(xlUp).row To 2 Step -1
    If .Cells(i, 44).Value = .Cells(i - 1, 44).Value Then _
        .Rows(i).Delete
Next i
End With


End Sub

1 Ответ

0 голосов
/ 13 января 2020

Вы должны удалять строки сразу, а не в каждой строке. Вы можете использовать UNION метод , чтобы выполнить sh это. Это будет успешно делать то, что вы описываете. Если у вас есть проблемы, это связано с вашими данными.

Что еще более важно, это сделает вашу процедуру на один НАМНОГО быстрее.

Sub deleteDupes()
  Dim i As Long
With Sheets("Sheet1")

Dim killRng As Range

Set killRng = Rows(Rows.Count)

For i = .Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1
    If .Cells(i, 44).Value = .Cells(i - 1, 44).Value Then _
        Set killRng = Union(Rows(i), killRng)
Next i
End With

    killRng.EntireRow.Delete

End Sub

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...