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

Ведение учёта отпусков сотрудников — задача, с которой сталкивается каждый HR-специалист или руководитель отдела. Excel остаётся одним из самых гибких инструментов для этой цели: он не требует покупки дорогостоящего ПО, позволяет настраивать логику под нужды компании и интегрируется с другими системами. Однако многие пользователи теряются, пытаясь создать календарь с нуля: то формулы не срабатывают, то даты отображаются криво, то условное форматирование «ломает» весь дизайн.

На самом деле, даже без глубоких знаний Excel можно сделать профессиональный календарь отпусков за 15–20 минут. В этой статье мы разберём 3 рабочих способа — от простого статичного календаря до динамической таблицы с автоматическим подсчётом дней и предупреждениями о пересечениях. А ещё вы узнаете, как избежать типичной ошибки с форматом дат, из-за которой 30% пользователей получают неверные расчёты.

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

📊 Как вы ведёте учёт отпусков сейчас?
В Excel
В специализированной программе (1С, Битрикс24)
На бумаге
Не веду вообще

1. Подготовка данных: что нужно знать до создания календаря

Прежде чем приступать к созданию таблицы, соберите исходную информацию. Без неё даже самый продвинутый календарь будет бесполезен.

Вам понадобятся:

  • 📋 Список сотрудников с ФИО, должностью и отделом (если нужно разбивать по подразделениям).
  • 📅 Производственный календарь на текущий год — чтобы учитывать официальные праздники и переносы выходных.
  • 📝 Правила компании по отпускам: минимальная/максимальная продолжительность, возможность дробления, порядок согласования.
  • 🔄 Данные об уже запланированных отпусках (если календарь создаётся не с начала года).

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

⚠️ Внимание: Если вы ведёте учёт для компании с числом сотрудников больше 50, лучше сразу разделите календарь по отделам. Excel начинает «тормозить» при обработке больших массивов данных с формулами и условным форматированием.

Также заранее решите, какой период будет охватывать ваш календарь. Оптимальные варианты:

  • 🗓️ Годовой календарь — удобно для планирования, но может быть громоздким.
  • 📊 Поквартальный — позволяет детализировать данные без перегрузки файла.
  • 🔄 «Скользящий» календарь на 3–6 месяцев вперёд с автоматическим обновлением дат.

2. Способ 1: Простой календарь отпусков (без формул)

Этот метод подойдёт для небольших команд (до 15 человек) или для тех, кто только начинает осваивать Excel. Здесь не используется сложных формул — только базовое форматирование и ручной ввод данных.

Шаг 1. Создайте заготовку таблицы

Откройте новый лист в Excel и создайте заголовки:

  • 📌 Столбец A — ФИО сотрудника.
  • 📌 Столбцы B:M — Месяцы года (январь–декабрь).
  • 📌 Столбец N — Всего дней отпуска (для ручного подсчёта).

Шаг 2. Настройте формат ячеек

Выделите ячейки с месяцами (B1:M1) и:

  1. Нажмите правой кнопкой → Формат ячеек.
  2. Выберите категорию Дата → тип март 2026 (или аналогичный).
  3. В ячейках под месяцами (B2:M100) установите формат Общий или Текстовый — сюда вы будете вводить даты отпусков вручную.

Шаг 3. Заполните данные

В ячейках под каждым месяцем укажите даты отпусков через запятую (например, 5–12, 15–19). Для наглядности используйте условное форматирование:

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

Выделили достаточно строк для всех сотрудников|

Проверили корректность формата дат в заголовках|

Добавили условное форматирование для дат отпусков|

Сохранили файл с понятным именем (например, "Отпуска_2026.xlsx")-->

✅ Плюсы метода: быстро, не требует знаний формул, легко редактировать.

❌ Минусы: нет автоматического подсчёта дней, высокая вероятность ошибок при ручном вводе, сложно анализировать пересечения отпусков.

