Как сделать график дежурств на месяц в Excel: от простого к автоматизации

Составление графика дежурств — рутинная задача, которая отнимает часы рабочего времени у HR-специалистов, руководителей отделов и администраторов. Вручную распределять смены, учитывать выходные, праздники и пожелания сотрудников — всё равно что собирать пазл из 1000 деталей без картинки на коробке. К счастью, Microsoft Excel способен автоматизировать этот процесс на 90%, если знать правильные инструменты.

В этой статье вы найдёте пошаговые инструкции для создания графика дежурств на месяц — от базовой таблицы с фамилиями до полностью автоматизированного календаря с учётом ночных смен, переработок и замен. Мы разберём:

  • 📅 Как построить основу графика с датами и сотрудниками
  • 🔄 Формулы для автоматического распределения смен (включая ИНДЕКС, ПОИСКПОЗ и ВПР)
  • 🎨 Оформление с условным форматированием (цветовые метки для выходных, праздников, больничных)
  • 📊 Визуализация через диаграммы Ганта и календарные таблицы
  • 🤖 Автоматизация через Power Query и макросы для ежемесячного обновления

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

📊 Как часто вам приходится составлять график дежурств?
Ежемесячно
Раз в квартал
Реже
Никогда не составлял

1. Подготовка базовой структуры графика

Прежде чем погружаться в формулы, нужно создать «скелет» будущего графика. Начнём с минимально необходимых элементов:

  1. Список сотрудников — в столбце A перечислите всех участников дежурств (например, A2:A10). Добавляйте столбцы с дополнительной информацией: должность, отделение, контактный телефон.
  2. Календарная сетка — начиная с ячейки B1, создайте шапку с датами месяца (например, B1:AF1 для 31 дня). Используйте формат дд ммм (например, 01 янв).
  3. Область дежурств — на пересечении строк сотрудников и столбцов дат будут отмечаться смены. Оставьте эту область пустой — заполним её позже.

Пример минимальной структуры:

Сотрудник01 янв02 янв...31 янв
Иванов П.С....
Петрова А.И....
Сидоров К.Л....

Профессиональный совет: если дежурства ведутся по сменам (например, «день»/«ночь»), добавьте второй лист с легендой цветов. Например, ▰ — дневная смена, ▰ — ночная, ▰ — выходной. Это упростит визуальное восприятие.

⚠️ Внимание: Не используйте объединение ячеек для шапки календаря! Это нарушит работу формул при копировании данных. Вместо этого применяйте Перенос текста (Ctrl+1 → Выравнивание → Переносить по словам).

2. Автоматическое заполнение дат в шапке

Вводить даты вручную — неблагодарное занятие, особенно если график составляется на год вперёд. Автоматизируем процесс:

  1. В ячейку B1 введите первую дату месяца (например, 01.01.2026).
  2. Выделите B1, наведите курсор на правый нижний угол ячейки (появится чёрный крестик) и протяните вправо до конца месяца.
  3. Отформатируйте даты: выделите диапазон B1:AF1, нажмите Ctrl+1, выберите формат дд ммм.

Если нужно указать день недели, добавьте строку над датами (например, в A1:AF1) и используйте формулу:

=ТЕКСТ(B2; "ddd")

где B2 — ячейка с датой. Скопируйте формулу вправо.

Введена первая дата месяца

Протянуты даты до конца месяца

Применён формат "дд ммм"

Добавлены дни недели (опционально)-->

Для продвинутых пользователей: если график составляется на несколько месяцев, используйте Power Query для генерации дат. Перейдите на вкладку Данные → Получить данные → Из других источников → Пустой запрос и введите в редакторе:

let

StartDate = #date(2026, 1, 1),

EndDate = #date(2026, 12, 31),

Dates = List.Dates(StartDate, Duration.Days(EndDate - StartDate) + 1, #duration(1,0,0,0)),

Table = Table.FromList(Dates, Splitter.SplitByNothing(), {"Дата"}, null, ExtraValues.Error)

in

Table

3. Распределение смен: от ручного ввода к формулам

Самый простой способ — вручную проставить фамилии или символы смен в ячейках. Но это не масштабируется. Рассмотрим три уровня автоматизации:

Уровень 1: Циклическое распределение

Если дежурства идут по очереди (например, Иванов → Петрова → Сидоров → Иванов), используйте формулу:

=ИНДЕКС($A$2:$A$10; ОСТАТ(СТРОКА(A1)-1; ЧСТРОК($A$2:$A$10)) + 1)

где $A$2:$A$10 — диапазон с фамилиями, A1 — первая ячейка области дежурств. Протяните формулу вправо и вниз.

Уровень 2: Учёт выходных и праздников

Чтобы пропускать выходные (например, субботу и воскресенье), модифицируем формулу:

=ЕСЛИ(ИЛИ(ДЕНЬНЕД(B$1;2)>5; [проверка на праздники]); ""; ИНДЕКС($A$2:$A$10; ОСТАТ(СТРОКА(A1)-1; ЧСТРОК($A$2:$A$10)) + 1))

Для проверки праздников создайте отдельный список дат в столбце Z и используйте СЧЁТЕСЛИ:

=ЕСЛИ(ИЛИ(ДЕНЬНЕД(B$1;2)>5; СЧЁТЕСЛИ($Z$2:$Z$20; B$1)>0); ""; ...)

Уровень 3: Учёт пожеланий сотрудников

Добавьте столбец с предпочтениями (например, C — «не может дежурить по понедельникам»). Используйте ВПР или XLOOKUP для проверки ограничений:

=ЕСЛИОШИБКА(ВПР($A2; ТаблицаОграничений!A:B; 2; ЛОЖЬ); ""; ЕСЛИ(ДЕНЬНЕД(B$1;2)=2; ""; [основная формула]))
Пример таблицы ограничений

Сотрудник | Запрещённые дни

Иванов П.С. | Понедельник

Петрова А.И. | 15.01.2026 (отпуск)

⚠️ Внимание: При использовании формул массива (например, с ИНДЕКС-ПОИСКПОЗ) не забывайте фиксировать диапазоны знаком $. Иначе при копировании ссылки сдвинутся, и график «поедет».

4. Условное форматирование: визуализация графика

Цветовая разметка помогает быстро оценивать нагрузку и находить ошибки. Настройте правила:

  1. Выходные дни: Выделите область дежурств → Условное форматирование → Создать правило → Использовать формулу:
  2. =ИЛИ(ДЕНЬНЕД(B$1;2)>5; СЧЁТЕСЛИ($Z$2:$Z$20; B$1)>0)
  3. Задайте серый цвет фона для этих ячеек.
  4. Ночные смены: Если ночные дежурства отмечены буквой «Н», создайте правило для выделения их синим цветом:
  5. =И($B2="Н"; $B2<>"")

Для подсветки переработок (если сотрудник дежурит два дня подряд) используйте:

=И($B2<>""; $B2=$A2)
УсловиеФормулаФормат
Выходной/праздник=ДЕНЬНЕД(B$1;2)>5Серый фон
Ночная смена=И($B2="Н"; $B2<>"")Синий текст
Переработка=И($B2<>""; $B2=$A2)Красная заливка
Отпуск/больничный=ИЛИ($B2="О"; $B2="Б")Жёлтый фон

5. Диаграмма Ганта для наглядности

Если график дежурств сложный (например, смены по 12 часов или нестандартные интервалы), визуализируйте его через диаграмму Ганта:

  1. Создайте вспомогательную таблицу с датами начала и конца смен.
  2. Выделите данные → Вставка → Вставить столбчатую диаграмму с накоплением.
  3. Настройте оси: по горизонтали — даты, по вертикали — сотрудники.
  4. Удалите легенду и добавьте подписи данных.

Пример структуры данных для диаграммы:

СотрудникДата началаДлительность (дней)
Иванов П.С.01.01.20261
Петрова А.И.02.01.20261
Иванов П.С.03.01.20261

Альтернатива: для простых графиков используйте календарную таблицу (Вставка → Таблицы → Календарь в Excel 365). Она автоматически подстраивается под месяц и поддерживает drag-and-drop.

6. Автоматизация и обновление графика

Создать график один раз — полдела. Главное, чтобы он обновлялся быстро. Вот как этого добиться:

Способ 1: Power Query для ежемесячного обновления

Если график составляется на каждый месяц по одному шаблону:

  1. Создайте запрос, который генерирует даты текущего месяца.
  2. Добавьте столбец с днём недели и проверкой на праздники.
  3. Подключите список сотрудников из другой таблицы.
  4. Обновите запрос одним кликом: Данные → Обновить все.

Способ 2: Макрос для копирования структуры

Запишите простой макрос (Вид → Макросы → Записать макрос), который:

  • 📋 Копирует шапку с датами на новый лист
  • 🔄 Обновляет формулы под новый месяц
  • 🎨 Применяет условное форматирование

Пример кода для обновления дат:

Sub UpdateDates()

Dim ws As Worksheet

Set ws = ActiveSheet

ws.Range("B1").Value = DateSerial(Year(Date), Month(Date) + 1, 1)

ws.Range("B1").AutoFill Destination:=ws.Range("B1:AF1"), Type:=xlFillDefault

End Sub

Способ 3: Облачный Excel для совместной работы

Если график редактируют несколько человек (например, сотрудники вносят пожелания), сохраните файл в OneDrive или SharePoint и:

  • 🔒 Защитите ячейки с формулами (Рецензирование → Защитить лист).
  • 📤 Настройте уведомления об изменениях (Файл → Информация → Управление версиями).
  • 📊 Используйте Power Automate для автоматической рассылки графика по email.
⚠️ Внимание: При совместном редактировании отключите автоматический пересчёт формул (Формулы → Параметры вычислений → Вручную). Это предотвратит зависание файла при одновременных изменениях.

7. Типичные ошибки и как их избежать

Даже опытные пользователи Excel допускают ошибки при создании графиков дежурств. Вот самые распространённые:

  • 🗓 Неучтённые праздники: Забывают добавить переносы выходных (например, 8 Марта в 2026 году выпадает на пятницу, а выходной переносится на понедельник). Решение: используйте официальный производственный календарь РФ.
  • 🔄 Сбившиеся формулы: При копировании графиков на новый месяц не обновляются ссылки на диапазоны. Решение: используйте абсолютные ссылки ($A$1) или именованные диапазоны.
  • 🎨 Нечитабельное форматирование: Слишком много цветов или мелкий шрифт. Решение: ограничьтесь 3–4 цветами и используйте Ctrl+Shift+F для быстрого форматирования.
  • 📎 Потеря данных: При сохранении файла в старых версиях Excel (.xls) теряется условное форматирование. Решение: сохраняйте в формате .xlsx или .xlsm (для макросов).

Проверочный чек-лист перед отправкой графика:

Все праздники и выходные учтены

Нет двойных дежурств у одного сотрудника

Формулы протянуты на весь месяц

Условное форматирование работает корректно

Файл защищён от случайных изменений-->

8. Готовые шаблоны и альтернативы Excel

Если времени на настройку нет, воспользуйтесь готовыми решениями:

  • 📄 Шаблоны от Microsoft: В Excel перейдите в Файл → Создать и введите в поиске «график дежурств». Бесплатные шаблоны поддерживают до 20 сотрудников.
  • 🌐 Онлайн-сервисы:
    • When I Work — для команд до 75 человек, интеграция с календарём Google.
    • Shiftboard — подходит для круглосуточных графиков (больницы, охрана).
    • Toggl Plan — визуальный планировщик с drag-and-drop.
  • 📱 Мобильные приложения: Shifts (входит в Microsoft Teams) или Homebase для малого бизнеса.

Когда стоит отказаться от Excel:

  • 👥 В команде больше 50 человек.
  • 🔄 Нужны уведомления о сменах на телефон.
  • 📊 Требуется аналитика по переработкам и оплате.

Но! Excel остаётся лучшим выбором, если:

  • 💰 Бюджет ограничен (все инструменты бесплатны).
  • 🔧 Нужна глубокая кастомизация (формулы, макросы).
  • 📂 Данные хранятся локально (без облаков).

FAQ: Частые вопросы о графиках дежурств в Excel

Как учитывать ночные смены с 20:00 до 08:00?

Создайте два столбца для одной даты: «День» и «Ночь». В столбце «Ночь» укажите дату начала смены (например, 31.01 для ночи с 31 января на 1 февраля). Используйте условное форматирование, чтобы выделить ночные смены синим цветом.

Альтернатива: в одной ячейке указывайте тип смены буквой («Д»/«Н»), а в соседней — длительность (например, «12ч»).

Можно ли сделать график на год вперёд?

Да, но лучше разбить его по листам (каждый лист = один месяц). Для автоматического заполнения дат используйте Power Query:

  1. Создайте запрос, генерирующий даты на год.
  2. Добавьте столбец с номером месяца (=МЕСЯЦ([Дата])).
  3. Сгруппируйте данные по месяцу и экспортируйте на отдельные листы.

Готовый файл будет весить ~5–10 МБ, но позволит сэкономить часы на ежемесячной настройке.

Как запретить сотрудникам дежурить подряд два дня?

Используйте формулу с проверкой предыдущего дня:

=ЕСЛИ(И($B2<>""; $B2=$A2); "ПЕРЕРАБОТКА!"; [основная формула распределения])

Для блокировки таких смен добавьте правило условного форматирования с красным фоном и создайте отдельный столбец с предупреждениями.

В продвинутых графиках используйте Поиск решения (Данные → Анализ «что-если» → Поиск решения) для оптимизации распределения.

Как экспортировать график в Word или PDF?

Чтобы график корректно отобразился в Word:

  1. Выделите область графика.
  2. Скопируйте её (Ctrl+C).
  3. В Word выберите Специальная вставка → Рисунок (Windows Metafile).

Для PDF:

  1. Перейдите в Файл → Экспорт → Создать PDF/XPS.
  2. В настройках выберите Оптимизировать для: Стандарт (для печати).
  3. Установите флажок Открыть файл после публикации, чтобы проверить результат.

Если график не помещается на одну страницу, настройте Разметку страницы → Область печати и масштаб (1 страница в ширину).

Как посчитать количество дежурств у каждого сотрудника?

Добавьте справа от списка сотрудников столбец с формулой:

=СЧЁТЕСЛИ($B2:$AF2; "<>""")

где $B2:$AF2 — строка с дежурствами сотрудника. Протяните формулу вниз.

Для подсчёта ночных смен:

=СЧЁТЕСЛИ($B2:$AF2; "Н")

Чтобы вывести топ-3 самых загруженных сотрудников, используйте:

=ИНДЕКС($A$2:$A$10; НАИБОЛЬШИЙ($G$2:$G$10; 1))

где $G$2:$G$10 — столбец с количеством дежурств.