Автоматическая сетевая диаграмма проекта в MS EXCEL

Построим сетевую диаграмму проекта на диаграмме MS EXCEL. Сетевая диаграмма будет автоматически перестраиваться при изменении связей между работами. Для этого нам потребуется автоматически определить все пути проекта (не только критические). 

В статье Метод критического пути в MS EXCEL сетевая диаграмма проекта была построена на листе MS EXCEL. 

К сожалению, при изменении связей между работами данную диаграмму необходимо перестраивать в ручную, что может быть достаточно трудоемко. Чтобы этого избежать, используем диаграмму типа Точечная (XY Scatter), на которой точками обозначим работы, а стрелками - связи между работами.

СОВЕТ: Подробнее о построении диаграмм см. статью Основы построения диаграмм в MS EXCEL.

Постановка задачи

Предположим, что нам требуется отобразить связи проекта, состоящего из 7 работ (от А до G), также заданы вехи начала (Start) и окончания проекта (Finish).

Как видно из диаграммы, связи между работами заданы так, что существует 3 пути:

  1. Start-A-D-Finish
  2. Start-B-E-G-Finish
  3. Start-C-F-Finish

Изобразим на диаграмме типа Точечная эти работы и связи между ними.

Пусть между работами D и G требуется создать связь (выделено красным на диаграмме ниже).

Это приведет к тому, что число путей проекта увеличится с 3-х до 4-х: добавится путь Start-А-D-G-Finish.

Нам требуется, чтобы точечная диаграмма была автоматически перестроена и автоматически был произведен подсчет нового количества путей.

Эта статья о том как создать такую диаграмму (см. файл примера). В дальнейшем, идеи этой статьи будут использованы для автоматического отображения на сетевой диаграмме критического (или критических) путей (см. статью Автоматическая сетевая диаграмма проекта с критическим путем в MS EXCEL). Это удобно на этапе планирования проекта, когда уточняются связи между работами и длительности самих работ. В данной статье не используются длительности работ, а лишь связи между ними. Основной смысл статьи - показать как реализован автоматический подсчет путей и их отображение на диаграмме.

ВНИМАНИЕ! Построение данной сетевой диаграммы в этой статье приведено лишь с целью демонстрации технической реализуемости такого построения в MS EXCEL. Не ставилось целью сделать "удобную программу для пользователей". Это означает, что при изменении пользователем количества работ/ добавления связей между работами, переименовании листов, рядов диаграммы и других изменений в файле примера, может потребовать дополнительной настройки файла. Такая настройка от пользователя потребует серьезных знаний MS EXCEL и времени.

Задаем связи между работами

В отличие от подхода изложенного в статье Метод критического пути в MS EXCEL, где мы задавали для каждой работы ее предшественников, в этой статье зададим для каждой работы ее последователей.

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

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

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

=ЕСЛИОШИБКА(
ИНДЕКС($A$22:$A$29;
НАИБОЛЬШИЙ(
ЕСЛИ($A23=$F$22:$H$29;СТРОКА($F$22:$F$29)-СТРОКА($F$21);"");L$20));"")

Сначала, для каждой работы определим, для каких работ она является последователем. Это реализовано с помощью функции ЕСЛИ(): если работа является чьим-то последователем, то возвращается код работы-предшественника (совпадающий с номером позиции работы). В противном случае возвращается значение Пустой текст "".

Функция НАИБОЛЬШИЙ()  сортирует массив вида {"";"";"":"";"";"":"";"";"":"";"";"":"";5;"":6;"";"":"";"";"":"";"";""} и выводит 3 наибольших значения, т.е. сначала числа, а затем значения Пустой текст "" (если последователей менее 3).

Функция ИНДЕКС() выводит коды работ-предшественников по номеру позиции. Функция ЕСЛИОШИБКА(), которая появилась в MS EXCEL 2007, заменяет ошибки #ЧИСЛО! на значение Пустой текст "", которое очень удобно, т.к. ячейка выглядит при этом пустой. 

При задании последователей (см. желтые ячейки) необходимо отслеживать, чтобы количество предшественников у каждой работы было не больше 3-х (см. столбец J).

Вычисление путей

Алгоритм вычисления путей следующий:

  1. Для вехи Start (код=1) определяются ее последователи, т.е. работы А, В и С, которые имеют коды соответственно 2, 3, 4 (см. шаг 0, строка 37), а также количество последователей у каждой из работ А, В и С. Кроме того, код вехи Start необходимо повторить в столбце В столько раз, сколько у нее последователей. На данном шаге количество путей равно 3, т.е. равно количеству последователей вехи Start;
  2. На следующем шаге определяются последователи работ А, В, С, т.е. работы D, E, F (коды 5, 6, 7). См. ячейку J53. В соседнем столбце справа вычисляется количество последователей этих работ. Как видно из диаграммы выше, работа D имеет 2 последователя. Это приводит к тому, что количество путей проекта увеличивается до 4-х. Поэтому нужно обновить количество вех Start до 4-х (см. ячейку G53). Это можно сделать используя идеи из статьи Восстанавливаем последовательности из списка без повторов в MS EXCEL.
  3. Аналогично на следующих шагах определяются следующие работы-последователи и обновляется количество возможных путей проекта. По результатам каждого шага производится проверка достижения вехи Finish (код=9). Если все пути завершены, то в конце каждого пути должна быть веха Finish.

В файле примера максимальная длина пути от вехи Start до вехи Finish должна быть не более 5 (включая эти вехи). Под длиной пути понимается последовательность работ, например: Start - А - D - G - Finish. При необходимости нужно увеличить количество шагов, чтобы получить возможность вычислять более длительные пути. В столбце N с помощью Условного форматирования создан индикатор, который показывает завершение вычисления путей на определенном шаге.

Построение диаграммы

Сначала на диаграмме построим точки, представляющие собой работы.

Чтобы каждой точке присвоить надпись с названием работы нужно написать макрос или иметь MS EXCEL 2013 или последующую версию программы (см. статью Подписи для точечной диаграммы в MS EXCEL). В файле примера также имеется макрос для присвоения надписей (также см. статью Ориентированный граф на диаграмме MS EXCEL).

Чтобы создать пути (максимум 10) нам потребуется создать 10 рядов данных. Часть из этих рядов будет содержать значения #Н/Д, т.к. число путей может быть меньше 10.

В результате получим вот такую диаграмму, в которой 4 пути:

Предположим, что при планировании проекта выяснилось, что между работами F и G имеется связь (взаимосвязь работ в файле примера только Финиш-Старт, т.е. начало следующей работы после окончания предыдущей). Добавив эту связь в ячейку D28, диаграмма автоматически обновится.

Как видно из диаграммы - также увеличилось число путей: с 4 до 5.

Связанные статьи

Похожие задачи
Прочитайте другие статьи, решающие похожие задачи в MS Excel. Это позволит Вам решать широкий класс подобных задач.
Средняя: 5 (2 оценок)