⚠️ Внимание: Если в вашей компании отпуска согласуются заранее (например, на квартал), добавьте столбец Статус с вариантами: Запланирован, Согласован, Отменён. Это поможет избежать путаницы при изменении планов.

3. Способ 2: Динамический календарь с формулами

Этот вариант подходит для компаний побольше (15–100 сотрудников). Здесь мы будем использовать формулы для автоматического подсчёта дней отпуска и проверки пересечений.

Шаг 1. Создайте справочник сотрудников

На отдельном листе (назовите его Сотрудники) создайте таблицу с полями:

  • 🆔 Табельный номер (или ID).
  • 👤 ФИО.
  • 🏢 Отдел.
  • 📅 Дата приёма на работу (нужно для расчёта стажа).

Шаг 2. Создайте календарь на основном листе

На листе Календарь сделайте заголовки:

  • 📌 Столбец A — ФИО (свяжите с данными из листа Сотрудники через ВПР или XLOOKUP).
  • 📌 Столбцы B:AF — Дани месяца (например, 1-янв, 2-янв и т. д.).
  • 📌 Столбец AG — Всего дней отпуска.

Шаг 3. Добавьте формулы для автоматического заполнения

В ячейку B2 (первый день первого сотрудника) введите формулу:

=ЕСЛИ(И($A2<>"";B$1>=ДАТАЗНАЧ("1.01."&ГОД(СЕГОДНЯ()));B$1<=ДАТАЗНАЧ("31.12."&ГОД(СЕГОДНЯ())));"О";"")

Эта формула проверяет:

  1. Есть ли ФИО в строке ($A2<>"").
  2. Попадает ли дата в текущий год.

Если оба условия выполнены, ячейка заполняется буквой О (отпуск). Далее скопируйте формулу на весь диапазон календаря.

Шаг 4. Настройте условное форматирование

Выделите диапазон с датами (B2:AF100) и создайте правило:

  1. Форматировать только ячейки, которые содержат → Текст → равно → О.
  2. Задайте зелёное заполнение.

Шаг 5. Добавьте подсчёт дней отпуска

В ячейку AG2 введите:

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

Эта формула посчитает количество ячеек с буквой О в строке сотрудника.

4. Способ 3: Продвинутый календарь с проверкой пересечений

Этот метод подходит для HR-отделов, где важно отслеживать, чтобы в один день не уходило в отпуск слишком много людей из одного отдела. Мы добавим автоматическую проверку на пересечения и предупреждения.

Шаг 1. Создайте таблицу с данными об отпусках

На отдельном листе (Отпуска) сделайте таблицу с полями:

  • 🆔 ID сотрудника.
  • 📅 Дата начала.
  • 📅 Дата окончания.
  • ✅ Статус (Запланирован/Согласован).

Шаг 2. Добавьте формулу для проверки пересечений

На листе Календарь в ячейку B2 введите:

=ЕСЛИОШИБКА(ЕСЛИ(И($A2<>"";СЧЁТЕСЛИ(Отпуска!$B$2:$B$100;B$1)>1);"⚠";"");"")

Эта формула проверяет, сколько сотрудников уходит в отпуск в указанную дату. Если больше одного — выводит знак ⚠.

Шаг 3. Настройте условное форматирование для предупреждений

Создайте правило для диапазона B2:AF100:

  1. Форматировать только ячейки, которые содержат → Текст → содержащий → ⚠.
  2. Задайте красное заполнение или шрифт.

Шаг 4. Добавьте сводную таблицу для анализа

На отдельном листе создайте сводную таблицу на основе данных из листа Отпуска. Добавьте в неё поля:

  • 📊 Отдел (в строки).
  • 📅 Месяц (извлеките из даты начала с помощью формулы =МЕСЯЦ([@[Дата начала]])).
  • 👥 Количество сотрудников в отпуске (в значения).

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

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

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

=ИЛИ(ДЕНЬНЕД(B$1;2)>5;НЕТРАБДЕНЬ(B$1))

