Составить график смен вручную — задача кропотливая и чревата ошибками. Особенно если речь идёт о большом коллективе, нестандартных режимах работы или частых изменениях. Excel позволяет автоматизировать этот процесс, сэкономив часы на пересчётах и проверках. Но как именно? С чего начать, если вы никогда не работали с формулами для сменного графика?
Многие ошибочно думают, что для этого нужны глубокие знания программирования или покупка дорогостоящих плагинов. На деле же достаточно базовых функций Excel — ЕСЛИ, И, ВПР — и правильной структуры таблицы. В этой статье разберём реальные кейсы: от простого подсчёта рабочих дней до сложных графиков с учётом выходных, праздников и индивидуальных пожеланий сотрудников.
Вы узнаете:
- 🔹 Как построить базовую таблицу смен с нуля (даже если вы новичок в Excel)
- 🔹 Какие формулы использовать для 2/2, 3/3 и других режимов работы
- 🔹 Как автоматически учитывать праздники и переносы выходных
- 🔹 Где скачать готовые шаблоны и как их адаптировать под свой бизнес
1. Подготовка базовой таблицы: структура данных
Прежде чем приступать к формулам, нужно правильно организовать исходные данные. От этого зависит 80% успеха. Начнём с минимального набора колонок, который понадобится для любого графика:
- 📅 Дата — столбец с календарными днями (например, с 1 по 31 число месяца)
- 👥 Сотрудник — список фамилий или идентификаторов работников
- 🕒 Смена — обозначение смены (например, "Д" — день, "Н" — ночь, "В" — выходной)
- ⏱️ Продолжительность — количество часов в смене (опционально, но полезно для расчёта оплаты)
Пример правильной структуры:
| Дата | День недели | Сотрудник 1 | Сотрудник 2 | Смена | Часы |
|---|---|---|---|---|---|
| 01.06.2026 | Суббота | Иванов | Петров | Д | 12 |
| 02.06.2026 | Воскресенье | Сидоров | Кузнецов | Н | 12 |
| 03.06.2026 | Понедельник | Иванов | Сидоров | Д | 12 |
Критическая ошибка новичков: многие пытаются сразу заполнить таблицу формулами, не продумав логику распределения смен. Без чёткого алгоритма (например, "2 через 2" или "сутки через трое") даже самые сложные функции Excel не спасут от хаоса. Начните с ручного расписания на бумаге, а затем переносите его в электронный вид.
2. Формулы для автоматического распределения смен
Когда структура готова, приступаем к автоматизации. Рассмотрим два подхода: простой (для фиксированных графиков) и гибкий (с учётом индивидуальных особенностей).
2.1. Фиксированный график (например, 2/2)
Для режима "сутки через двое" подойдёт формула на основе функции ОСТАТ (или MOD в английской версии). Она определяет остаток от деления и помогает чередовать смены:
=ЕСЛИ(ОСТАТ(СТРОКА()-1;3)=0;"Н";ЕСЛИ(ОСТАТ(СТРОКА()-1;3)=1;"Д";"В"))
Расшифровка:
- 🔢
СТРОКА()-1— нумерация строк с нуля (чтобы первая строка соответствовала первому дню цикла) - 🔄
ОСТАТ(...;3)— цикл из 3 дней (работа + работа + выходной для графика 2/2) - 📊
ЕСЛИ— присваивает значение "Н" (ночь), "Д" (день) или "В" (выходной) в зависимости от остатка
Важно: эту формулу нужно вводить в первую строку таблицы и растягивать вниз. Для графика 3/3 измените делитель с 3 на 6 (три рабочих дня + три выходных).
2.2. Гибкий график с учётом выходных и праздников
Если в вашей компании выходные привязаны к календарным дням (например, суббота-воскресенье), добавьте проверку дня недели:
=ЕСЛИ(ИЛИ(ДЕНЬНЕД(А2;2)>5;Б2="Праздник");"В";
ЕСЛИ(ОСТАТ(СЧЁТЕСЛИ($C$2:C2;"Д");2)=0;"Н";"Д"))
Здесь:
- 📅
ДЕНЬНЕД(А2;2)>5— проверяет, что день недели — суббота (6) или воскресенье (7) - 🎉
Б2="Праздник"— дополнительная колонка с пометками о праздничных днях - 🔄
СЧЁТЕСЛИ($C$2:C2;"Д")— считает количество предыдущих дневных смен для чередования
3. Подсчёт отработанных смен и часов
После распределения смен нужно посчитать, сколько каждый сотрудник отработал за период. Здесь поможет функция СЧЁТЕСЛИМН (или COUNTIFS):
=СЧЁТЕСЛИМН($C$2:$C$31;F2;$E$2:$E$31;"Д") + СЧЁТЕСЛИМН($C$2:$C$31;F2;$E$2:$E$31;"Н")
Где:
- 👤
F2— ячейка с фамилией сотрудника - 📊
$C$2:$C$31— диапазон с фамилиями в графике - 🕒
$E$2:$E$31— диапазон со сменами ("Д" или "Н")
Для подсчёта часов умножьте количество смен на их продолжительность:
= (СЧЁТЕСЛИМН(...;"Д") + СЧЁТЕСЛИМН(...;"Н")) * 12
Лайфхак: если в вашей компании разная продолжительность дневных и ночных смен, используйте отдельные формулы:
=СЧЁТЕСЛИМН(...;"Д")*12 + СЧЁТЕСЛИМН(...;"Н")*10
Сверить количество смен с нормой по трудовому договору|Убедиться, что праздники учтены как выходные|Проверить сумму часов для каждого сотрудника|Сравнить данные с предыдущим месяцем на предмет аномалий-->
4. Учёт индивидуальных графиков и замен
В реальной жизни сотрудники берут отпуска, болеют или просят поменять смены. Как адаптировать таблицу под такие случаи?
4.1. Колонка "Примечания"
Добавьте в таблицу столбец для пометок (например, "Отпуск", "Больничный", "Замена"). Затем модифицируйте формулу распределения смен:
=ЕСЛИ(D2="Отпуск";"О";
ЕСЛИ(D2="Больничный";"Б";
...остальная логика распределения смен...))
4.2. Таблица замен
Создайте отдельный лист с данными о заменах:
| Дата | Кто заменяет | Кого заменяют | Смена |
|---|---|---|---|
| 15.06.2026 | Петров | Иванов | Д |
Используйте ВПР или ИНДЕКС/ПОИСКПОЗ, чтобы автоматически подставлять замены в основной график:
=ЕСЛИОШИБКА(ВПР(A2;Замены!A:D;2;ЛОЖЬ);C2)
Где C2 — ячейка с фамилией сотрудника по умолчанию.
Как обработать конфликты замен?
Если два сотрудника хотят поменяться сменой на одну дату, добавьте в таблицу замен столбец "Приоритет" (1 — высший, 2 — средний, 3 — низкий) и отсортируйте данные по нему перед использованием ВПР.
5. Визуализация графика: условное форматирование
Чтобы график был наглядным, используйте условное форматирование:
- Выделите диапазон со сменами (например,
E2:E31). - Перейдите на вкладку
Главная → Условное форматирование → Создать правило. - Выберите "Форматировать только ячейки, которые содержат".
- Задайте правило для значения "Д" и выберите зелёный цвет заливки.
- Повторите для "Н" (синий) и "В" (серый).
Для более сложной визуализации (например, подсветки выходных красным) используйте формулы в правилах:
=ИЛИ(ДЕНЬНЕД(A2;2)>5;$B2="Праздник")
Бонус: добавьте столбец с цветовыми легендами, чтобы сотрудники быстро ориентировались в графике.
6. Автоматизация с помощью Power Query
Для крупных компаний с сотнями сотрудников ручное управление графиком неэффективно. Здесь поможет Power Query — инструмент для импорта и преобразования данных.
Алгоритм действий:
- Импортируйте данные о сотрудниках из
1Сили другой системы учёта. - Создайте таблицу с шаблоном смен (например, 2/2 на месяц вперёд).
- Используйте
Merge Queries, чтобы связать сотрудников с шаблоном. - Добавьте колонки с праздничными днями и индивидуальными графиками.
- Экспортируйте результат обратно в Excel.
Power Query позволяет:
- 🔄 Автоматически обновлять график при изменении исходных данных
- 📊 Объединять данные из нескольких источников (например, отпуска из
1С, смены из Excel) - ⚡ Обрабатывать тысячи строк без замедления
Предупреждение: Power Query доступен в Excel 2016 и новее. В старых версиях используйте надстройку Power Pivot.
7. Готовые шаблоны и макросы
Не хотите изобретать велосипед? Воспользуйтесь готовыми решениями:
| Тип графика | Ссылка на шаблон | Особенности |
|---|---|---|
| 2/2 (сутки через двое) | Скачать | Автоматическое чередование, учёт праздников |
| 3/3 (три через три) | Скачать | Поддержка ночных и дневных смен |
| 4/2 (четыре рабочих, два выходных) | Скачать | Возможность указать фиксированные выходные |
Для автоматизации рутинных задач (например, ежемесячного создания графика) используйте макросы. Пример кода для генерации графика 2/2:
Sub GenerateShiftSchedule()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("График")
Dim lastRow As Long, i As Long, shiftCount As Integer
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
shiftCount = 0
For i = 2 To lastRow
If ws.Cells(i, 3).Value = "Д" Or ws.Cells(i, 3).Value = "Н" Then
shiftCount = shiftCount + 1
If shiftCount Mod 2 = 0 Then
ws.Cells(i, 3).Value = "В"
Else
ws.Cells(i, 3).Value = IIf(ws.Cells(i-1, 3).Value = "Д", "Н", "Д")
End If
End If
Next i
End Sub
Внимание: ⚠️ Перед использованием макросов включите поддержку VBA в настройках Excel (Файл → Параметры → Центр управления безопасностью → Параметры центра управления безопасностью → Настройки макросов).
8. Типичные ошибки и как их избежать
Даже опытные пользователи Excel допускают ошибки при составлении графиков смен. Вот самые распространённые:
⚠️ Ошибка 1: Неучтённые праздничные дни. Если 8 марта выпадает на рабочий день по графику, но фактически это выходной, формулы дадут неверный результат. Решение: создайте отдельную таблицу с праздничными датами и используйте ВПР для их проверки.
⚠️ Ошибка 2: Копирование формул без фиксации диапазонов. При растягивании формулы вниз ссылки на ячейки сдвигаются, что приводит к хаосу. Решение: используйте абсолютные ссылки с символом$(например,$A$2).
Другие распространённые проблемы:
- 🔴 Пересечение смен: когда одному сотруднику назначается две смены в один день. Проверяйте дубликаты функцией
СЧЁТЕСЛИМН. - 🔴 Несоблюдение нормы часов: если сотрудник отработал больше/меньше положенного. Используйте сводные таблицы для контроля.
- 🔴 Ошибки при переносе данных: например, при копировании графика в
Wordдля печати. Экспортируйте вPDFнапрямую из Excel.
FAQ: Частые вопросы по расчёту смен в Excel
Как учитывать смены разной продолжительности (например, 8 и 12 часов)?
Создайте дополнительный столбец с продолжительностью для каждой смены. Затем используйте формулу:
=СУММПРОИЗВ(--($C$2:$C$31=F2);--($E$2:$E$31="Д");$G$2:$G$31) + СУММПРОИЗВ(--($C$2:$C$31=F2);--($E$2:$E$31="Н");$H$2:$H$31)
Где $G$2:$G$31 — продолжительность дневных смен, а $H$2:$H$31 — ночных.
Можно ли автоматически рассылать график сотрудникам по email?
Да, с помощью Power Automate (ранее Microsoft Flow) или макросов VBA с подключением к Outlook. Пример кода для рассылки:
Sub SendSchedule()
Dim OutApp As Object, OutMail As Object
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
With OutMail
.To = "employee@example.com"
.Subject = "График смен на июнь 2026"
.Body = "Добрый день! Ваш график смен прикреплён к письму."
.Attachments.Add ThisWorkbook.FullName
.Send
End With
End Sub
Для массовой рассылки используйте цикл по списку email-адресов.
Как сделать график смен на год вперёд?
1. Создайте таблицу с датами на весь год (используйте функцию ДАТА или автозаполнение).
2. Добавьте столбец с номерами недель (=НОМНЕДЕЛИ(A2)).
3. Настройте формулы чередования смен с учётом номера недели (например, нечётные недели — дневные смены, чётные — ночные).
4. Для праздников используйте отдельную таблицу с датами на год.
Как в Excel посчитать количество ночных смен за квартал?
Используйте комбинацию СЧЁТЕСЛИМН с фильтром по датам:
=СЧЁТЕСЛИМН($A$2:$A$100;">=01.04.2026";$A$2:$A$100;"<=30.06.2026";$C$2:$C$100;F2;$E$2:$E$100;"Н")
Где F2 — ячейка с фамилией сотрудника.
Можно ли интегрировать график смен с 1С или другими системами учёта?
Да, есть несколько способов:
- Power Query: импортируйте данные из
1Св форматеCSVили черезODBC-соединение. - VBA-макросы: напишите скрипт для обмена данными по
API(если в1Снастроен веб-сервис). - Промежуточные файлы: экспортируйте данные из
1СвExcelи объединяйте с графиком смен.
Для 1С:Зарплата и Управление Персоналом есть готовые обработки для экспорта графиков.