Фильтрация

При работе с проектными планами, содержащими большое число задач и ресурсов, часто требуется отображать в таблицах не все доступные данные, а только некоторую их часть. Для отбора строк, отображаемых в таблицах, служат средства фильтрации: структурная фильтрация, автофильтр и фильтры.

Структурная фильтрация

Проектный план имеет структуру, или уровни вложенности. Есть задачи, находящиеся на верхнем уровне проекта, а также задачи, расположенные «внутри» фаз, их подфаз и т. д.

Фильтрация на основе расположения задач в структуре плана проекта — самый простой способ сократить число отображаемых строк в таблицах. Для ее осуществления необходимо указать, задачи с каким максимальным уровнем вложенности вы хотите видеть в плане.

Структурная фильтрация осуществляется с помощью команды меню Project > Outline > Show (Проект > Структура > Показать). При этом открывается список уровней вложенности задач (Outline Level (Уровень)) — от 1 до 9 (рис. 4.3, файл 1.mpp).

ПРИМЕЧАНИЕ

В таблице рядом с элементами, содержащими элементы нижнего уровня, расположены значки, позволяющие отображать и скрывать их. Подменю Project > Outline (Проект > Структура) содержит команду Hide Outline Symbols (Скрыть символы структуры), с помощью которой эти значки могут быть убраны. Для отображения этих значков можно воспользоваться этой же командой — она поменяет название на Show Outline Symbols (Показать символы структуры).

Выбрав первый уровень, вы увидите в таблице только задачи и фазы самого высокого уровня, выбрав второй — фазы и задачи верхнего уровня и их подзадачи. Выбор любого следующего уровня сохраняет видимыми задачи и фазы предыдущего уровня и отображает новые. Для отображения всех фаз и задач плана проекта служит команда меню AUSubtasks (Все подзадачи).

Меню для структурной фильтрации списка задач проекта

Рис. 4.3. Меню для структурной фильтрации списка задач проекта

Для быстрого обращения к меню уровней вложенности задач можно использовать кнопку Show (Показать) на панели инструментов Formatting (Форматирование). Нажатие на нее (рис. 4.4, файл 1.mpp) сразу отображает это меню.

Обращение к меню структурной фильтрации с помощью панели инструментов Formatting (Форматирование)

Рис. 4.4. Обращение к меню структурной фильтрации с помощью панели инструментов Formatting (Форматирование)

Для того чтобы лучше представить, как MS Project определяет уровни задач, можно вставить в таблицу столбец Outline Level (Уровень структуры). Число, которое будет отображаться в этом столбце напротив каждой задачи и фазы (рис. 4.5, файл 1.mpp), и будет номером ее уровня, на основании которого осуществляется сортировка.

Автофильтр

Автофильтр — это широко применяемая в продуктах Microsoft методика фильтрации данных в таблицах. После включения режима автофильтра в заголовке каждой из колонок появляются кнопки, с помощью которых осуществляется фильтрация строк в таблице. Нажатием кнопки вызывается раскрывающееся меню, позволяющее определить значение или список значений, которые должна содержать колонка. После выбора такого значения в таблице отображаются только те строки, в которых колонка содержит определенное значение.

Включение автофильтра осуществляется с помощью кнопки AutoFilter (Автофильтр) на панели инструментов Formatting (Форматирование) или с помощью команды меню Project > Filtered for > AutoFilter (Проект > Фильтр > Автофильтр). Сразу после выбора команды меню или нажатия кнопки панели инструментов в заголовках столбцов отображаются кнопки для фильтрации (см. рис. 4.5, файл 1.mpp).

После включения автофильтра в заголовках столбцов таблицы появились кнопки для фильтрации

Рис. 4.5. После включения автофильтра в заголовках столбцов таблицы появились кнопки для фильтрации

Для выбора значений, которые должна содержать колонка, нужно щелкнуть на кнопке в ее заголовке, после чего откроется список для определения критерия фильтрации (рис. 4.6, файл 1.mpp).

После щелчка на кнопке в заголовке колонки отображается список критериев фильтрации

Рис. 4.6. После щелчка на кнопке в заголовке колонки отображается список критериев фильтрации

Раскрывающийся список критериев фильтрации имеет определенную структуру: первая строка всегда содержит вариант (All) — (Все), во второй строке предлагается (Custom) — (Условие), а последующие строки списка содержат значения, встречающиеся в столбце.

ПРИМЕЧАНИЕ

Раскрывающийся список автофильтра может содержать дополнительные строки в случае, если он применяется в колонке, содержащей даты. Тогда между строкой (Custom) — (Условие) и строками со значениями дат вставляются дополнительные предопределенные параметры фильтрации.

