Фильтрация столбцов на основе массива с другого листа

У меня есть три листа: «Dane magazyn», «Sheet3» и «Dostawcy». Я хочу, чтобы мой Excel:

1) отфильтровать значения # N / A в col. J на листе «Dane magazyn». Все значения, которые должны оставаться после фильтрации, хранятся в Col. E на листе «Dostawcy» – 21 запись, но это будет больше в будущем.

2) выберите данные, оставшиеся после фильтрации и скопируйте их в «Sheet3»

Вот мой код:

Sub filtruj() Dim i As Long, arr As Variant, LastRow As Long Sheets("Dostawcy").Select With ActiveSheet LastRow = .Cells(.Rows.Count, "E").End(xlUp).Row End With arr = Sheets("Dostawcy").Range("E2:E" & LastRow).Value Sheets("Dane magazyn").Select With ActiveSheet **.Columns("J").AutoFilter Field:=1, Criteria1:=arr, Operator:=xlFilterValues** <---- here I get error End With 

Остальная часть кода …

Сообщение об ошибке, которое я получаю, это: «Ошибка времени выполнения« 1004 »:

Не удалось использовать метод AutoFilter класса Range "

сайты, которые я проверил (не все перечисленные)

Использование строкового массива в качестве критерия в автообновлении VBA

VBA присваивает диапазон массиву из другого листа

Самый быстрый способ чтения столбца чисел в массив

заранее спасибо

Вот рабочий код:

 Dim rng, rngToFilter As Range Dim i As Integer: i = 1 'set you range to area with values to compare against 'if you can, specify here exact range instead of whole column, it can increase efficiency Set rng = Sheets("Dostawcy").Range("E:E") 'set range to be filtered out, don't specify here whole column, 'in following loop it can result in overflow error Set rngToFilter = Sheets("Dane magazyn").Range("J1:J100") 'here we will iterate through all cells within the searched range, 'for every cell we will try to find it's value within the other range, 'if it succeeds, so it's not Nothing, then we copy it to Sheet3 For Each cell In rngToFilter 'if any cell causes the error, we will skip one iteration On Error GoTo ErrorHandler: If Not rng.Find(cell.Value) Is Nothing Then Sheets("Sheet3").Cells(i, 1).Value = cell.Value i = i + 1 End If ErrorHandler: Next cell 

Не используйте Select если это необходимо, это снижает эффективность программы.

  • excel vba - Filter RowSource заполнен Multicolumn ListBox (на userForm) с TextBox и ComboBox
  • EXCEL MACRO - выполнять vlookup только на пустых ячейках
  • Excel VBA - удаление строк по нескольким значениям из одного столбчатого фильтра
  • Используйте набор ключевых слов для извлечения значений со второго листа
  • «Worksheet_Change» перезаписывает перемещенные строки и не может обрабатывать промежутки между столбцами
  • Главный поворотный фильтр
  • Если в фильтре нет значения, тогда выход
  • Excel VBA фильтрует столбец, а затем копирует каждый элемент в коллекции области в соответствующую строку
  • Компоновка фильтра VBA по пользовательской форме с предложениями поиска
  • Таблица фильтров VBA и подмножество копирования итоговых столбцов в буфер обмена
  • Не отвечающее состояние во время поиска в VBA
  • Давайте будем гением компьютера.