Работа с датами в Microsoft Excel — одна из самых востребованных задач при анализе данных. Нужно ли вам отфильтровать продажи за последний месяц, выделить просроченные задачи или автоматически рассчитать сроки выполнения проектов — условия по датам помогают сэкономить часы ручной работы. Но как правильно их настроить, чтобы не получить ошибку #ЗНАЧ! или не пропустить важные записи?
В этой статье мы разберём 5 практических способов работы с условиями по датам — от базовых функций ЕСЛИ до продвинутых инструментов вроде Power Query и условного форматирования. Вы узнаете, как сравнивать даты, учитывать текущую дату, работать с диапазонами и даже автоматизировать отчёты. Все примеры приведены с пояснениями и скриншотами, чтобы вы могли повторить их в своей таблице.
1. Базовые условия с функцией ЕСЛИ: сравнение дат
Функция ЕСЛИ (или IF в английской версии) — самый простой способ поставить условие по дате. Она позволяет проверять, соответствует ли значение в ячейке заданному критерию, и возвращать разные результаты в зависимости от ответа. Например, вы можете пометить задачи как «Просрочено», если их дедлайн уже наступил.
Базовый синтаксис функции:
=ЕСЛИ(логическое_выражение; значение_если_истина; значение_если_ложь)
Пример: предположим, в ячейке A2 указана дата завершения задачи (15.10.2026), а в ячейке B2 нужно вывести статус. Формула будет такой:
=ЕСЛИ(A2
- 📅 ТЕКУЩАЯ ДАТА: функция
СЕГОДНЯ()(илиTODAY()) автоматически подставляет сегодняшнюю дату и обновляется при каждом открытии файла. - ⏳ СРАВНЕНИЕ: можно использовать знаки
=,<,<=,>,>=для проверки дат. - 🔄 ДИНАМИЧНОСТЬ: если дата в
A2изменится, статус вB2обновится автоматически.
⚠️ Внимание: функцияСЕГОДНЯ()не фиксирует дату навсегда — она всегда показывает текущую. Если вам нужно зафиксировать дату (например, для отчёта), используйте комбинациюCtrl + ;(точка с запятой) для вставки статической даты.
Рассмотрим более сложный пример: проверка, попадает ли дата в определённый диапазон (например, текущий месяц). Формула будет такой:
=ЕСЛИ(И(A2>=ДАТА(ГОД(СЕГОДНЯ());МЕСЯЦ(СЕГОДНЯ());1); A2<=ДАТА(ГОД(СЕГОДНЯ());МЕСЯЦ(СЕГОДНЯ())+1;0)); "Текущий месяц"; "Другой период")
2. Условное форматирование: визуальное выделение дат
Если вам нужно не просто проверить дату, а визуально выделить ячейки, которые ей соответствуют, используйте условное форматирование. Этот инструмент позволяет автоматически окрашивать ячейки в зависимости от заданных правил. Например, вы можете сделать так, чтобы все просроченные задачи становились красными, а актуальные — зелёными.
Как настроить условное форматирование по дате:
- Выделите диапазон ячеек с датами (например,
A2:A100). - Перейдите на вкладку
Главная→Условное форматирование→Создать правило. - Выберите
Форматировать только ячейки, которые содержат. - В поле
Форматировать только ячейки сукажите условие, например:Значение меньше чем =СЕГОДНЯ(). - Нажмите
Формат, выберите цвет заполнения (например, красный) и сохраните правило.
Теперь все даты, которые меньше сегодняшней, будут подсвечиваться красным. Аналогично можно создать правила для:
- 🟢 Даты в будущем (например,
больше чем =СЕГОДНЯ()) — зелёный цвет. - 🟡 Даты в текущей неделе (используйте формулу
=И(A2>=СЕГОДНЯ()-НЕДЕЛЯ(СЕГОДНЯ();2);A2<=СЕГОДНЯ()+7-НЕДЕЛЯ(СЕГОДНЯ();2))) — жёлтый цвет. - 🔵 Конкретных дат (например,
равно =ДАТА(2026;12;31)) — синий цвет.
| Тип условия | Формула для правила | Пример применения |
|---|---|---|
| Просроченные даты | =A2<СЕГОДНЯ() |
Выделение задолженностей по платежам |
| Даты в будущем | =A2>СЕГОДНЯ() |
Пометка предстоящих событий |
| Даты в текущем месяце | =И(МЕСЯЦ(A2)=МЕСЯЦ(СЕГОДНЯ()); ГОД(A2)=ГОД(СЕГОДНЯ())) |
Анализ месячных продаж |
| Выходные дни | =ИЛИ(НЕДЕЛЯ(A2;2)>5; ДЕНЬНЕД(A2;2)>5) |
Пометка нерабочих дней в календаре |
3. Фильтрация данных по датам: от простого к сложному
Когда нужно быстро отобрать записи за определённый период (например, продажи за последний квартал), удобнее всего использовать фильтры. В Excel есть два типа фильтров: автофильтр (для простых условий) и расширенный фильтр (для сложных критериев).
Автофильтр подходит для базовых задач:
- Выделите заголовок столбца с датами и нажмите
Данные→Фильтр. - Нажмите на стрелку вниз в заголовке столбца и выберите
Фильтры по дате. - Укажите нужный период:
Завтра,На следующей неделе,В этом месяцеилиНастраиваемый фильтр.
Для более гибких условий используйте расширенный фильтр. Например, чтобы отобразить данные за последние 30 дней, исключая выходные:
- Создайте отдельный диапазон критериев (например, в ячейках
D1:E2):
D1: "Дата" | E1: "День недели"
D2: ">="&СЕГОДНЯ()-30 | E2: "<>Выходной"
- В ячейке
E2используйте формулу=ЕСЛИ(ИЛИ(НЕДЕЛЯ(D2;2)>5; ДЕНЬНЕД(D2;2)>5); "Выходной"; ""), гдеD2— ссылка на первую ячейку с датой в вашем диапазоне. - Перейдите в
Данные→Расширенный фильтри укажите исходный диапазон и диапазон критериев.
⚠️ Внимание: при использовании расширенного фильтра убедитесь, что заголовки в диапазоне критериев полностью совпадают с заголовками в исходных данных. Даже лишний пробел может привести к ошибке.
Выделите столбец с датами и проверьте их формат (должен быть Дата, а не Текст)|Убедитесь, что в данных нет пустых ячеек или ошибочных значений (например, 01.13.2026)|Создайте отдельный диапазон для критериев фильтрации (если используете расширенный фильтр)|Проверьте, что в критериях указаны корректные операторы сравнения (>=, <= и т.д.)
-->
4. Функции для работы с датами: ДАТА, ДЕНЬНЕД, МЕСЯЦ и другие
Excel предлагает десятки функций для манипуляции датами. Знание этих функций позволяет создавать гибкие условия, которые учитывают не только конкретные даты, но и дни недели, кварталы, рабочие/выходные дни. Рассмотрим самые полезные из них:
- 📅
ДАТА(год; месяц; день)— создаёт дату из отдельных компонентов. Пример:=ДАТА(2026; 12; 31)вернёт31.12.2026. - 📆
ДЕНЬ(дата)— возвращает день месяца. Пример:=ДЕНЬ(ДАТА(2026;12;31))вернёт31. - 🗓️
МЕСЯЦ(дата)— возвращает номер месяца (1–12). - 🕒
ГОД(дата)— возвращает год. - 🔄
ДЕНЬНЕД(дата; [тип_возврата])— возвращает день недели (1–7). Параметртип_возвратаопределяет, с какого дня начинается неделя (по умолчанию — воскресенье). - ⏳
РАЗНДАТ(начальная_дата; конечная_дата; единица)— вычисляет разницу между датами в годах ("y"), месяцах ("m") или днях ("d").
Пример использования: предположим, вам нужно проверить, попадает ли дата в ячейке A2 на выходной (субботу или воскресенье). Формула будет такой:
=ЕСЛИ(ИЛИ(ДЕНЬНЕД(A2;2)>5; ДЕНЬНЕД(A2;2)=1); "Выходной"; "Рабочий день")
Здесь ДЕНЬНЕД(A2;2) возвращает номер дня недели, где 1 — понедельник, а 7 — воскресенье. Условие >5 проверяет субботу (6) и воскресенье (7), а =1 — ещё раз воскресенье (на случай, если тип возврата другой).
Ещё один полезный пример: расчёт количества рабочих дней между двумя датами (исключая выходные). Для этого используйте функцию ЧИСТРАБДНИ:
=ЧИСТРАБДНИ(A2; B2)
Где A2 — начальная дата, а B2 — конечная. Если нужно исключить ещё и праздники, укажите их в третьем аргументе как диапазон ячеек.
Как Excel хранит даты?
Внутри Excel даты хранятся как числа, где 1 соответствует 1 января 1900 года. Например, 45000 — это 11 марта 2023 года. Это позволяет легко выполнять арифметические операции: прибавлять или вычитать дни, месяцы, годы. Чтобы увидеть числовое представление даты, измените формат ячейки на Общий.
5. Продвинутые условия: Power Query и сводные таблицы
Если вам нужно обработать большие массивы данных с датами (например, годовой отчёт по продажам), обычные формулы могут оказаться слишком медленными. В таких случаях на помощь приходят Power Query и сводные таблицы.
Power Query позволяет:
- 🔍 Фильтровать данные по датам ещё на этапе загрузки.
- 📊 Группировать записи по месяцам, кварталам или годам.
- 🔄 Автоматически обновлять данные при изменении источника.
Пример: импорт данных из таблицы и фильтрация по текущему году:
- Перейдите на вкладку
Данные→Получить данные→Из таблицы/диапазона. - В открывшемся редакторе Power Query выберите столбец с датами.
- Нажмите на стрелку в заголовке столбца и выберите
Фильтры по дате→Настраиваемый фильтр. - Укажите условие:
Год→равно→2026. - Нажмите
Закрыть и загрузить, чтобы вернуть отфильтрованные данные в Excel.
Сводные таблицы удобны для анализа данных по периодам. Например, чтобы посчитать сумму продаж по месяцам:
- Выделите исходные данные и нажмите
Вставка→Сводная таблица. - В поле
Строкиперетащите столбец с датами. - Нажмите правой кнопкой на любой ячейке в столбце с датами и выберите
Группировать. - Укажите параметры группировки:
МесяцыилиКварталы. - В поле
Значенияперетащите столбец с суммами продаж.
Преимущество сводных таблиц — динамическое обновление. Если исходные данные изменятся, достаточно нажать Обновить, и сводная таблица пересчитается автоматически.
6. Ошибки при работе с датами и как их избежать
Даже опытные пользователи Excel иногда сталкиваются с ошибками при работе с датами. Вот самые распространённые проблемы и способы их решения:
| Ошибка | Причина | Решение |
|---|---|---|
#ЗНАЧ! в формулах с датами |
Ячейка содержит текст вместо даты (например, "15.10.2026" как текст). |
Проверьте формат ячейки (должен быть Дата). Используйте =ДАТАЗНАЧ(A2), чтобы преобразовать текст в дату. |
| Некорректная сортировка дат | Дата хранится как текст (например, "октябрь 15, 2026"). |
Преобразуйте текст в дату с помощью ДАТАЗНАЧ или функции ТЕКСТ.ПОСЛЕ/ЛЕВСИМВ для извлечения дня, месяца, года. |
Функция СЕГОДНЯ() не обновляется |
В настройках книги отключено автоматическое пересчёты формул. | Перейдите в Формулы → Параметры вычислений → Автоматически. |
| Условное форматирование не применяется | Формат ячейки установлен как Текст или дата введена некорректно. |
Проверьте формат ячейки и исправьте дату. Используйте CTRL + 1 для открытия окна формата. |
Ещё одна типичная ошибка — неверное использование функций для работы с датами. Например, многие пользователи пытаются вычесть одну дату из другой напрямую, не зная о функции РАЗНДАТ. Результат может быть неточным из-за особенностей хранения дат в Excel. Правильный способ:
=РАЗНДАТ(A2; B2; "d") // Разница в днях
=РАЗНДАТ(A2; B2; "m") // Разница в месяцах
=РАЗНДАТ(A2; B2; "y") // Разница в годах
Если вам нужно посчитать количество полных лет между двумя датами (например, для расчёта стажа), используйте комбинацию функций:
=ЦЕЛОЕ(РАЗНДАТ(A2; B2; "y"))
7. Автоматизация отчётов: динамические диапазоны и именованные формулы
Если вы регулярно создаёте отчёты по датам (например, ежемесячные продажи), полезно настроить динамические диапазоны и именованные формулы. Это позволит автоматически обновлять данные без ручного вмешательства.
Способ 1: Именованные диапазоны
Предположим, у вас есть таблица с датами в столбце A, и вы хотите всегда видеть данные за последний месяц. Создайте именованный диапазон:
- Перейдите на вкладку
Формулы→Диспетчер имён→Создать. - В поле
ИмявведитеПоследнийМесяц. - В поле
Диапазонвведите формулу:
=ФИЛЬТР(A2:A100; (МЕСЯЦ(A2:A100)=МЕСЯЦ(СЕГОДНЯ()))*(ГОД(A2:A100)=ГОД(СЕГОДНЯ())))
Теперь вы можете использовать ПоследнийМесяц в других формулах, и он будет автоматически обновляться.
Способ 2: Динамические массивы (Excel 365)
В новых версиях Excel (2019 и новее) доступны динамические массивы, которые позволяют создавать автоматически расширяемые диапазоны. Например, чтобы вывести все даты за текущий год:
=ФИЛЬТР(A2:A100; ГОД(A2:A100)=ГОД(СЕГОДНЯ()))
Эта формула вернёт массив дат, которые можно сразу использовать в других вычислениях.
Способ 3: Power Query с параметрами
Если вам нужно создавать отчёты за произвольные периоды (например, за выбранный пользователем месяц), настройте параметр в Power Query:
- В редакторе Power Query перейдите на вкладку
Главная→Управление параметрами→Создать параметр. - Укажите имя параметра (например,
ВыбранныйМесяц) и типЦелое число. - В формуле фильтрации используйте этот параметр:
= Table.SelectRows(#"Предыдущий шаг", each Date.Month([Дата]) = ВыбранныйМесяц)
Теперь при каждом обновлении данных вы сможете вводить номер месяца вручную, и отчёт будет пересчитываться автоматически.
FAQ: Ответы на частые вопросы
Как в Excel сравнить дату с сегодняшней?
Используйте функцию СЕГОДНЯ() в комбинации с операторами сравнения. Например, чтобы проверить, прошла ли дата в ячейке A2, используйте формулу:
=ЕСЛИ(A2<СЕГОДНЯ(); "Прошло"; "Ещё нет")
Если нужно сравнить только день и месяц (игнорируя год), используйте:
=ЕСЛИ(И(ДЕНЬ(A2)=ДЕНЬ(СЕГОДНЯ()); МЕСЯЦ(A2)=МЕСЯЦ(СЕГОДНЯ())); "Сегодня"; "Другой день")
Почему Excel не распознаёт мою дату?
Чаще всего это происходит из-за неверного формата ячейки. Проверьте следующее:
- Формат ячейки должен быть
Дата, а неТекстилиОбщий. - Дата должна быть введена в одном из стандартных форматов (например,
15.10.2026или15-окт-2026). - Если дата хранится как текст, используйте
=ДАТАЗНАЧ(A2)для преобразования.
Также убедитесь, что в настройках региональных параметров Windows установлен правильный формат даты (например, ДД.ММ.ГГГГ для России).
Как посчитать количество дней между двумя датами, исключая выходные?
Используйте функцию ЧИСТРАБДНИ:
=ЧИСТРАБДНИ(A2; B2)
Где A2 — начальная дата, а B2 — конечная. Если нужно исключить ещё и праздники, укажите их в третьем аргументе как диапазон ячеек:
=ЧИСТРАБДНИ(A2; B2; D2:D10)
Где D2:D10 — диапазон с датами праздников.
Можно ли в Excel создать условие по времени (часам и минутам)?
Да, для работы с временем используйте функции ВРЕМЯ, ЧАС, МИНУТЫ и СЕКУНДЫ. Например, чтобы проверить, попадает ли время в ячейке A2 в интервал с 9:00 до 18:00:
=ЕСЛИ(И(ЧАС(A2)>=9; ЧАС(A2)<18); "Рабочее время"; "Нерабочее время")
Если в ячейке хранится дата и время одновременно, используйте ВРЕМЯЗНАЧ для извлечения времени:
=ЕСЛИ(ВРЕМЯЗНАЧ(A2)>=ВРЕМЯ(9;0;0); "После 9:00"; "До 9:00")
Как автоматически обновлять даты при открытии файла?
Функции СЕГОДНЯ() и ТДАТА() (текущие дата и время) обновляются автоматически при каждом открытии файла или пересчёте формул. Если обновление не происходит:
- Проверьте настройки пересчёта:
Формулы→Параметры вычислений→Автоматически. - Если файл открыт долгое время, нажмите
F9для принудительного пересчёта. - Для фиксации текущей даты (чтобы она не менялась) используйте комбинацию
CTRL + ;(вставка статической даты).