Извлечение данных с одного листа на другой с несколькими критериями в Excel VBA - PullRequest
0 голосов
/ 26 сентября 2019

У меня есть большие данные с 6 столбцами на листе 2. Я хотел бы извлечь данные из листа 2 в лист 5 на основе нескольких критериев.
Данные моего листа 2 ...

Пример данных

поэтому я пишу следующий код для извлечения данных из листа 2 в лист 5.

Sheet2.Range("a1").CurrentRegion.AdvancedFilter _
Action:=xlFilterCopy, CriteriaRange:=Sheet5.Range("a3:d3"), _
CopytoRange:=Sheet5.Range("a10:k10"), Unique:=False
'Columns(6).AutoFit 

проблема в том, что при запуске кода выше отображаются все данные из листа 2, но это не соответствует моим критериям.

например, если пользователь выбирает следующие детали ... Место: США

Месяц: июль-19

Разнообразие: I

примечания: PR

вывод должен быть таким ... Пример вывода

1 Ответ

0 голосов
/ 26 сентября 2019

CriteriaRange ожидает заголовки И критерии, более того, CopyToRange будет работать, назначая ему только одну ячейку (вы не знали бы, что предварительно фильтровать количество строк, которое оно должно содержать при каждой фильтрации).Так со следующей настройкой на листе 1 и листе 5:

Лист1:

enter image description here

Лист 5:

enter image description here

Выполнение следующего кода:

Sub AdvancedFiltr()

Sheet2.Range("A1").CurrentRegion.AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Sheet5.Range("A1:F2"), CopyToRange:=Sheet5.Range("A4")

End Sub

Результаты в листе 5:

enter image description here


Некоторые замечания:

  • CriteriaRange: заголовки должны точно соответствовать заголовкам из базы данных.
  • CriteriaRange: вам не нужно иметь каждый заголовок,только те, по которым вы хотите фильтровать.
  • CopyToRange: Целесообразно очистить диапазон на Листе 5, прежде чем применять другой фильтр.
  • Я действительно думаю, что это отличная статья о AdvancedFilter, чтобы прояснить, как она работает.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...