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

Создание списка дат на год в Microsoft Excel или Google Таблицах — задача, с которой сталкиваются бухгалтеры, менеджеры проектов, HR-специалисты и даже студенты. Казалось бы, что может быть проще: вручную прописать 365 строк? Но на практике это занимает часы, а ошибки в датах приводят к сбоям в отчётах, графиках платежей или расписаниях. К счастью, в Excel есть минимум 5 способов автоматизировать этот процесс — от элементарных формул до продвинутых скриптов, которые учитывают выходные, праздники и даже високосные годы.

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

  • 📅 Сгенерировать даты за 10 секунд с помощью прогрессии (без формул!).
  • 🔄 Использовать формулы =ДАТА() и =ДАТАМЕС() для динамических списков, которые обновляются автоматически.
  • 🤖 Автоматизировать процесс через Power Query — инструмент, который многие упускают, хотя он экономит часы работы.
  • 📊 Добавлять в календарь столбцы с днями недели, номерами недель и пометками о выходных.
  • 🚀 Создать универсальный шаблон, который будет работать для любого года (включая 2026, 2026 и дальше).

Предупреждаем заранее: если вам нужен список дат с учётом производственного календаря РФ (с официальными праздниками и переносами), придётся немного потрудиться — но мы покажем, как сделать это без ручного ввода. А для тех, кто работает с Google Sheets, в конце статьи есть бонусный раздел с нюансами облачного редактора.

📊 Какой способ генерации дат вы используете чаще?
Вручную прописываю
Формулы Excel
Прогрессия арифметическая
Power Query/Mакросы
Не знаю, как это сделать

1. Самый быстрый способ: арифметическая прогрессия

Если вам нужен простой список дат без дополнительных столбцов (например, для фильтрации или сортировки), этот метод подойдёт лучше всего. Он работает во всех версиях Excel, включая Excel 2010 и новее, а также в Google Таблицах.

Алгоритм:

  1. Введите в ячейку A1 стартовую дату (например, 01.01.2026).
  2. Выделите ячейку A1 и перетащите маркер заполнения (маленький квадратик в правом нижнем углу) вниз на 365 строк.
  3. Excel автоматически заполнит ячейки последовательными датами.

Но что, если нужно пропустить выходные или добавить только рабочие дни? Здесь поможет настройка прогрессии:

  • 📌 Выделите ячейку A1 с датой и перейдите на вкладку Главная → Заполнить → Прогрессия.
  • 📅 В окне настроек выберите Расположение: по столбцам, Тип: Даты, Единицы: День.
  • 🔢 Укажите Шаг: 1 и Предельное значение (например, 31.12.2026).
  • ✅ Нажмите OK — список готов!

Для рабочих дней (пн-пт) в настройках прогрессии выберите Единицы: Рабочие дни. Это исключит субботы и воскресенья, но не учитывает праздники — их придётся удалять вручную или через фильтр.

2. Динамический список с формулами =ДАТА() и =ДАТАМЕС()

Статичный список дат удобен, но что, если вам нужно, чтобы он автоматически обновлялся при изменении стартовой даты или года? Здесь на помощь приходят формулы. Рассмотрим два варианта:

2.1. Простая формула для последовательных дат

Введите в ячейку A1 стартовую дату (например, 01.01.2026). Затем в ячейку A2 впишите формулу:

=A1+1

И протяните её на 365 строк. Excel будет прибавлять по одному дню к предыдущей дате.

2.2. Формула с учётом года (для универсального шаблона)

Если вы хотите, чтобы список автоматически подстраивался под любой год, используйте комбинацию функций =ДАТА() и =ДЕНЬНЕД(). Пример:

=ДАТА($C$1; 1; 1) + (СТРОКА(A1)-1)

Где $C$1 — ячейка с номером года (например, 2026). Теперь при изменении года в C1 все даты в столбце обновятся автоматически.

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

=ТЕКСТ(A1; "ДДДД")

Она вернёт полное название дня (например, "понедельник"). Для сокращённого варианта ("пн", "вт") замените "ДДДД" на "ДДД".

Формула Результат Пример для 01.01.2026
=ТЕКСТ(A1; "ДД.ММ.ГГГГ") Дата в формате "день.месяц.год" 01.01.2026
=ТЕКСТ(A1; "ДДДД") Полное название дня недели среда
=НОМНЕДЕЛИ(A1; 21) Номер недели в году (по ISO) 1
=МЕСЯЦ(A1) Номер месяца 1

Введите стартовую дату в ячейку A1|

Создайте формулу для автоматического прибавления дней|

Добавьте столбцы с днями недели и номерами недель|

Зафиксируйте ссылку на год с помощью $ (например, $C$1)|

Проверьте корректность дат для февраля (високосный год)-->

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

Базовый список дат — это только половина дела. Чаще всего требуется исключить выходные или выделить праздники. Вот как это сделать:

3.1. Фильтрация рабочих дней

Используйте функцию =РАБДЕНЬ(), чтобы пропустить субботы и воскресенья:

=РАБДЕНЬ($A$1; СТРОКА(A1)-1)

Где $A$1 — стартовая дата. Эта формула вернёт только рабочие дни, пропуская выходные.

