Работа с датами в Excel: от извлечения компонентов до календаря месяца
Чтобы получить год, месяц или день недели из даты в Excel, используйте встроенные функции ГОД, МЕСЯЦ и ДЕНЬНЕД. Например, если дата находится в ячейке A1, формула =ГОД(A1) вернет число года, а =ТЕКСТ(A1; "dddd") выведет полное название дня недели. Для создания полного списка дней конкретного месяца достаточно сгенерировать последовательность, начиная с первого числа, прибавляя единицу к предыдущей дате.
Базовые функции для работы с датой
В Excel каждая дата хранится как порядковый номер, но для анализа часто требуется выделить отдельные компоненты. Ниже приведены основные формулы для извлечения частей даты. Предположим, что исходная дата записана в ячейке A1.
| Компонент | Формула | Результат (для 15.04.2026) | Описание |
|---|---|---|---|
| Год | =ГОД(A1) | 2026 | Возвращает четырехзначное число года. |
| Месяц | =МЕСЯЦ(A1) | 4 | Возвращает номер месяца (1–12). |
| День месяца | =ДЕНЬ(A1) | 15 | Возвращает номер дня в месяце (1–31). |
| День недели (число) | =ДЕНЬНЕД(A1; 2) | 3 | Возвращает число от 1 (пн) до 7 (вс). Аргумент 2 задает начало недели с понедельника. |
| День недели (текст) | =ТЕКСТ(A1; "dddd") | среда | Полное название дня недели. Используйте "ddd" для сокращения (ср). |
Функция ДЕНЬНЕД по умолчанию считает воскресенье первым днем недели (возвращает 1). Чтобы неделя начиналась с понедельника (как принято в РФ), обязательно используйте второй аргумент 2: =ДЕНЬНЕД(дата; 2).
Создание списка всех дней месяца
Частая задача — сформировать вертикальный список всех дат выбранного месяца (календарь). Это можно сделать двумя способами: простым протягиванием или динамическим массивом (для новых версий Excel).
Способ 1: Классическое протягивание (универсальный)
Этот метод работает в любой версии Excel.
- В ячейку B1 введите формулу первого дня месяца на основе даты из A1:
=ДАТА(ГОД(A1); МЕСЯЦ(A1); 1) - В ячейку B2 введите формулу прибавления одного дня:
=B1 + 1 - Протяните формулу из B2 вниз.
- Чтобы список автоматически обрывался в конце месяца, измените формулу во второй ячейке (B2) на следующую и протяните её вниз до появления пустых ячеек:
=ЕСЛИ(МЕСЯЦ(B1+1)=МЕСЯЦ(B1); B1+1; "")
Эта логика проверяет: если месяц следующей даты совпадает с месяцем текущей, она добавляет день, иначе возвращает пустоту.
Способ 2: Динамические массивы (Excel 365 / 2021+)
Если у вас современная версия Excel, можно вывести весь список одной формулой без протягивания. Введите в ячейку B1:
=ДАТА(ГОД(A1); МЕСЯЦ(A1); 1) + ПОСЛЕДОВ(КОНЕЦМЕСЯЦА(A1;0) - ДАТА(ГОД(A1); МЕСЯЦ(A1); 1))
КОНЕЦМЕСЯЦАнаходит последнее число месяца.ПОСЛЕДОВгенерирует необходимое количество чисел (дней).- Сумма создает массив дат, который автоматически «разливается» по соседним ячейкам вниз.
Формат отображения. Если вместо даты вы видите числа (например, 45392), выделите столбец с датами, нажмите Ctrl+1 и выберите формат Дата.
Фильтрация рабочих и выходных дней
Получив список дней, часто требуется отделить рабочие дни от выходных или праздников.
Выделение выходных (суббота и воскресенье)
Используя функцию ДЕНЬНЕД с аргументом 2 (где 6 — суббота, 7 — воскресенье), создайте фильтр. Если список дней начинается в B1, в соседнем столбце C1 введите:
=ЕСЛИ(ИЛИ(ДЕНЬНЕД(B1; 2)>5); B1; "")
Протяните формулу вниз. В столбце останутся только даты выходных.
Выделение рабочих дней (понедельник – пятница)
Аналогично, но с условием «меньше или равно 5»:
=ЕСЛИ(ДЕНЬНЕД(B1; 2)<=5; B1; "")
Учет праздников
Если у вас есть список праздничных дат (например, в диапазоне E1:E10), исключите их из рабочих дней:
=ЕСЛИ(И(ДЕНЬНЕД(B1; 2)<=5; СЧЁТЕСЛИ($E$1:$E$10; B1)=0); B1; "")
Частые ошибки
- Результат — число вместо даты.
- Причина: Ячейка имеет общий числовой формат.
- Решение: Примените формат «Дата» через меню формата ячеек.
- Неверный день недели.
- Причина: Использование
ДЕНЬНЕДбез второго аргумента. По умолчанию воскресенье = 1. - Решение: Всегда указывайте
; 2для российской системы (Пн=1... Вс=7).
- Причина: Использование
- Список дней не останавливается.
- Причина: Простое протягивание
+1без условия остановки. - Решение: Используйте формулу с
ЕСЛИи проверкой месяца или функциюКОНЕЦМЕСЯЦА.
- Причина: Простое протягивание
FAQ
Как быстро узнать последний день текущего месяца?
Используйте функцию =КОНЕЦМЕСЯЦА(СЕГОДНЯ(); 0). Аргумент 0 означает конец текущего месяца, 1 — следующего и т.д.
Можно ли получить название месяца прописью?
Да, функцией ТЕКСТ: =ТЕКСТ(A1; "мммм") вернет «апрель», а =ТЕКСТ(A1; "ммм") — «апр».
Как посчитать количество рабочих дней в месяце?
Используйте функцию ЧИСТРАБДНИ. Пример: =ЧИСТРАБДНИ(ДАТА(2026;4;1); КОНЕЦМЕСЯЦА(ДАТА(2026;4;1);0)).