Удалите повторяющиеся строки, и каждая строка будет длиной 40 столбцов. что делать?

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

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

Я использовал предыдущие решения из моих предыдущих вопросов, заданных программистами в stackoverflow. Они работают потрясающе, но не в этот раз. В прошлый раз у меня была каждая строка из 15 столбцов, но на этот раз каждая строка из 40 столбцов, и ни один из скриптов не работал. Компьютер просто зависает и иногда занимает 2 часа, это не то, что я хочу. Я использовал метод словаря, предложенный Issun, Jon, Reafidy и Doc Brown, даже если они не работают. Не знаю почему.

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

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

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

xltypeinvisble:delete

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

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

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

любая помощь приветствуется!


person niko    schedule 08.09.2011    source источник


Ответы (1)


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

Если это по-прежнему выполняется слишком медленно для вас, вы можете рассмотреть возможность добавления команд 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
person PaulStock    schedule 08.09.2011