Например, задачи в плане работ в проекте 1.mpp имеют только три уровня вложенности. Поэтому в столбце Outline Level (Уровень структуры), к которому на рис. 4.6 применяется автофильтр, содержатся значения от 1 до 4.

После выбора нужного пункта в списке (например, выберем 2) осуществляется фильтрация и содержимое таблицы обновляется. При этом заголовок колонки, значения которой являются критерием фильтрации, выделяется синим цветом (рис. 4.7, файл 2.mрр).

Таблица отфильтрована по столбцу Outline Level (Уровень структуры), критерием фильтрации является значение 2

Рис. 4.7. Таблица отфильтрована по столбцу Outline Level (Уровень структуры), критерием фильтрации является значение 2

Во многих случаях в качестве критерия должно служить не одно значение, а н сколько, или же определенное условие на значение, например «не более 3», «меньше или равно 3» и т. д. Для ввода таких расширенных критериев фильтрат служит диалоговое окно настройки автофильтра, вызываемое с помощью пунк1 (Custom) — (Условие) в раскрывающемся списке автофильтра (рис. 4.8, файл 2.mрр).

Диалоговое окно настройки автофильтра

Рис. 4.8. Диалоговое окно настройки автофильтра

В названии единственного раздела этого диалогового окна указано название столбца, по значениям которого осуществляется фильтрация. В нашем случае это поле Outline Level (Уровень структуры). При загрузке в диалоговом окне отображается текущий критерий автофильтра. Критерий состоит из условия (например, «равно»), отображаемого в левом раскрывающемся списке, и значения (например, 2), причем набор условий, предлагаемых для отбора строк, зависит от типа поля (табл. 4.1).

НазваниеПереводТип поля
ТекстЧисло
Equalsравно + +
does not equalне равно + +
is greater than больше + +
is greater than or equal toбольше или равно + +
is less thanменьше + +
is less than or equal toменьше или равно + +
is withinв пределах + +
is not withinвне + +
Containsсодержит +
does not containне содержит +
contains exactly содержит точно +

Таблица 4.1. Виды условий, которые можно использовать для фильтрации

Под полями типа «Текст» понимаются поля, содержащие и цифровую, и буквенную информацию (текст, длительность и т. д.).

Под полями типа «Число» понимаются ноля, содержащие только цифровую информацию (числа, даты, стоимость и т. д.).

В диалоговом окне можно указать два условия и определить, должны ли они оба выполняться при фильтрации или достаточно любого из них. Для того чтобы обязательным являлось выполнение обоих условий, нужно выбрать переключатель And (И), а требование выполнения хотя бы одного условия устанавливается переключателем Or (Или).

СОВЕТ

В качестве значения условия автофильтра можно задавать не только число, но и значения в других столбцах. Например, если вы хотите отобрать те строки, где фактическая стоимость больше запланированной, то в диалоговом окне настройки автофильтра для поля Actual Cost (Фактические затраты) нужно указать условие «больше», а в качестве значения в квадратных скобках название поля Cost (Затраты): [Cost] ([Затраты]).

Например, отберем те строки, у которых значение в столбце Outline Level (Уровень структуры) больше или равно 3. Для этого в поле условия выберем соответствующее условие проверки и в поле значения выберем значение 3, оставшееся от предыдущего условия фильтрации. Для проведения фильтрации нажмем кнопку ОК. Таблица (рис. 4.9, файл З.mpp) стала содержать больше строк, чем ранее (см. рис. 4.7, файл 2.mpp), поскольку нынешнее условие более мягкое, чем предыдущее (при предыдущем условии отбирались строки с Outline Level, равным 2, а при нынешнем будут отбираться строки с Outline Level, равным 3 и менее).

После проведения сортировки с более мягкими условиями в таблице отображается больше строк

Рис. 4.9. После проведения сортировки с более мягкими условиями в таблице отображается больше строк

Часто требуется отфильтровать таблицу не по одному столбцу, а по нескольким. В таких случаях нужно сначала отфильтровать таблицу по одному столбцу, указав соответствующий критерий, а затем — по другому. Например, можно выбрать из уже отфильтрованного по столбцу Outline Level (Уровень структуры) списка задач те, у которых длительность меньше одной недели. Для этого щелкнем на значке автофильтра в заголовке поля Duration (Длительность) и в раскрывшемся меню выберем пункт <= 1 week (<= 1 недели). Теперь заголовки уже двух колонок выделены синим, а число записей в строке уменьшилось (рис. 4.10, файл 4.mрр).

