Достаточно часто у меня возникает потребность в том, чтобы нарисовать диаграмму Гантта — проектов мы ведём много. И не всегда хочется трогать графические программы — потому что открыть Adobe Illustrator, конечно же, проще всего, но.. когда нужно быстро набросать план, и визуализировать сроки/этапы проекта — тратить на это полчаса нет возможности.
Итак, открываем Эксель. У меня на вооружении .. четыре способа. Обычно на тренингах я пропагандирую смотреть на эксель не как на таблицу с набором предзаданных шаблонов диаграмм, а как на визуализатор логики. Логика она вообще штука хорошая. Зная всего несколько функций, не применяя никаких макросов, можно рисовать очень много полезных вещей.
Первый мой вариант основан на условном форматировании ячеек, второй — функцию REPEAT, третий использует диаграмму типа waterfall, а четвёртый — эксплуатирует точечную диаграмму. Сегодня рассказываю про первые два, простые.
Дано: для простоты примем, что наш план работ выстроен в единую последовательность, каждый последующий пункт плана работ начинается после окончания предыдущего. Известно, когда должен начаться проект, и сколько времени уйдёт на каждый его этап. Простая последовательность, без задержек и промежутков, без наслоений.
Вычисляем:
1. Записываем в столбец пункты (задачи) плана работ.
2. Для каждой задачи пишем её длительность (число, может измеряться в любых единицах, например, в количестве дней)
3. Вычисляем абсолютное количество дней, которое пройдёт с начала проекта, до начала / до конца задачи.
В итоге, мы получили массив из двух чисел: номер дня начала, и номер дня окончания задачи.
Строим вариант 1.
Делаем из ячеек большую таблицу, закрашенные ячейки которой будут представлять себя временные бары диаграммы:
1. Делаем счётчик: по горизонтали, в строке заголовка откладываем числа от 1 до N, где N должно превышать суммарную длительность проекта (В днях). Это дни проекта.
2. Для удобства, делаем все ячейки узкими
3. В каждой ячейке получившейся таблицы, записываем формулу
=ЕСЛИ(И(G$4>=$D5,G$4<($E5+1)),1,0)
иными словами, ЕСЛИ (номер_дня_счётчика лежит в пределах между день_начала и день_окончания), то значение ячейки будет равно 1, иначе 0
4. Форматируем ячейку условным форматированием (conditional formatting, надеюсь, вы с этим знакомы?):
Если значение ячейки = 1, то красим цвет фона и цвет шрифта в единый цвет (например, светло-синий), а значения равные 0 красим в белый.
Итог:
Простейший таймлайн готов. Он привязан к строкам таблицы, поэтому удобен для оперативной работы.
Строим вариант 2.
Он не настолько красив, но более элегантен. Всё что нам нужно сделать — это символом «|» повторить нужное количество раз (дней), с нужным оттступом. Этот символ можно нарисовать в ячейке нужное количество раз функцией REPEAT (ПОВТОР). Этот вариант мы уже рассматривали вкратце, но не лишне повторить в ином контексте.
Формула до безобразия проста:
ПОВТОР(«|»,E5-D5+1)
Мы получили нужное количество палочек, соответствующее количеству дней на задачу.
Нам остаётся только добавить спереди них количество дней, которые пройдут до момента начала задачи:
ПОВТОР(» «,D5-1),
и итоговая формула выглядит вот так:
= СЦЕПИТЬ( ПОВТОР(» «,D5-1), ПОВТОР(«|»,E5-D5+1) )
Итоговый результат незатейлив, но для пятиминутки идеален:
Кажется, вполне удобно 🙂 Останется добавить подписи дней, маркер текущего дня, и станет лучше. А если ещё и добавить разбивку бара задачи на выполненную/не выполненную части (например, задача выполнена на 30%), то всё станет вообще волшебно. Догадываетесь, как это сделать?
Ждите продолжения в следующей серии!
PS Что-то красивой инфографики с диаграммой Гантта никак не найду. Накидайте парочку в комментарии?