Где ДЕНЬНЕД проверяет день недели (1–7, где 6 и 7 — выходные), а НЕТРАБДЕНЬ учитывает праздники из производственного календаря.

5. Учёт праздников и переносов выходных

Если не учесть официальные праздники, календарь отпусков будет неточным: сотрудники могут планировать отпуск на выходные дни, которые перенесены на другие даты. В Excel есть два способа решить эту проблему.

Способ 1: Ручной ввод праздников

Создайте на отдельном листе (Праздники) список дат в формате ДД.ММ.ГГГГ. Затем используйте функцию НЕТРАБДЕНЬ для проверки:

=ЕСЛИ(НЕТРАБДЕНЬ(B$1;Праздники!$A$2:$A$20);"П";"")

Эта формула вернёт П, если дата попадает на праздничный день.

Способ 2: Автоматическое определение праздников

Если у вас Excel 365 или Excel 2021, используйте функцию РАБДЕНЬ.МЕЖД для расчёта рабочих дней между двумя датами с учётом праздников:

=РАБДЕНЬ.МЕЖД([@[Дата начала]];[@[Дата окончания]];Праздники!$A$2:$A$20)

Для старых версий Excel можно использовать ДЕНЬНЕД с корректировкой на праздники:

=[@[Дата окончания]]-[@[Дата начала]]+1-СУММПРОИЗВ(--(ДЕНЬНЕД(СТРОКА(НЕПРЯМ($A$1:ИНДЕКС($A:$A;[@[Дата окончания]]-[@[Дата начала]])));2)>5);--(НЕТРАБДЕНЬ(СТРОКА(НЕПРАВ($A$1:ИНДЕКС($A:$A;[@[Дата окончания]]-[@[Дата начала]]))))))
⚠️ Внимание: В России праздничные дни могут переноситься с выходных на будни. Например, если 1 января выпадает на субботу, выходной переносится на понедельник. Обновляйте список праздников каждый год по данным КонсультантПлюс или Гарант.

6. Автоматизация с помощью Power Query

Если вам нужно регулярно обновлять календарь (например, ежемесячно добавлять новые данные об отпусках), используйте Power Query — инструмент для импорта и преобразования данных в Excel.

Шаг 1. Импортируйте данные

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

let

// Создаём список дат на год

StartDate = #date(Date.Year(DateTime.LocalNow()), 1, 1),

EndDate = #date(Date.Year(DateTime.LocalNow()), 12, 31),

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

// Преобразуем в таблицу

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

// Добавляем столбцы с днём недели и месяцем

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

AddMonthName = Table.AddColumn(AddDayName, "MonthName", each Date.MonthName([Date])),

AddDayOfWeek = Table.AddColumn(AddMonthName, "DayOfWeek", each Date.DayOfWeek([Date]) + 1) // +1, так как неделя начинается с 0

in

AddDayOfWeek

Шаг 2. Загрузите данные в Excel

Нажмите Закрыть и загрузить → данные появятся на новом листе. Теперь вы можете связать этот список дат с вашим календарём отпусков.

Шаг 3. Автоматизируйте обновление

Каждый месяц достаточно нажать Данные → Обновить все, и календарь обновится с учётом новых данных.

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

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

Ошибка Причина Решение
Неверный подсчёт дней отпуска Формула не учитывает праздники или выходные Используйте РАБДЕНЬ.МЕЖД или корректируйте результат вручную
Пересечения отпусков не отображаются Неправильный диапазон в формуле СЧЁТЕСЛИ Проверьте ссылки на лист с данными об отпусках
Дата отображается как число (например, 44927) Неверный формат ячейки Выделите ячейку → Формат ячеек → выберите Дата
Файл тормозит при открытии Слишком много формул или условного форматирования Разбейте календарь на несколько листов (по отделам или кварталам)
Не обновляются данные после изменений Отключён автоматический пересчёт Перейдите в Формулы → Параметры вычислений → Автоматически

Ещё одна частая проблема — ошибки при копировании формул. Например, если вы протянете формулу с относительными ссылками (A1), она «съедет» при копировании в другую ячейку. Чтобы этого избежать, используйте абсолютные ссылки ($A$1) для фиксированных диапазонов (например, для списка праздников).

Если календарь используется несколькими людьми (например, HR и руководителями отделов), защитите важные ячейки от изменений:

  1. Выделите ячейки, которые можно редактировать (например, даты отпусков).
  2. Нажмите правой кнопкой → Формат ячеек → вкладка Защита → снимите галочку с Защищаемая ячейка.
  3. Перейдите на вкладку Рецензирование → Защитить лист.

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

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

Шаблоны для Excel:

Альтернативы Excel:

  • 📊 Google Sheets — удобно для командной работы, есть встроенные календари.
  • 📅 Trello или Asana — если нужен визуальный трекер отпусков.
  • 💼 1С:Зарплата и Управление Персоналом — для полной автоматизации учёта.

Если вы всё же предпочитаете Excel, но хотите упростить работу, используйте надстройки:

  • 🔧 Kutools for Excel — позволяет быстро создавать календари и диаграммы.
  • 🔧 Ablebits — удобные инструменты для работы с датами.

FAQ: Частые вопросы по календарю отпусков в Excel

🔹 Как сделать так, чтобы календарь автоматически обновлялся каждый год?

Используйте формулы с функцией ГОД(СЕГОДНЯ()) вместо жёстко прописанного года. Например, для создания списка дат на текущий год:

=ДАТА(ГОД(СЕГОДНЯ());1;1)

Для следующего года замените СЕГОДНЯ() на ДАТА(ГОД(СЕГОДНЯ())+1;1;1).

🔹 Можно ли сделать календарь с учётом стажа сотрудника?

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

=ЕСЛИ(ГОД(СЕГОДНЯ())-ГОД([@[Дата приёма]])>=1;28;0)

Где 28 — количество дней отпуска за полный год работы. Для дробного стажа используйте:

=ОКРУГЛВНИЗ((СЕГОДНЯ()-[@[Дата приёма]])/365;0)*2,8
🔹 Как экспортировать календарь в PDF для печати?

Перейдите в Файл → Экспорт → Создать PDF/XPS. Перед этим:

  • Настройте Параметры страницы (вкладка Разметка страницы) — установите ориентацию Альбомная.
  • Убедитесь, что все столбцы помещаются на страницу (при необходимости уменьшите масштаб).
  • Добавьте заголовки строк и столбцов для печати (Разметка страницы → Печать заголовков).
🔹 Как посчитать количество сотрудников в отпуске по дням?

Создайте отдельную таблицу с датами и используйте формулу:

=СЧЁТЕСЛИ(Отпуска!$B$2:$B$100;A2)

Где Отпуска!$B$2:$B$100 — диапазон с датами начала отпусков, а A2 — текущая дата в вашей сводной таблице.

Для подсчёта по отделам добавьте условие:

=СЧЁТЕСЛИМН(Отпуска!$B$2:$B$100;A2;Отпуска!$D$2:$D$100;B2)

Где Отпуска!$D$2:$D$100 — столбец с отделами, а B2 — текущий отдел.

🔹 Можно ли интегрировать календарь с Outlook или Google Calendar?

Да, но для этого потребуется использовать Power Automate (для Outlook) или Apps Script (для Google Calendar). Альтернативный вариант — экспортировать данные в формат .ics и импортировать в календарь. Для этого:

  1. Сохраните данные об отпусках в формате CSV.
  2. Используйте онлайн-конвертер (например, ConvertCSV) для преобразования в .ics.
  3. Импортируйте файл в ваш календарь.

Обратите внимание: автоматическая синхронизация в этом случае не настраивается — при изменении данных в Excel потребуется повторный экспорт.