3.2. Добавление праздников (ручной способ)

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

  1. Выделите столбец с датами.
  2. Перейдите на вкладку Главная → Условное форматирование → Создать правило.
  3. Выберите Использовать формулу для определения форматируемых ячеек.
  4. Введите формулу: =СЧЁТЕСЛИ($B$1:$B$20; A1)>0, где $B$1:$B$20 — диапазон с праздниками.
  5. Задайте формат (например, красный цвет текста) и сохраните правило.
Как автоматизировать добавление праздников?

Для полной автоматизации можно использовать Power Query или VBA-макрос, который подтягивает праздники из внешнего источника (например, с сайта правительства или API календаря). Однако это требует навыков программирования. Альтернатива — скачать готовый шаблон календаря с праздниками и связать его с вашей таблицей через ВПР() или ИНДЕКС/ПОИСКПОЗ.

3.3. Выделение выходных цветом

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

=ИЛИ(ДЕНЬНЕД(A1; 2)=6; ДЕНЬНЕД(A1; 2)=7)

Где 6 — суббота, 7 — воскресенье. Настройте серый фон для этих ячеек.

4. Продвинутый метод: генерация дат через Power Query

Power Query (или Get & Transform в новых версиях Excel) — это инструмент для импорта и преобразования данных, который позволяет создавать сложные списки без формул. Вот как с его помощью сгенерировать календарь на год:

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

    Это создаст список чисел от 1 до 365.

  3. Нажмите на иконку Добавить столбец → Настраиваемый столбец.
  4. Введите название столбца (например, "Дата") и формулу:
    = Date.From(DateTime.LocalNow().AddDays([Column1] - 1))

    Замените DateTime.LocalNow() на фиксированную дату, например, #date(2026, 1, 1).

  5. Нажмите OK, затем Закрыть и загрузить — список дат появится на новом листе.

Преимущества этого метода:

  • 🔄 Динамическое обновление: при изменении стартовой даты достаточно обновить запрос.
  • 📊 Возможность добавлять дополнительные столбцы (день недели, квартал, праздники) прямо в Power Query.
  • 🚀 Масштабируемость: можно генерировать даты на 5, 10 лет вперёд или назад.

Чтобы добавить столбец с днями недели в Power Query, выделите столбец с датами, перейдите на вкладку Добавить столбец → Дата → День недели → Название.

5. Автоматизация через макросы (VBA)

Если вы регулярно создаёте календари на год, имеет смысл написать VBA-макрос, который будет делать это в один клик. Вот пример кода для генерации дат с учётом выходных:

Sub GenerateYearCalendar()

Dim ws As Worksheet

Dim startDate As Date

Dim i As Integer

Dim rowNum As Integer

' Создаём новый лист

Set ws = ThisWorkbook.Sheets.Add

ws.Name = "Календарь " & Year(Date)

' Стартовая дата — 1 января текущего года

startDate = DateSerial(Year(Date), 1, 1)

rowNum = 1

' Заголовки столбцов

ws.Cells(rowNum, 1).Value = "Дата"

ws.Cells(rowNum, 2).Value = "День недели"

ws.Cells(rowNum, 3).Value = "Рабочий день"

rowNum = rowNum + 1

' Генерируем даты

For i = 0 To 364

ws.Cells(rowNum, 1).Value = startDate + i

ws.Cells(rowNum, 1).NumberFormat = "dd.mm.yyyy"

ws.Cells(rowNum, 2).Value = Format(startDate + i, "dddd")

ws.Cells(rowNum, 3).Value = IIf(Weekday(startDate + i, vbMonday) < 6, "Да", "Нет")

rowNum = rowNum + 1

Next i

' Автоподбор ширины столбцов

ws.Columns("A:C").AutoFit

End Sub

Чтобы запустить макрос:

  1. Нажмите Alt + F11, чтобы открыть редактор VBA.
  2. Вставьте код выше в новый модуль (Insert → Module).
  3. Закройте редактор и нажмите Alt + F8, выберите макрос GenerateYearCalendar и нажмите Выполнить.

Макрос создаст новый лист с календарём на текущий год, где:

  • 📅 Столбец A — даты в формате дд.мм.гггг.
  • 📊 Столбец B — дни недели (полное название).
  • Столбец C — пометка "Да"/"Нет" для рабочих/выходных дней.

Внимание: макрос использует функцию Weekday с параметром vbMonday, что означает начало недели с понедельника. Если в вашей стране неделя начинается с воскресенья, замените vbMonday на vbSunday.

6. Шаблон календаря на год: готовое решение

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

Столбец Данные Формула/пример
A Дата 01.01.2026, 02.01.2026...
B День недели =ТЕКСТ(A1; "ДДДД")
C Номер недели =НОМНЕДЕЛИ(A1; 21)
D Рабочий день =ЕСЛИ(ИЛИ(ДЕНЬНЕД(A1;2)=6;ДЕНЬНЕД(A1;2)=7);"Нет";"Да")
E Праздник Ручной ввод или =ВПР(A1; Праздники!A:B; 2; ЛОЖЬ)

Где скачать шаблоны: