Как сделать в Excel календарь на год с графиком работы: пошаговое руководство с формулами и шаблонами

Создание годового календаря с графиком работы в Excel: зачем это нужно и какие возможности открывает

Планирование рабочего времени — одна из ключевых задач для HR-специалистов, менеджеров проектов и владельцев бизнеса. Годовой календарь с графиком работы в Excel позволяет не только фиксировать выходные и праздники, но и визуализировать смены сотрудников, отпуска, больничные и другие важные события. В отличие от готовых онлайн-сервисов, Excel даёт полный контроль над дизайном, формулами и логикой — вы можете адаптировать шаблон под специфику вашей компании, будь то 5/2, 2/2 или скользящий график.

В этой статье мы разберём три основных подхода к созданию такого календаря: ручной (для небольших команд), полуавтоматический (с использованием формул) и полностью автоматизированный (с помощью Power Query и VBA). Вы узнаете, как:

  • 📅 Сгенерировать даты на год без ошибок (включая високосные годы).
  • 🎨 Оформить календарь с помощью условного форматирования (выделение выходных, праздников, ночных смен).
  • 🔄 Автоматизировать расчёт рабочих часов и сверхурочных.
  • 📊 Построить графики загруженности сотрудников по месяцам.

Особое внимание уделим скрытым ловушкам: например, почему формула =ДЕНЬНЕД(А1) может давать неверные результаты для дат до 1900 года, или как избежать ошибок при копировании формул между листами. Готовые шаблоны из статьи вы сможете скачать и адаптировать под свои нужды.

📊 Какой график работы используете вы?
5/2 (пятидневка)
2/2 (сутки через трое)
Сменный (утро/день/ночь)
Гибкий/удалённый
Другой

Подготовка структуры календаря: выбор формата и настройка листов

Прежде чем приступать к заполнению дат, определитесь с структурой файла. Оптимальные варианты:

  • 📑 Один лист на месяц — удобно для печати, но требует ручного дублирования формул.
  • 📊 Один лист на год — компактно, но может быть перегружено данными.
  • 🔄 Отдельные листы для календаря и графика — лучший выбор для сложных расчётов (например, если нужно учитывать тарифы по часам).

Рекомендуемая разметка для листа с месяцем:

СтолбецНазначениеПример данных
AДата (число месяца)1, 2, 3...
BДень неделиПн, Вт, Ср...
CТип дня (рабочий/выходной/праздник)Р, В, П
D:ZГрафик сотрудников (по именам или должностям)Смена 1, Отпуск, Больничный

Совет: если в вашей компании используются ночные смены, добавьте столбец с временем начала/окончания работы (например, 22:00–06:00). Это поможет избежать путаницы при расчёте оплаты.

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

Автоматическое заполнение дат на год: формулы без ошибок

Ручной ввод 365 (или 366) дат — неблагодарное занятие. Вместо этого используйте прогрессию дат:

  1. В ячейку A1 введите первую дату года (например, 01.01.2026).
  2. Выделите ячейку, затем перейдите на вкладку Главная → Заполнить → Прогрессия.
  3. Выберите По столбцам, шаг 1 день, предельное значение — 31.12.2026.

Для разделения дат по месяцам используйте формулу массива (введите её как Ctrl+Shift+Enter в старых версиях Excel):

=ЕСЛИОШИБКА(ЕСЛИ(МЕСЯЦ($A1)=1;A1;"");"")

Эта формула вернёт дату только для января. Скопируйте её вправо, заменив 1 на номер нужного месяца.

☑️ Проверка корректности дат

Выполнено: 0 / 4

Если вам нужно выделить выходные, добавьте столбец с формулой:

=ЕСЛИ(ИЛИ(ДЕНЬНЕД(A1;2)>5;C1="П");"Выходной";"Рабочий")

Здесь C1 — столбец с типами дней (где "П" — праздник).

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

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

  1. Выделите диапазон с графиком (например, D2:Z32).
  2. Перейдите в Главная → Условное форматирование → Создать правило.
  3. Выберите Форматировать только ячейки, которые содержат.
  4. Задайте условие (например, ячейка содержит текст "Отпуск") и выберите цвет (скажем, зелёный).

Пример правил для типичного графика:

УсловиеФорматПример значения
Смена 1 (день)Светло-голубой фон"Д"
Смена 2 (ночь)Тёмно-синий фон, белый текст"Н"
ОтпускЗелёный фон"О"
БольничныйЖёлтый фон"Б"
ПраздникКрасный текст"П"
⚠️ Внимание: Если вы копируете условное форматирование между листами, Excel может сбить ссылки на ячейки. Перед копированием зафиксируйте диапазоны абсолютными ссылками (например, $D$2:$Z$32).

Расчёт рабочих часов и сверхурочных: формулы для бухгалтерии

