Удалите повторяющиеся строки, каждая строка имеет длину 40 столбцов.что делать? - PullRequest
0 голосов
/ 08 сентября 2011

Ну, это не первый раз, когда я задаю этот вопрос здесь, но я не могу закончить. Я должен удалить дубликаты строк в столбце. скажем от

range("A1:A30000") have to delete all the duplicate rows in these columns

Я использовал предыдущие решения из моих предыдущих вопросов, заданных программистами в стеке потока. Они работают потрясающе, но не в этот раз. В прошлый раз у меня был каждый ряд из 15 столбцов, но в этот раз каждый ряд с 40 столбцами и ни один из скриптов не работал. ПК его просто зависает и иногда занимает 2 часа, это не то, что я хочу. Я использовал метод словаря, предложенный Иссуном, Джоном, Реафиди и Доком Брауном, даже если они не работают. Я не знаю почему.

Так что я подумал об использовании расширенных фильтров, но я не смог удалить дублирующиеся строки из vba. Я не нахожу его в Google, я вижу руководство с коробками, но не скрипт VBA, даже если я считаю, что он не работает нормально.

Range("A1:A5").AdvancedFilter Action:=xlFilterInPlace, Unique:=True

Что я должен сделать после применения этой строки. удалите дубликаты строк сейчас. Я помню, как копирование, но я плохо помню код и что-то вроде

xltypeinvisble:delete

Я плохо помню код. Я помню, что я читал в Google, теперь я не могу найти его.

Может кто-нибудь сказать мне, чтобы удалить дубликаты записей с помощью метода расширенного фильтра? Как вы думаете, в строках было по 40 столбцов в каждой, и это заставляло мои сценарии занимать много времени, а иногда зависать? В чем причина?

приветствуется любой другой метод, который быстрее (вероятно, словарный). Я верю, что люди говорят, что метод словаря, но я не знаю, что он не работает нормально, может быть ошибка кода или не уверен насчет причины. Он просто зависает. так что не могу знать почему, хорошо работает нормально для небольших данных, которые я тестировал. но не с большей.

любая помощь очень ценится!

1 Ответ

0 голосов
/ 08 сентября 2011

Я не знаком с однострочной командой, которую вы ищете, чтобы удалить все невидимые строки одновременно, но вы можете циклически проходить по строкам в диапазоне и вручную удалять их.

Если это все еще работает слишком медленно для вас, вы можете рассмотреть возможность добавления команд VBA, чтобы отключить обновление экрана и пересчет во время работы макроса.

Sub DeleteDUpes()
    Dim ThisRange As Range
    Dim NewRange As Range

    Set ThisRange = Range("A1:A30000")
    ThisRange.AdvancedFilter Action:=xlFilterInPlace, Unique:=True
    ' Loop through each row from bottom up, deleting rows hidden by filter
    For thisrow = ThisRange.Rows.Count To 1 Step -1
        Set NewRange = ThisRange.Resize(1).Offset(thisrow - 1, 0)
        If NewRange.EntireRow.Hidden Then
            r.EntireRow.Delete
        End If
    Next
End Sub
...