Для отмены фильтрации по одному из столбцов нужно войти в меню автофильтра, щелкнув на заголовке столбца, и выбрать в нем пункт (АИ) — (Все). Для отмены фильтрации по нескольким столбцам сразу нужно выключить автофильтр. Выключение происходит тем же способом, что и включение.

После фильтрации по второму столбцу число отображенных в таблице записей уменьшилось

Рис. 4.10. После фильтрации по второму столбцу число отображенных в таблице записей уменьшилось

Фильтры

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

Фильтр — это сохраненный набор условий и значений фильтрации, согласно которому происходит отбор информации для отображения в представлении MS Project. Фильтры содержат условия на значения в столбцах, и поэтому (так же, как и таблицы) делятся на два типа: относящиеся к ресурсам и задачам. Соответственно, применить фильтр можно только к таблице одного типа с ним.

MS Project содержит набор предопределенных фильтров, которые позволяют быстро отбирать из таблиц наиболее необходимые данные. Список этих фильтров с описанием каждого из них можно просмотреть с помощью ссылки Доступные фильтры на странице Полезные страницы справки MS Project 2002 в индексном файле.

Работа с фильтрами осуществляется через подменю Project > Filtered for: (Проект > Фильтр). В пункте Filtered for: (Фильтр) (рис. 4.11, файл 1.mpp) указано название выбранного в данный момент фильтра, а при наведении на него курсора открывается подменю со списком фильтров, которые можно использовать для текущей

таблицы. В подменю отображается неполный список фильтров. Полный список фильтров можно получить, щелкнув на пункте More Filters (Другие фильтры).

Работа с фильтрами осуществляется через подменю Project > Filtered for: (Проект > Фильтр)

Рис. 4.11. Работа с фильтрами осуществляется через подменю Project > Filtered for: (Проект > Фильтр)

Помимо меню для быстрого доступа к полному списку фильтров можно воспользоваться панелью форматирования (рис. 4.12, файл 5.mpp). Как вы можете заметить, первым пунктом в списке (и на панели, и в меню) идет фильтр All Tasks1 (Все задачи), при использовании которого отображаются все записи таблицы. Этот фильтр включен по умолчанию. (При открытой таблице с информацией о ресурсах фильтр будет называться All Resources (Вce ресурсы)).

Панель форматирования позволяет получить быстрый доступ к фильтрам

Рис. 4.12. Панель форматирования позволяет получить быстрый доступ к фильтрам

При выборе любого другого фильтра данные в таблице отбираются в соответствии с условиями фильтрации. Например, если включить фильтр, отбирающий только критические задачи (пункт Critical (Критические задачи)), то число строк в таблице сразу уменьшится (рис. 4.13, файл 5.mpp).

После включения фильтра, отбирающего критические задачи (этот фильтр выбран на панели форматирования), число строк, отображаемых в таблице, заметно уменьшилось

Рис. 4.13. После включения фильтра, отбирающего критические задачи (этот фильтр выбран на панели форматирования), число строк, отображаемых в таблице, заметно уменьшилось

Фильтрация может выполняться и в другом режиме, когда строки таблицы, удовлетворяющие критериям, выделяются цветом, а остальные продолжают отображаться. Для того чтобы выделить цветом соответствующие условиям фильтра строки, нужно выбрать команду меню Project > Filtered for > More Filters (Проект > Фильтр > Другие фильтры), а затем в открывшемся диалоговом окне со списком всех фильтров (рис. 4.14) выбрать нужный фильтр и нажать кнопку Highlight (Выделить). Переключатели вверху диалогового окна позволяют переключаться между списками фильтров разных типов.

Выбранный в списке фильтр можно отредактировать, а также скопировать и создать на его основе новый фильтр, нажав соответствующую кнопку диалогового окна. Нельзя изменить лишь три фильтра: All Tasks/All Resources (Все задачи/Все Ресурсы) и Using Resource (Использование ресурса).

Создание фильтра

Для создания собственного фильтра следует в диалоговом окне More Filters (Другие фильтры) (см. рис. 4.14) выбрать тип фильтра и нажать кнопку New (Создать).

После этого откроется диалоговое окно определения свойств фильтра (рис. 4.15, файл 7.mрр).

Диалоговое окно со списком всех фильтров напоминает аналогичное окно со списком таблиц

Рис. 4.14. Диалоговое окно со списком всех фильтров напоминает аналогичное окно со списком таблиц

Диалоговое окно редактирования свойств фильтра аналогично диалоговым окнам определения свойств таблиц и настройки автофильтра

