Фильтр листков VBA Loop с использованием нескольких переменных

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

Приведенный ниже код действительно работает и копирует данные из записей, которые соответствуют, к сожалению, «страна» – единственный критерий, который работает, а остальные ничего не делают.

То, что я пытаюсь сделать, – это настроить код, который я написал, чтобы получить все критерии для работы, и если критерии пусты в соответствующем поиске, то он игнорирует критерии, позволяющие копировать и вставлять любое значение в этой ячейке. Я думал, что добавление Если инструкции Else для всех критериев выполняли эту работу, но я не совсем уверен, как правильно добавить If Else statement в VBA для всех строк и сказать ей игнорировать критерии, если они пусты.

Sub search_and_extract_multicriteria() Dim datasheet As Worksheet 'where is the data copied from Dim reportsheet As Worksheet 'where is the data pasted to Dim country As String Dim SubType As String Dim ProductName As String Dim ProductFormula As String Dim Source As String Dim Rating As String Dim finalrow As Integer Dim i As Integer 'row counter Set datasheet = Sheet1 Set reportsheet = Sheet3 country = reportsheet.Range("A3").Value SubType = reportsheet.Range("C3").Value ProductName = reportsheet.Range("D3").Value ProductFormula = reportsheet.Range("E3").Value Source = reportsheet.Range("F3").Value Rating = reportsheet.Range("G3").Value reportsheet.Range("A16:K500").ClearContents datasheet.Select 'finalrow = Cells(Row.Count, 1).End(x1Up).Row For i = 2 To 500 'finalrow If Cells(i, 1) = country And Cells(i, 3) = SubType And Cells(i, 4) = ProductName And Cells(i, 5) = ProductFormula And Cells(i, 6) = Source And Cells(i, 2) = TestimonialType And Cells(i, 9) = Rating Then Range(Cells(i, 1), Cells(i, 11)).Copy 'copy columns 1 to 11 (A to K) reportsheet.Select Range("A200").End(xlUp).Offset(1, 0).PasteSpecial xlPasteValuesAndNumberFormats datasheet.Select End If Next i reportsheet.Select 'this is so that the report sheet is selected when the procedure ends End Sub 

Вместо цикла, как только использовать встроенный метод AutoFilter после проверки того, что переменная заполняется фактическим значением.

 With datasheet.Range(.Range("A1"), .Cells(500, 11)) If Len(country) Then .AutoFilter 1, country If Len(TestimonialType) Then .AutoFilter 2, TestimonialType If Len(SubType) Then .AutoFilter 3, SubType If Len(ProductName) Then .AutoFilter 4, ProductName If Len(ProductFormula) Then .AutoFilter 5, ProductFormula If Len(Source) Then .AutoFilter 6, Source If Len(Rating) Then .AutoFilter 9, Rating .Offset(1).SpecialCells(xlCellTypeVisible).Copy 'offset 1 to remove header row reportsheet.Range("A200").End(xlUp).Offset(1).PasteSpecial xlPasteValuesAndNumberFormats .AutoFilter 'reset filter End With 
  • Таблица заполнения Excel из одной ячейки
  • Найдите столбец, чтобы узнать, содержится ли строка в каждой ячейке другого столбца, вернуть третье значение
  • Цифры чисел внутри и снаружи скобок и создавать стрелки на основе значений в VBA или Excel
  • Если заявление & Countif объединено
  • возникли проблемы с получением формулы для работы со временем
  • IF = строка заголовка - требуется формула Excel
  • Excel - создание подписок на основе текстового фильтра
  • IF, объединяющие несколько столбцов
  • Если строка содержит определенное слово, скопируйте ячейку, содержащую это слово
  • автоматически заполнять данные строки для соответствия
  • Excel: условное форматирование подстановочных знаков
  • Interesting Posts

    ExcelDNA RTD не обновляет новые значения, если их не изменить вручную

    Нужна помощь в исправлении кода VBA / Macro для объединения нескольких вкладок в один

    Ошибка выполнения 91 при сортировке

    Метод 'Range' объекта '_Worksheet' failed – диапазон имен и ссылающийся на него в VBA

    Добавление предложения DISTINCT в SQL, возвращающем неправильные значения

    Вернитесь в VBA, не делайте то, что я ожидаю

    Поиск по шаблону Excel VBA

    Формула Excel: подсчитать ячейки, где значение – дата

    Предотвращение выхода из Excel

    Прокрутите строки и сравните значения в Excel

    Выбор только одной строки из листа excel (как часть слияния)

    Аутентификация запроса REST в надстройке Excel

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

    Соответствие двух списков в excel

    Изменение типа формулы, чтобы значения обновлялись без ссылки. Рабочая книга открыта

    Давайте будем гением компьютера.