Для автоматического подсчёта отработанного времени добавьте вспомогательные столбцы:

  • 🕒 Норма часов в день (например, 8 для дневной смены, 10 для ночной).
  • ⏱️ Фактические часы (из графика или табеля).
  • ⚖️ Отклонение (разница между фактом и нормой).

Формула для расчёта сверхурочных за месяц:

=СУММЕСЛИМН(D2:D32;">0";D2:D32;"<>"О";D2:D32;"<>"Б")-СЧЁТЕСЛИМН(D2:D32;">0";D2:D32;"<>"О";D2:D32;"<>"Б")*8

Здесь D2:D32 — столбец с отработанными часами, 8 — дневная норма.

Для ночных смен используйте коэффициент (например, 1.2 для оплаты в повышенном размере):

=ЕСЛИ(E2="Н";D2*1,2;D2)

Где E2 — столбец с типом смены, D2 — часы.

Как учитывать праздничные дни?

В России праздничные дни, выпадающие на выходные, переносятся (ст. 112 ТК РФ). Чтобы автоматизировать перенос, создайте отдельный лист с официальными праздниками и используйте функцию ВПР для проверки дат.

Динамические графики и сводные таблицы: анализ загруженности

Для визуализации данных создайте сводную таблицу:

  1. Выделите диапазон с календарём (включая заголовки).
  2. Перейдите на вкладку Вставка → Сводная таблица.
  3. В строках разместите Месяц, в столбцах — Тип смены, в значениях — Количество дней.

Пример того, как может выглядеть анализ:

МесяцДневные сменыНочные сменыОтпускаБольничные
Январь18621
Февраль20410
Март19532

Для построения графика:

  1. Выделите данные сводной таблицы.
  2. Нажмите Вставка → Вставить график и выберите гистограмму с группировкой.
  3. Добавьте Линию тренда, чтобы увидеть сезонные колебания нагрузки.

Автоматизация с помощью Power Query и VBA: для продвинутых пользователей

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

  1. Перейдите на вкладку Данные → Получить данные → Из других источников → Пустая запрос.
  2. В редакторе введите код на языке M:
    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)),

    TableFromList = Table.FromList(Dates, Splitter.SplitByNothing(), {"Date"}, null, ExtraValues.Error),

    AddDayName = Table.AddColumn(TableFromList, "DayName", each Date.DayOfWeekName([Date])),

    AddMonth = Table.AddColumn(AddDayName, "Month", each Date.Month([Date]))

    in

    AddMonth

  3. Загрузите данные на новый лист.

Для автоматического экспорта графика в PDF по расписанию напишите макрос на VBA:

Sub ExportCalendar()

Dim ws As Worksheet

For Each ws In ThisWorkbook.Worksheets

ws.ExportAsFixedFormat Type:=xlTypePDF, Filename:="C:\Reports\" & ws.Name & ".pdf"

Next ws

End Sub

Чтобы макрос запускался ежемесячно, настройте задачу в Планировщике заданий Windows.

⚠️ Внимание: При использовании VBA отключите защиту макросов только для доверенных файлов. В противном случае ваш компьютер может стать уязвим для вирусов, маскирующихся под скрипты Excel.

FAQ: Ответы на частые вопросы

Как добавить в календарь производственный календарь России с переносами выходных?

Скачайте официальный производственный календарь с сайта КонсультантПлюс в формате Excel. Затем используйте функцию ВПР, чтобы отметить праздники и перенесённые дни. Пример формулы:

=ЕСЛИОШИБКА(ВПР(A1;Праздники!A:B;2;ЛОЖЬ);"Рабочий";"Праздник")

Где Праздники!A:B — диапазон с датами праздников и их статусами.

Можно ли сделать календарь с автоматическим учётом больничных из табеля?

Да. Создайте отдельный лист с табелем, где в столбце Больничный будут даты. Затем используйте функцию =СЧЁТЕСЛИ(Табель!A:A;A1)>0, чтобы отметить такие дни в календаре. Для условного форматирования настройте правило: если результат формулы ИСТИНА, закрасить ячейку жёлтым.

Как распечатать календарь так, чтобы он поместился на одном листе?

Перейдите в Файл → Печать → Параметры страницы. Выберите Поместить не более чем на: 1 страницу по ширине и 1 страницу по высоте. Если текст становится нечитаемым, уменьшите масштаб до 80–90% или разбейте календарь на два листа (полгода на каждом).

Можно ли синхронизировать этот календарь с Google Calendar?

Прямой синхронизации нет, но можно экспортировать данные в Google Sheets через Файл → Импорт, а затем подключить Google Apps Script для автоматического создания событий. Альтернатива — использовать надстройку Excel-to-Google-Calendar (доступна в Microsoft AppSource).

Как посчитать количество выходных между двумя датами?

Используйте формулу:

=ЧИСТРАБДНИ(A1;B1;Праздники!A:A)- (B1-A1+1)

Где A1 и B1 — начальная и конечная даты, Праздники!A:A — столбец с датами праздников. Формула вернёт количество нерабочих дней (выходные + праздники).