Сравните таблицу со списком на другом листе и не удалите совпадений - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть следующий код, который сравнивает два списка (столбец A на листе 1 и столбец C на листе 2) и удаляет значения, которых нет в списке на листе 2. Этот код работает нормально, но не работает, когда оба столбца A на листе 1 и столбец C на листе 2 имеют таблицы. Пожалуйста, дайте мне знать, как я могу изменить этот код для работы с таблицами. Кроме того, как удалить совпадения из нескольких листов, имеющих список в константе столбца C (лист 2)?

Sub Stridhan()

Dim lr As Integer, x As Integer   
lr = ThisWorkbook.Sheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row
Application.ScreenUpdating = False  
For x = lr To 2 Step -1  
    If Application.WorksheetFunction.CountIf(Sheets("Sheet2").Range("C:C"), Sheets("Sheet1").Cells(x, 1).Value) = 0 Then  
        Sheets("Sheet1").Rows(x).EntireRow.Delete  
    End If  
Next x  
Application.ScreenUpdating = True  
End Sub

1 Ответ

0 голосов
/ 06 сентября 2018

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

Sub cycle_sheets()
For Each sh In Worksheets
    If sh.Name <> "Sheet2" Then
        'your code to cycle through the data where instead of Sheets("SheetX"). you use sh. like this
        sh.Rows(x).EntireRow.Delete
    End If
Next
End Sub

это будет проходить по всем рабочим листам и для всех имен, которые называются не так, как "Sheet2", будет выполнять то, что находится внутри if. Так что вам нужно только взять свой код, изменить ссылку на лист и поместить его в if.

Edit: если вы хотите, чтобы он пропускал строки, которые не видны из-за фильтрации, вы можете проверить строку, прежде чем определить, хотите ли вы удалить ее, используя

If sh.Rows(x).Hidden = False Then
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...