Страницы: 1
RSS
Автоматическая (полуавтоматическая) фильтрация работников
 
Приветствую Вас уважаемые екселевцы.
Существует справочник (ФИО, телефоны, отдел и адрес эл.почты.), а так же перечень типовых проектов (допустим их 10 штук). Необходимо реализовать:
1. Автоматическая фильтрация отдела при выборе его из выпадающего списка.
2. Автоматическая фильтрация нескольких отделов (или работников) при выборе типового проекта в котором задействованы несколько отделов.
Так вот с первым пунктом я с помощью примеров справился, то есть я выбираю отдел - жмякаю кнопку - бдынч - формируется перечень работников отдела, а вот с вторым бьюсь уже третий день.
Есть таблица с признаками кто из работников каким проектом занимается. Наименование проекта выбирается из выпадающего списка типовых проектов .
Основная трудность в том что один и тот же работник может быть задействован в разном количестве типовых проектов. Кто то во всех десяти, а кто то только в одном.
Наставьте на путь истинный пожалуйста.
Заранее благодарю.
 
Я не нашел кнопки как привязать файл  :cry:
 
прямо под местом, куда вводите текст сообщения, синяя ссылка "Загрузить файлы".
F1 творит чудеса
 
Вот слепошара
 
Доброе утро.
Может просто на словах поясните в какую сторону двигаться?
 
Доброе утро.
Задача оказалась не по зубам гуру екселя? :)
 
Тимур Магадеев, у Вас не вопрос, а ТЗ. С ТЗ обращайтесь в ветку "Работа", пожалуйста.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Да я не прошу сделать все за меня, мне совет нужен был, я почему то думал что совет можно и бесплатно получить.
 
Тимур Магадеев, тогда попробуйте перефразировать Ваш вопрос. Судя по обилию помогающих Вас не поняли, а вытягивать из ТС подробности и задавать уточняющие вопросы не всегда бывает у форумчан желание.
Перечитал Ваш вопрос. Открыл файл. Не понял, в чём конкретно нужно помочь.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Хорошо я постараюсь изложить более понятно.
1. Существует справочник с ФИО, адресами телефонами в котором каждому работнику отведена роль для участия в проекте.
2. Участие в том или ином проекте отображается заштрихованным квадратом черного цвета в таблице с шапкой "Отвечают за проекты".
3. Номера столбцов в таблице "Отвечают за проекты" соответствуют наименованию проектов на листе dat (можно было и в шапке таблицы сразу указать наименования но становится нечитабельно)
4. Существует выпадающий перечень с наименованиями проектов

ЗАДАЧА: автоматическая фильтрация работников (в соответствии с закрашенными квадратами) при выборе проекта из выпадающего списка.
Говоря иначе - если я выбираю проект №1 то должны остаться те работники у которых заштрихован квадрат в столбце 1 таблицы "Отвечают за проекты".
Немного обновил файл для удобства чтения.
 
Тимур Магадеев, навскидку. Попробую обратить Ваше внимание на расширенный фильтр. Почитайте по нему в приёмах.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Читал я про все фильтры, сложность в том что при выборе из выпадающего списка я макросом вставляю данные по номеру проекта в диапазон условий, а по остальным проектам вставляются нули и из за этого автофильтр корректно не работает.
Явно есть другой способ но перерыл форумы и сайты - не нашел ничего похожего.
Изменено: Тимур Магадеев - 26.07.2016 09:51:12
 
Ну вообще-то ничего сложного на первый взгляд: для решения задачи ставьте автофильтр на таблицу "Отвечают за проекты" на столбец и на номер, равный индексу выбранного элемента из выпадающего списка.
 
Мне нужно чтобы фильтровал по всей таблице сразу а не по одному столбцу, с одним столбцом проблем нет.
Я так реализовал выбор отдела - посмотрите как он работает, по проектам нужно так же.
Изменено: Тимур Магадеев - 26.07.2016 10:10:41
 
Цитата
Тимур Магадеев написал:
Если я выбираю проект №1 то должны остаться те работники у которых заштрихован квадрат в столбце 1 таблицы "Отвечают за проекты"
Это условие достигается фильтрацией именно одного столбца в Вашей таблице. Либо сформулируйте задачу по-другому. Вам нужна мультифильтрация?
Изменено: Влад - 26.07.2016 10:31:49 (уточнил формулировку)
 
Я выбираю проект из выпадающего списка, я не знаю что такое мультифильтрация, но мне нужно чтобы таблица (где может быть и 20 проектов) сама поняла по какому столбцу отфильтровать.
 
Так я про это говорю)  Номер позиции выбранного элемента из списка (Ваша ячейка АС12) + 17 = номер нужного столбца, по которому Вы должны задать автофильтр с условием "непустые".
 
Блин че то совсем лыжи не едут... я в курсе что в АС12 у меня номер нужного столбца, но откуда и зачем +17?
 
Первый столбец Вашей таблицы "Отвечают за проекты" - R, т.е. 18 с начала листа. Так как автофильтр у Вас установлен тоже с начала листа, то порядковый номер поля фильтрации по этому столбцу - также 18. Поэтому если в АС12 будет 1, то нужно фильтровать 18 столбец, 2 - 19, 3 - 20 и т.д., т.е. разница всегда 17.  
Изменено: Влад - 26.07.2016 12:17:07
 
Автофильтрация по номеру столбца? Плохо, я такое никогда не делал, и в приемах не нашел.
 
Влад говорит о том, что повесьте на выбор отдела макрос(запись макрорекордером):
Код
ActiveSheet.Range("$A$7:$OW$72").AutoFilter Field:=18, Criteria1:=RGB(0, 0 _
        , 0), Operator:=xlFilterCellColor
Только измените 18 ссылкой на поле
Код
ActiveSheet.Range("$A$7:$OW$72").AutoFilter Field:=Range("AC12") + 17, Criteria1:=RGB(0, 0 _
        , 0), Operator:=xlFilterCellColor
Изменено: StepanWolkoff - 26.07.2016 12:51:31
 
Фух теперь понял, сделал, получилось.
Только еще вопрос - что прописать в макросе чтобы он сбрасывал результат предыдущего фильтра, а то он фильтрует уже в отфильтрованном.
 
Цитата
Тимур Магадеев написал:
чтобы он сбрасывал результат предыдущего фильтра
пользуйтесь макрорекордером:
Код
ActiveSheet.ShowAllData
только добавьте обработку, на случай, если нет ни одного фильтра
Изменено: StepanWolkoff - 26.07.2016 14:48:48
 
Не получается, постоянно ругается на какую то хрень.
До этого пользовался макрорекордером, но там были простые действия, а как соединить уже написанный макрос с еще одним действием или дописать его не знаю.
 
У меня не ругается
Код
Sub sp()
On Error Resume Next
ActiveSheet.ShowAllData
ActiveSheet.Range("$A$7:$OW$72").AutoFilter Field:=Range("AC12") + 17, Criteria1:=RGB(0, 0 _
        , 0), Operator:=xlFilterCellColor
End Sub
 
Вот про этот "On Error Resume Next" я не знал.
Все заработало. Парни спасибо большое за потраченное на меня время. Удачи вам в работе и по жизни.
Страницы: 1
Наверх