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

введите описание изображения здесь

введите описание изображения здесь

введите описание изображения здесь

1 ответ1

0

Изменить - я понял, что вы заявили, что вы можете работать с сотнями критериев. Мой оригинальный ответ будет эффективен только по нескольким критериям. Я обновил код ниже, но изображения все еще могут ссылаться на старый VBA.

Вы можете сделать это с помощью модуля VBA, а затем даже создать кнопку для нажатия, которая будет фильтровать на основе значений, введенных вами в определенные ячейки. Вам понадобится вкладка разработчика на ленте, если она еще не отображена. Смотрите здесь, как это показать.

Сначала определите, какие ячейки будут содержать ваши критерии для фильтрации. На вашей первой картинке они есть в F3-F5. Это нормально, но когда диапазон фильтруется, эти ячейки могут стать скрытыми. Ради этой демонстрации я поместил диапазон в область, которая не исчезнет при фильтрации.

Затем нажмите Alt+F11, чтобы открыть редактор VBA, затем создайте "Новый модуль", выбрав его в раскрывающемся списке здесь:

В появившемся окне нового модуля введите следующий код (РЕДАКТИРОВАНИЕ - я понял, что вы потенциально имеете дело с сотнями критериев):

    Sub MultiSelectFilter()
Dim v As Variant

v = Split(Join(Application.Transpose(Range("A11:A13"))))
    Worksheets("Sheet3").Select
    Range("A1").AutoFilter
    Range("A1").AutoFilter Field:=1, Criteria1:=v, Operator:=xlFilterValues
End Sub

Вот как это работает. Сначала мы сообщаем Excel, что A11:A13 - это числа, которые мы хотим найти. Это то, что делает строка Dim v As Variant.

Затем мы сообщаем Excel, что это за значения. В моем случае от А11 до А13. Вы можете добавить или вычесть столько критериев поиска, сколько захотите.

Далее мы сообщаем Excel, какой диапазон мы хотим отфильтровать. Сначала выберите лист, затем скажите ему, какой диапазон фильтровать (в данном случае A1 - это столбец, который мы будем фильтровать). Затем мы сообщаем функции автофильтра, какие значения нужно искать с помощью Range("A1").AutoFilter Field:=1, Criteria1:=v, Operator:=xlFilterValues .

Теперь, когда вы вводите значения, вы можете запустить макрос MultiSelectFilter на вкладке разработчика в разделе "Макросы".

И это фильтрует диапазон:

Чтобы сделать шаг вперед и сделать его немного более удобным для пользователя, вы можете назначить макрос кнопке. Добавьте кнопку в разделе "Вставка" на вкладке разработчика, затем выберите макрос MultiSelectFilter.

Если вы новичок в VBA, это отличный проект для начала! Надеюсь это поможет.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .