RemoveDuplicates возвращает ошибку, если нет дубликатов - PullRequest
1 голос
/ 01 ноября 2019

Код, показанный ниже, получен из этого примера: excel: проверка на наличие дублирующихся строк на основе 3 столбцов и сохранение одной строки

Sub Testing()

Dim lastrow As Long

    With ThisWorkbook.Worksheets(1)
        If Application.WorksheetFunction.CountA(.Cells) <> 0 Then
            lastrow = .Cells.Find(What:="*", _
                          After:=.Range("A1"), _
                          Lookat:=xlPart, _
                          LookIn:=xlFormulas, _
                          SearchOrder:=xlByRows, _
                          SearchDirection:=xlPrevious, _
                          MatchCase:=False).Row
        Else
            lastrow = 1
        End If            

        .Range("A1:M" & lastrow).RemoveDuplicates Columns:=Array(1, 4, 5, 6, 7, 11), _
            Header:=xlYes               
    End With 
End Sub

Код работает нормально при наличии дубликатов. Но если нет, он возвращает ошибку. Поэтому мне было интересно, есть ли способ быстро посчитать количество дубликатов, чтобы, возможно, поставить условие или что-то в этом роде.

1 Ответ

2 голосов
/ 01 ноября 2019

Congrats! Это кажется ошибкой в ​​Excel, которая появляется, когда столбец без начального значения фильтруется. Для репликации достаточно написать следующие данные на новом листе Excel (новая часть важна):

enter image description here

Затем запустите код и получите ошибку 1004. Почему-то VBA недовольна тем, что столбцы 7 и 11 фильтруются, хотя по умолчанию в них нет данных. Затем увеличьте размер поля до M :

enter image description here

Затем запустите его снова. Оно работает. Теперь удалите данные, как на первом рисунке. Запустите это снова. Это работает.

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