Рис. 4.15. Диалоговое окно редактирования свойств фильтра аналогично диалоговым окнам определения свойств таблиц и настройки автофильтра

Диалоговое окно содержит уже знакомые элементы. В поле Name (Имя) вводится название фильтра. Флажок Show in menu (Показывать в меню) определяет, будет ли название фильтра включено в список, отображаемый в подменю Project > Filtered for: (Проект > Фильтр).

В центре диалогового окна находится раздел Filter (Фильтр), в котором определяется критерий отбора данных. Поскольку критерий может состоять из нескольких условий, для их ввода предназначена таблица, состоящая из нескольких столбцов. Каждая строка таблицы соответствует условию.

Первый столбец, And/Or (И/Или), определяет связь условий внутри критерия: должны ли строки, отбираемые фильтром, соответствовать всем условиям (И) или же достаточно соответствия только некоторым (Или). При наличии в таблице единственного условия заполнять это поле не нужно.

ВНИМАНИЕ

Группы условий, объединенных с помощью логических операторов, можно объединять логическими операторами с другими группами или условиями, то есть как бы заключать в скобки. Например, на рис. 4.15 первые два условия объединены оператором Or (Или) друг с другом и оператором And (И) с третьим условием. Чтобы создать условие, объединяющее группу, нужно создать новую строку и поместить на нее только условие.

Во втором столбце, Field Name (Имя поля), определяется, на основании какого поля будет осуществляться фильтрация. Название поля выбирается из списка, в котором представлены все названия полей из «внутренней» таблицы соответствующего типа.

Третий столбец, Test (Проверка), содержит логическое условие, например «равно». Условие выбирается из списка, причем этот список может содержать разный набор условий в зависимости от типа данных в поле Field Name (Имя поля) (см. табл. 4.1).

И последний столбец, Value(s) (Значения), определяет, с каким значением при проверке условия сравниваются данные из столбца Field Name (Имя поля). В качестве значений могут выступать как произвольные величины, вводимые вручную, так и значения других столбцов таблицы. Например, на рис. 4.15 первое условие фильтра требует, чтобы отбирались задачи, стоимость работ по которым составляет более $1000. А на рис. 4.16 (файл 6.mрр) фильтр для отбора задач, стоимость которых превысила бюджет, отсеивает их, сравнивая реальный объем работ с изначально запланированным.

СОВЕТ

В MS Project есть возможность создавать фильтры, запрашивающие значение для сравнения при каждом запуске (например, минимальную стоимость работ по задаче). Для того чтобы создать такой интерактивный фильтр, нужно в поле Value(s) (Значения) указать в кавычках текст, который фильтр будет выводить в качестве вопроса, и знак вопроса, например так: «Минимальная стоимость задачи:»?.

Примером такого фильтра является стандартный фильтр Data Range (Диапазон дат). На его примере видно, что запросы значений можно создать для каждого из условий фильтра. Если перечислить такие условия через точку с запятой, то фильтр отобразит поочередно несколько запросов, в зависимости от того, сколько условий будет перечислено. Например, можно задать условие проверки is within (внутри) и затем в поле значения ввести текст: «Минимум:»?; «Максимум:»?. В этом случае программа отобразит запрос на ввод минимального и максимального значений для фильтрации.

Кнопки, расположенные над таблицей условий, используются для выполнения операций над ее строками. Кнопки Cut Row (Вырезать строку) и Copy Row (Копировать строку) позволяют поместить строку в буфер обмена (в первом случае — с удалением из таблицы). Вставить скопированную или вырезанную строку можно с помощью кнопки Paste Row (Вставить строку).

Чтобы вставить строку в таблице между существующими строками, нужно установить курсор на ту строку, над которой необходимо вставить новую, и нажать кнопку Insert Row (Добавить строку). Удаление строк осуществляется с помощью кнопки Delete Row (Удалить строку), причем перед удалением предупреждение не будет отображаться.

Фильтр, выбирающий задачи с превышением бюджета, сравнивает реальный объем работ по задачам с изначально запланированным

Рис. 4.16. Фильтр, выбирающий задачи с превышением бюджета, сравнивает реальный объем работ по задачам с изначально запланированным

Флажок Show related summary rows (Показывать связанные суммарные строки) определяет, будут ли при фильтрации отображаться только задачи, соответствующие условиям (в таком случае не прослеживается структура плана проекта), или же вместе с задачами будут отображаться и названия фаз, в которые эти задачи включены.

Пример создания собственного фильтра

