Составление графика дежурств — задача, с которой регулярно сталкиваются офисные менеджеры, руководители смен, администраторы клиник и даже родительские комитеты в школах. Вручную распределять даты, учитывать пожелания сотрудников и избегать конфликтов — занятие утомительное и чреватое ошибками. К счастью, Microsoft Excel предлагает инструменты, которые превратят этот процесс в быструю и наглядную процедуру.
В этой статье мы разберём 5 способов создания графика дежурств — от простейших таблиц для небольших команд до автоматизированных систем с учётом выходных, праздников и индивидуальных предпочтений. Вы узнаете, как использовать условное форматирование для визуального контроля, формулы для автозаполнения, и даже как интегрировать график с Google Календарём. Неважно, планируете ли вы дежурства на месяц или на год — после прочтения вы сможете создать систему, которая сэкономит часы рабочего времени.
1. Базовый график дежурств: таблица за 10 минут
Если вам нужен простой график для небольшой команды (до 10 человек) на месяц, начните с базовой таблицы. Этот метод не требует знания формул и подойдёт даже тем, кто впервые открыл Excel.
Создайте таблицу с двумя ключевыми блоками:
- 📅 Дата и день недели — столбец с датами (например, с 1 по 30 число) и автоматически подтянутыми днями недели (используйте формат ячейки
дддд). - 👥 Список сотрудников — строки с именами дежурных (по одному на строку).
Чтобы быстро заполнить даты, введите первую дату (например, 01.06.2026), затем потяните за правый нижний угол ячейки — Excel автозаполнит ряд. Для дней недели используйте формулу =ТЕКСТ(A2;"дддд"), где A2 — ячейка с датой.
| Дата | День недели | Дежурный 1 | Дежурный 2 | Примечания |
|---|---|---|---|---|
| 01.06.2026 | Суббота | Иванов П.С. | Петрова А.И. | Праздник |
| 02.06.2026 | Воскресенье | Сидоров К.Л. | — | Выходной |
| 03.06.2026 | Понедельник | Кузнецова Е.Р. | Новиков Д.А. |
Для визуального контроля используйте условное форматирование: выделите столбцы с дежурными, перейдите в Главная → Условное форматирование → Правила выделения ячеек → Текст, содержащий и задайте цвет для ячеек с фамилиями (например, зелёный для дежурств в будни, красный — в выходные).
2. Автоматическое распределение дежурств по очереди
Ручное заполнение графика отнимает время, особенно если дежурства идут по фиксированному порядку (например, по алфавиту или по номеру в списке). Автоматизируем процесс с помощью формулы ИНДЕКС.
Предположим, у вас есть список сотрудников в столбце E2:E10, а даты — в столбце A2:A31. В ячейку B2 (первый дежурный) введите:
=ИНДЕКС($E$2:$E$10;ОСТАТ(СТРОКА(A1);ЧСТРОК($E$2:$E$10))+1)
Эта формула:
- 🔄 Циклично проходит по списку сотрудников (после последнего снова начинает с первого).
- 📌 Привязана к строке, поэтому достаточно растянуть её на все даты месяца.
- ⚡ Мгновенно обновляется при добавлении/удалении имён в списке.
Критическая деталь: если в вашей команде чётное число сотрудников, а дежурств нечётное (или наоборот), формула может "сбиться" на последний день. Чтобы избежать этого, добавьте в список фиктивного сотрудника (например, "Резерв") или скорректируйте количество строк.
⚠️ Внимание: Если в графике участвуют сотрудники с разной нагрузкой (например, кто-то дежурит раз в неделю, а кто-то — раз в месяц), этот метод не подойдёт. В таком случае используйте взвешенное распределение (см. раздел 4).
3. Учёт выходных и праздников
Дежурства в выходные или праздники часто требуют особого подхода: либо больше сотрудников на смене, либо другие правила ротации. Добавьте в график автоматическое определение таких дней.
Создайте дополнительный столбец Тип дня с формулой:
=ЕСЛИ(ИЛИ(ДЕНЬНЕД(A2;2)>5;[проверка на праздники]);"Выходной";"Будний")
Где [проверка на праздники] — это отдельная функция, которая сверяет дату с списком праздников (например, из другого листа). Пример списка праздников:
| Дата | Название праздника |
|---|---|
| 01.01.2026 | Новый год |
| 07.01.2026 | Рождество |
| 23.02.2026 | День защитника Отечества |
Теперь модифицируйте формулу распределения дежурств, чтобы в выходные назначались другие сотрудники или больше людей на смену. Например:
=ЕСЛИ(C2="Выходной";ИНДЕКС(Выходные_сотрудники;...);ИНДЕКС(Будние_сотрудники;...))
Как добавить региональные праздники?
Создайте отдельный лист "Праздники", где в первом столбце укажите даты, а во втором — названия. Затем используйте функцию ПОИСКПОЗ или ВПР, чтобы проверять, есть ли дата из графика в этом списке. Пример формулы: =ЕСЛИОШИБКА(ВПР(A2;Праздники!A:B;1;ЛОЖЬ);"";"Праздник").
4. Взвешенное распределение: учитываем нагрузку
В реальных условиях сотрудники редко дежурят с одинаковой частотой. Кто-то может быть в отпуске, кто-то — на больничном, а кто-то согласен дежурить чаще за дополнительную оплату. Для таких случаев подойдёт взвешенное распределение с учётом индивидуальных коэффициентов.
Добавьте к списку сотрудников столбец Коэффициент нагрузки (например, 1 — стандартная нагрузка, 0.5 — дежурит в два раза реже, 2 — в два раза чаще). Затем используйте вспомогательную таблицу для расчёта "виртуальных смен":
- Создайте список, где каждое имя повторяется столько раз, сколько указано в коэффициенте (например, Иванов с коэффициентом 2 появится дважды).
- Перемешайте этот список случайно (функция
=СЛЧИС()в вспомогательном столбце + сортировка). - Используйте формулу
ИНДЕКСдля последовательного назначения дежурств из перемешанного списка.
Пример вспомогательной таблицы:
| Сотрудник | Коэффициент | Виртуальные смены |
|---|---|---|
| Иванов П.С. | 2 | Иванов П.С. Иванов П.С. |
| Петрова А.И. | 1 | Петрова А.И. |
| Сидоров К.Л. | 0.5 | Сидоров К.Л. |
Создать столбец с коэффициентами нагрузки|Проверить, что сумма коэффициентов равна нужному числу смен|Сгенерировать виртуальные смены|Перемешать список случайно|Назначить дежурства по формуле
-->
Для случайного перемешивания используйте формулу:
=ИНДЕКС($A$2:$A$10;РАНГ($C$2:$C$10;C2;1))
где A2:A10 — список сотрудников, а C2:C10 — столбец со случайными числами (=СЛЧИС()).
5. Интерактивный график с выпадающими списками
Если график дежурств требует гибкости (например, сотрудники могут меняться местами), добавьте выпадающие списки и защиту ячеек. Это позволит редактировать график без риска случайно испортить формулы.
Шаги для создания интерактивного графика:
- Выделите ячейки, где будут фамилии дежурных.
- Перейдите в
Данные → Проверка данных → Тип данных: Список. - В поле
Источникукажите диапазон с фамилиями сотрудников (например,=Лист1!$E$2:$E$10). - Защитите остальные ячейки:
Рецензирование → Защитить лист(предварительно снимите защиту с ячеек выпадающих списков).
Для визуального контроля добавьте условное форматирование по правилу:
- 🟢 Зелёный — если сотрудник дежурит не чаще положенного (сравните с коэффициентом нагрузки).
- 🟡 Жёлтый — если нагрузка превышена на 20%.
- 🔴 Красный — если превышение более 50%.
6. Экспорт графика в Google Календарь
Чтобы график дежурств был всегда под рукой, экспортируйте его в Google Календарь. Для этого:
- Добавьте в Excel столбцы с
Началом дежурстваиОкончанием дежурства(например, с 9:00 до 18:00). - Сохраните файл в формате
.csv(Файл → Сохранить как → CSV). - Импортируйте файл в Google Календарь:
Создать → Импорт, выберите CSV-файл и укажите столбцы с датами.
Для автоматизации процесса используйте Google Apps Script (если график хранится в Google Sheets):
function exportToCalendar() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var calendar = CalendarApp.getDefaultCalendar();
var data = sheet.getDataRange().getValues();
for (var i = 1; i < data.length; i++) {
if (data[i][2] !== "") { // Если ячейка с дежурным не пустая
calendar.createAllDayEvent(
"Дежурство: " + data[i][2],
new Date(data[i][0])
);
}
}
}
Этот скрипт создаст события на весь день. Для точного времени модифицируйте функцию createEvent с указанием начала и конца дежурства.
⚠️ Внимание: При экспорте в Google Календарь проверьте, что даты в Excel имеют форматдд.мм.гггг. Если Excel распознаёт даты как текст, календарь не сможет их корректно импортировать. Используйте функцию=ДАТАЗНАЧ()для преобразования.
7. Шаблоны и готовые решения
Если нет времени создавать график с нуля, воспользуйтесь готовыми шаблонами:
- 📄 Шаблон от Microsoft: в Excel перейдите в
Файл → Создать → Шаблоны → График дежурств(доступно в новых версиях). - 🌐 Vertex42: бесплатные шаблоны для разных сфер (медицина, образование, офис) — ссылка.
- 📊 Smartsheet: облачные шаблоны с уведомлениями и интеграцией с календарями.
При выборе шаблона обратите внимание на:
- 🔄 Возможность автоматического переноса дежурств на следующий месяц.
- 📱 Aдаптивность для просмотра на телефоне (если команда использует мобильные устройства).
- 🔔 Встроенные уведомления о предстоящих дежурствах (в облачных сервисах).
Для медицинских учреждений и круглосуточных служб подойдут шаблоны с учётом ночных смен и перерывов на сон. Пример структуры:
| Дата | Дневная смена (9:00–21:00) | Ночная смена (21:00–9:00) | Ответственный |
|---|---|---|---|
| 01.06.2026 | Иванова М.П. | Сидоров К.Л. | Петров А.И. |
FAQ: Частые вопросы о графиках дежурств в Excel
Как сделать так, чтобы один сотрудник не дежурил два дня подряд?
Используйте формулу с проверкой предыдущего дня. Например, если дежурные указаны в столбце B, в ячейку B3 введите:
=ЕСЛИ(B2=ИНДЕКС(Список_сотрудников;...);ИНДЕКС(Список_сотрудников;МИН(ЕСЛИ(Список_сотрудников<>B2;ПОИСКПОЗ(Список_сотрудников;Список_сотрудников;0))));ИНДЕКС(Список_сотрудников;...))
Эта формула проверяет, не совпадает ли текущий дежурный с предыдущим, и если совпадает — выбирает следующего по списку.
Можно ли автоматически отправлять уведомления о дежурствах?
Да, для этого:
- Сохраните график в Google Sheets.
- Напишите скрипт на Google Apps Script, который будет отправлять email через
MailApp.sendEmail(). - Настройте триггер на отправку за день до дежурства.
Пример кода для отправки:
function sendAlerts() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("График");
var data = sheet.getDataRange().getValues();
var today = new Date();
today.setDate(today.getDate() + 1); // Завтра
for (var i = 1; i < data.length; i++) {
if (data[i][0] instanceof Date && data[i][0].toDateString() === today.toDateString()) {
MailApp.sendEmail(
"employee@example.com",
"Напоминание о дежурстве",
"Завтра вы дежурите. Дата: " + data[i][0].toLocaleDateString()
);
}
}
}
Как учитывать отпуска и больничные в графике?
Добавьте отдельный лист с датами отпусков и используйте функцию ВПР или ПОИСКПОЗ, чтобы проверять, не попадает ли дата дежурства на отпуск сотрудника. Пример:
=ЕСЛИ(ЕЧИСЛО(ПОИСКПОЗ(A2;Отпуска!A:A;0));"Отпуск";ИНДЕКС(Список_сотрудников;...))
Где Отпуска!A:A — столбец с датами отпусков на отдельном листе.
Как сделать график дежурств на год вперед?
Для годового графика:
- Создайте лист с датами на весь год (используйте автозаполнение).
- Добавьте столбец с номерами недель (
=НОМНЕДЕЛИ(A2)). - Настройте формулы распределения с учётом чередования по неделям (например, одна бригада дежурит на чётных неделях, другая — на нечётных).
Для визуализации используйте сводную таблицу с фильтром по месяцам.
Можно ли сделать график дежурств в Excel Online?
Да, все описанные методы работают в Excel Online, за исключением:
- Макросов (VBA) — в онлайн-версии не поддерживаются.
- Некоторых надстроек (например, Power Query доступен только в десктопной версии).
Для совместной работы над графиком в реальном времени Excel Online даже предпочтительнее — изменения сохраняются автоматически, и несколько пользователей могут редактировать файл одновременно.