Фильтр поиска

Автор Посетитель, 16 августа 2023, 16:57

Посетитель

Здравствуйте! Подскажите, пожалуйста.
Есть книга Эксель. В книге прописаны формулы для поиска данных на Листе 2 (поиск осуществляется по столбцу "Название товара"), а результат поиска выводится на Лист1.
Скажите, пожалуйста, как с помощью пользовательской формы VBA (кнопка "Фильтр" (Лист2)) изменить столбец в котором производится поиск.
Например, если в форме VBA (кнопка "Фильтр" (Лист2)) стоит галочка напротив "Название товара", то поиск производится в столбце "Название товара" и данные из всех колонок выводятся на Лист1, а если в форме VBA (кнопка "Фильтр" (Лист2)) стоит "№ Склада"  то поиск производится в столбце "№ Склада" и данные из всех колонок выводятся на Лист1. С другими кнопками аналогично.

Администратор

Формулу вы делали сами?

Посетитель

Спасибо. Нет, все, что связано с поиском взято с Ютуба.
Вот видео https://youtu.be/FQqnKChfI1c.
И по этому видео уже все под себя подстраивал.

Администратор

На первый взгляд ваша формула не смотрит заголовки столбцов.
Она работает следующим образом.
СТРОКА([@[Название товара]]) - номер строки, в которой находятся данные, в столбце Название товара.
СТРОКА(УТ_Фильтрация[[#Заголовки];[Название товара]]) - номер строки, в которой находится шапка таблицы.

Далее формула считает: номер строки, в которой данные, минус номер строки, в которой шапка.
Полученное число формула ищет в умной таблице "УТ_Данныедиски" в столбце "Столбец3" (у вас это первый столбец).

Я не вижу, где здесь используется заголовок столбца для поиска данных. Заголовок как таковой не ищется вообще.

Посетитель

Можете, пожалуйста, сказать, как заставить формулу учитывать заголовки?

Администратор

Опишите словами, что должна делать формула.

Посетитель

По активации кнопки OptionButton1 напротив текста «Название товара» (UserForm2).
При таком условии Эксель ищет данные в столбце «Название товара».Я в ячейку поиска на листе1 вписываю, например слово груши (слово из столбца «С») и Эксель выводит в таблицу на листе1 ячейки С3-К3.
По активации кнопки OptionButton2 напротив текста «№ Склада» (UserForm2).
При таком условии Эксель ищет данные в столбце «№ Склада». Я в ячейку поиска на листе1 вписываю, например цифру 3000(цифра из столбца «Д») и Эксель выводит в таблицу на листе1 ячейки С3-К3.
По активации кнопки OptionButton3 напротив текста «№ Склада» (UserForm2).
При таком условии Эксель ищет данные в столбце «№ Склада». Я в ячейку поиска на листе1 вписываю, например цифру 3000(цифра из столбца «Д») и Эксель выводит в таблицу на листе1 ячейки С3-К3.
Я хочу проводить поиск по разным критериям.
Активировал кнопку OptionButton1 напротив текста «Название товара» (UserForm2).
Ввел в ячейку поиска слово «груши» выпала вся информация из всех столбцов для груш.
Активировал кнопку OptionButton2 напротив текста «№ Склада» (UserForm2).
Ввел в ячейку поиска цифру «3000», опять выпала вся информация из всех столбцов для груш.

Администратор

Если пользователь выбрал в ячейке B3 "груши", то на листе "Лист1" не должны отображаться яблоки и гошощщ?

Посетитель


Администратор

А кто поиск делает? Какой-то макрос?
В B3 вы указали "груши", какие дальнейшие действия пользователя? Пользователь щёлкает какую-то кнопку?

Посетитель

Если в форме отметил кнопку "№ Склада" и после этого в ячейку В3 Лист1 ввел 3000, то тоже отображаются только груши

Посетитель

После ввода "груши" нажимаю кнопку "Найти" (Лист1). Либо Энтер

Администратор

Сейчас у вас есть макрос "Найти"? Или его надо сделать с нуля?

Посетитель

На кнопке "Найти" стоит записанный макрос (Кнопка16_Щелчок)

Посетитель

Вот такой макрос записался
'Открывает форму "UserForm2" по щелчку на кнопку "ФИЛЬТР"
Sub Кнопка16_Щелчок()
UserForm2.Show
End Sub