Предположим, что нам нужно создать фильтр, отбирающий задачи стоимостью больше $1000 или длительностью не менее недели. В созданный фильтр (назовем его Фильтр 1) поместим два условия: Cost is greater than $1000 (Стоимость больше $1000) и Duration is greater than or equal to Iw (Длительность больше или равна 1н.). Второе условие должно быть связано с первым с помощью оператора Or (Или). Установим флажки Show related summary rows (Показать относящиеся к задачам фазы) и Show in menu (Показывать в меню). Настройки этого фильтра представлены на рис. 4.16 (файл б.mpp). Теперь применим фильтр, выбрав его в меню Project > Filtered for: (Проект > Фильтр), и взглянем на таблицу (рис. 4.17, файл 6.mрр).

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

Выберем команду меню Project > Filtered for > More Filters (Проект > Фильтр > Другие фильтры), где уже выделен курсором Фильтр 1, и нажмем кнопку Edit (Изменить). В открывшемся диалоговом окне сбросим флажок Show related summary rows (Показывать связанные суммарные строки) и нажмем ОК. Теперь в диалоговом окне со списком фильтров, в которое мы автоматически вернулись, нажмем кнопку Apply (Применить). Однако результат действия модифицированного фильтра остался тем же.

После применения созданного нами Фильтра 1 в таблице отображаются только задачи длительностью более недели и стоимостью более $1000

Рис. 4.17. После применения созданного нами Фильтра 1 в таблице отображаются только задачи длительностью более недели и стоимостью более $1000

Проблема в том, что в MS Project фазы считаются видом задач (суммарной задачей). Следовательно, фазы, содержащие задачи, отвечающие условиям фильтрации, в нашем случае тоже удовлетворяют условиям фильтрации (так как стоимость или длительность фазы всегда больше или равна цене или длительности задачи).

Для того чтобы устранить фазы из результатов фильтрации, нужно добавить в фильтр дополнительное условие. Это условие будет использовать поле Summary (Суммарная задача), которое у фаз имеет значение Yes (Да), а у задач — No (Нет). В диалоговом окне определения свойств Фильтра 1 добавим условие Summary equals No (Суммарная задача равна Нет). Поскольку это условие должно выполняться одновременно с первым и вторым условием, а они соединены оператором Or (Или), то для связи нового условия с предыдущими стоит воспользоваться групповой связью условий.

Групповая связь условий — это возможность соединить с помощью логической связи (И или Или) не одно условие с другим, а группу условий с другой группой. Группа условий — это несколько условий, объединенных различными типами связи.

Для реализации такой связи в строке, следующей после группы условий, вставляется только оператор логической связи, а в строке, следующей за этой, продолжается размещение условий. В таком случае фильтр осуществляет сортировку сначала по одной группе условий, а затем по другой (если того требует связь между группами).

Для того чтобы связать наше новое условие с группой из двух предыдущих условий, вставим между ним и вторым условием из группы строку и в ней в поле And/Or (И/Или) выберем подходящее нам условие (И). Такой фильтр настроен на рис. 4.15, а результаты его действия видны на рис. 4.18 (файл 7.mрр).

Модифицированный Фильтр 1 отбирает только задачи, игнорируя фазы проекта

Рис. 4.18. Модифицированный Фильтр 1 отбирает только задачи, игнорируя фазы проекта

Создание фильтра на основе существующего

Фильтр, как и таблицу, можно создать на основе существующего фильтра. Для этого нужно выбрать команду меню Project > Filtered for > More Filters (Проект > Фильтр >Другие фильтры) и выделить в списке исходный фильтр, а затем нажать кнопку Сору (Копировать). Откроется диалоговое окно определения свойств фильтра, поля которого будут заполнены в соответствии со свойствами и критерием исходного фильтра (рис. 4.19, файл 7.mpp). Название исходного фильтра будет изменено на Copy of (Копия) <название исходного фильтра>.

Новый фильтр можно отредактировать с помощью уже известных приемов и сохранить, нажав кнопку ОК.

Копируем фильтр Completed Tasks (Выполненные задачи)

Рис. 4.19. Копируем фильтр Completed Tasks (Выполненные задачи)

Создание фильтра на основе автофильтра

Часто условия автофильтра бывают настолько удачными, что хочется их сохранить в виде фильтра, для того чтобы постоянно использовать в дальнейшем. Для этого в диалоговом окне настройки автофильтра (см. рис. 4.8) нужно нажать кнопку Save (Сохранить). Это приведет к открытию диалогового окна определения свойств фильтра, поля которого будут заполнены в соответствии с критерием автофильтра. В качестве названия фильтра будет предложено Filter 1 (Фильтр 1).