Создание списка дат на год в Microsoft Excel или Google Таблицах — задача, с которой сталкиваются бухгалтеры, менеджеры проектов, HR-специалисты и даже студенты. Казалось бы, что может быть проще: вручную прописать 365 строк? Но на практике это занимает часы, а ошибки в датах приводят к сбоям в отчётах, графиках платежей или расписаниях. К счастью, в Excel есть минимум 5 способов автоматизировать этот процесс — от элементарных формул до продвинутых скриптов, которые учитывают выходные, праздники и даже високосные годы.
В этой статье вы найдёте не только пошаговые инструкции для новичков, но и оптимизированные решения для опытных пользователей. Мы разберём, как:
- 📅 Сгенерировать даты за 10 секунд с помощью прогрессии (без формул!).
- 🔄 Использовать формулы
=ДАТА()и=ДАТАМЕС()для динамических списков, которые обновляются автоматически. - 🤖 Автоматизировать процесс через Power Query — инструмент, который многие упускают, хотя он экономит часы работы.
- 📊 Добавлять в календарь столбцы с днями недели, номерами недель и пометками о выходных.
- 🚀 Создать универсальный шаблон, который будет работать для любого года (включая 2026, 2026 и дальше).
Предупреждаем заранее: если вам нужен список дат с учётом производственного календаря РФ (с официальными праздниками и переносами), придётся немного потрудиться — но мы покажем, как сделать это без ручного ввода. А для тех, кто работает с Google Sheets, в конце статьи есть бонусный раздел с нюансами облачного редактора.
1. Самый быстрый способ: арифметическая прогрессия
Если вам нужен простой список дат без дополнительных столбцов (например, для фильтрации или сортировки), этот метод подойдёт лучше всего. Он работает во всех версиях Excel, включая Excel 2010 и новее, а также в Google Таблицах.
Алгоритм:
- Введите в ячейку
A1стартовую дату (например,01.01.2026). - Выделите ячейку
A1и перетащите маркер заполнения (маленький квадратик в правом нижнем углу) вниз на 365 строк. - 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. Добавление праздников (ручной способ)
Для России актуальный список праздников публикует правительство. Скачайте производственный календарь и добавьте даты праздников в отдельный столбец. Затем используйте условное форматирование, чтобы выделить их:
- Выделите столбец с датами.
- Перейдите на вкладку
Главная → Условное форматирование → Создать правило. - Выберите
Использовать формулу для определения форматируемых ячеек. - Введите формулу:
=СЧЁТЕСЛИ($B$1:$B$20; A1)>0, где$B$1:$B$20— диапазон с праздниками. - Задайте формат (например, красный цвет текста) и сохраните правило.
Как автоматизировать добавление праздников?
Для полной автоматизации можно использовать Power Query или VBA-макрос, который подтягивает праздники из внешнего источника (например, с сайта правительства или API календаря). Однако это требует навыков программирования. Альтернатива — скачать готовый шаблон календаря с праздниками и связать его с вашей таблицей через ВПР() или ИНДЕКС/ПОИСКПОЗ.
3.3. Выделение выходных цветом
Чтобы визуально отделить выходные, создайте правило условного форматирования с формулой:
=ИЛИ(ДЕНЬНЕД(A1; 2)=6; ДЕНЬНЕД(A1; 2)=7)
Где 6 — суббота, 7 — воскресенье. Настройте серый фон для этих ячеек.
4. Продвинутый метод: генерация дат через Power Query
Power Query (или Get & Transform в новых версиях Excel) — это инструмент для импорта и преобразования данных, который позволяет создавать сложные списки без формул. Вот как с его помощью сгенерировать календарь на год:
- Перейдите на вкладку
Данные → Получить данные → Из других источников → Пустой запрос. - В открывшемся редакторе Power Query введите в строку формул:
= {1..365}Это создаст список чисел от 1 до 365.
- Нажмите на иконку
Добавить столбец → Настраиваемый столбец. - Введите название столбца (например, "Дата") и формулу:
= Date.From(DateTime.LocalNow().AddDays([Column1] - 1))Замените
DateTime.LocalNow()на фиксированную дату, например,#date(2026, 1, 1). - Нажмите
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
Чтобы запустить макрос:
- Нажмите
Alt + F11, чтобы открыть редактор VBA. - Вставьте код выше в новый модуль (
Insert → Module). - Закройте редактор и нажмите
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; ЛОЖЬ) |
Где скачать шаблоны:
- 🌍 Официальные шаблоны Microsoft (бесплатно, на английском).
- 📁 Excelka.ru (русскоязычные шаблоны с учётом РФ).
- 📊
Если вам нужен календарь для бухгалтерских целей (например, для расчёта зарплаты или налогов), выбирайте шаблоны с пометкой "Производственный календарь". Они уже содержат данные о рабочих/выходных днях и переносах праздников.
7. Особенности работы в Google Таблицах
В Google Sheets большинство методов из этой статьи работают аналогично, но есть несколько нюансов:
7.1. Арифметическая прогрессия
Чтобы протянуть даты вниз:
- Введите стартовую дату в ячейку
A1. - Выделите ячейку и потяните за маркер заполнения (маленький квадратик в углу).
- В меню, которое появится при отпускании кнопки мыши, выберите
Продолжить ряд.
7.2. Формулы для дат
В Google Sheets доступны те же функции, что и в Excel, но некоторые имеют другие названия:
- 📅
=DATE()вместо=ДАТА(). - 📊
=WEEKDAY()вместо=ДЕНЬНЕД()(но нумерация дней недели может отличаться!). - 🔄
=WORKDAY()вместо=РАБДЕНЬ().
7.3. Условное форматирование
Чтобы выделить выходные:
- Выделите столбец с датами.
- Перейдите в меню
Формат → Условное форматирование. - В разделе
Правила форматированиявыберитеНастраиваемая формула. - Введите:
=OR(WEEKDAY(A1)=6; WEEKDAY(A1)=7). - Задайте стиль (например, серый фон) и нажмите
Готово.
Google Sheets не поддерживает Power Query, но зато есть встроенные скрипты (Apps Script), которые можно использовать для автоматизации. Например, этот код сгенерирует даты на год в текущем листе:
function generateYearDates() {var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var startDate = new Date('2026-01-01');
var dates = [];
for (var i = 0; i < 365; i++) {
var currentDate = new Date(startDate);
currentDate.setDate(startDate.getDate() + i);
dates.push([currentDate]);
}
sheet.getRange(1, 1, dates.length, 1).setValues(dates);
}
Чтобы запустить скрипт:
- Откройте
Расширения → Apps Script. - Вставьте код выше и сохраните проект.
- Нажмите
Выполнить(▶️) и подтвердите разрешения.
=ARRAYFORMULA(DATE(2026; 1; 1) + ROW(A1:A365) - 1)Эта формула заполнит 365 строк датами с 01.01.2026.-->
8. Частые ошибки и как их избежать
Даже в простой задаче по генерации дат пользователи допускают ошибки, которые ведут к некорректным результатам. Вот самые распространённые:
⚠️ Внимание: Если после протягивания маркера заполнения вместо дат отображаются числа (например, 44197), это значит, что ячейки имеют общий формат. Исправьте это, выбрав формат
Датана вкладкеГлавная.8.1. Ошибка с високосным годом
Если вы вручную прописываете даты или используете формулы без учёта високосных лет, февраль может содержать 28 дней вместо 29. Например, в 2026 году 29 февраля, а в 2026 — только 28.
Решение: Используйте функцию
=ДАТА()или=DATE()(в Google Sheets), которая автоматически учитывает високосные годы.8.2. Неправильная нумерация дней недели
Функция
=ДЕНЬНЕД()в Excel по умолчанию считает, что неделя начинается с воскресенья (1 = воскресенье, 7 = суббота). Если вы используете формулу=ДЕНЬНЕД(A1)=1для поиска выходных, она выделит воскресенья, но пропустит субботы.Решение: Указывайте второй аргумент
2для начала недели с понедельника:=ДЕНЬНЕД(A1; 2)8.3. Проблемы с форматом даты
Excel может интерпретировать введённую дату по-разному в зависимости от региональных настроек. Например,
01.02.2026в России — это 1 февраля, а в США — 2 января.Решение: Используйте международный формат (YYYY-MM-DD) или явно задавайте формат ячейки через
Формат → Формат ячеек → Дата.8.4. Ошибки в макросах
Если VBA-макрос выдаёт ошибку
Type mismatch(несоответствие типов), скорее всего, проблема в формате даты. Например, макрос ожидает дату в форматеDD/MM/YYYY, а ячейка содержит текст.Решение: Перед запуском макроса проверьте формат ячеек с датами (должен быть
Дата, а неОбщийилиТекст).Ошибка Причина Решение Вместо дат отображаются числа (44197) Неверный формат ячеек Измените формат на ДатаФевраль содержит 28 дней в високосном году Ручной ввод дат или ошибка в формуле Используйте =ДАТА()или=DATE()Макрос не работает Отключены макросы или ошибка в коде Проверьте настройки безопасности и синтаксис кода Условное форматирование не применяется Неверная формула или диапазон Проверьте синтаксис формулы и диапазон ячеек Как проверить, високосный ли год?
В Excel используйте формулу:
=ЕСЛИ(ИЛИ(ОСТАТ(GOD(A1);400)=0; И(ОСТАТ(GOD(A1);4)=0; ОСТАТ(GOD(A1);100)<>0)); "Високосный"; "Не високосный")Где
A1— ячейка с датой. Формула проверяет правила високосного года (делится на 4, но не на 100, кроме случаев, когда делится на 400).FAQ: Ответы на частые вопросы
🔹 Как сделать список дат на год с указанием кварталов?
Добавьте дополнительный столбец с формулой:
=ЕСЛИ(МЕСЯЦ(A1)<=3; "Q1"; ЕСЛИ(МЕСЯЦ(A1)<=6; "Q2"; ЕСЛИ(МЕСЯЦ(A1)<=9; "Q3"; "Q4")))Где
A1— ячейка с датой. Формула вернёт квартал (Q1-Q4).🔹 Можно ли создать календарь на год с учётом только рабочих дней?
Да, используйте функцию
=РАБДЕНЬ():=РАБДЕНЬ($A$1; СТРОКА(A1)-1)Где
$A$1— стартовая дата. Эта формула пропустит субботы, воскресенья и праздники (если они указаны в настройках Excel).🔹 Как экспортировать список дат в Word или PDF?
Выделите диапазон с датами, скопируйте его (
Ctrl+C), затем вставьте в Word с сохранением форматирования (Ctrl+Alt+V → Сохранить исходное форматирование). Для - Введите стартовую дату в ячейку