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

Работа с датами в Microsoft Excel — одна из самых востребованных задач при анализе данных. Будь то контроль сроков выполнения проектов, фильтрация транзакций по периодам или автоматическое выделение просроченных заданий — условия на даты экономят часы рутинной работы. Однако многие пользователи сталкиваются с трудностями: то формула возвращает ошибку #ЗНАЧ!, то условное форматирование не срабатывает на диапазоне с пустыми ячейками.

В этой статье мы разберём 5 практических способов постановки условий на даты — от базовых инструментов вроде автофильтра до продвинутых формул с ЕСЛИ, И и ДАТАМЕС. Вы узнаете, как избежать типичных ошибок при сравнении дат, почему Excel хранит даты как числа начиная с 1 января 1900 года, и как это знание поможет вам создавать гибкие условия. Все примеры адаптированы для версий Excel 2016–2023 и Microsoft 365.

1. Базовые условия: автофильтр и сортировка по датам

Начнём с самого простого — встроенных инструментов Excel, которые не требуют знания формул. Автофильтр и сортировка позволяют быстро отобрать данные по датам без написания кода.

Чтобы применить фильтр:

  1. Выделите диапазон с данными (включая заголовки столбцов).
  2. Перейдите на вкладку ДанныеФильтр (или нажмите Ctrl+Shift+L).
  3. Нажмите на стрелку фильтра в столбце с датами и выберите один из вариантов:
    • 📅 Фильтры по дате — готовые условия («Завтра», «На этой неделе», «В прошлом месяце»).
    • 🔍 Пользовательский фильтр — для создания собственных условий (например, «больше 01.01.2026»).
    • 📊 Сортировка от старых к новым (или наоборот).

Пример пользовательского фильтра для выбора дат за текущий квартал:


=И(A1>=ДАТА(ГОД(СЕГОДНЯ()); МЕСЯЦ(СЕГОДНЯ())-ПОЛУЧИТЬ.МЕСЯЦ.КВАРТАЛА(МЕСЯЦ(СЕГОДНЯ()))+1; 1); A1<=ДАТА(ГОД(СЕГОДНЯ()); МЕСЯЦ(СЕГОДНЯ())-ПОЛУЧИТЬ.МЕСЯЦ.КВАРТАЛА(МЕСЯЦ(СЕГОДНЯ()))+3; 1))

⚠️ Внимание: Автофильтр не изменяет данные — он только скрывает строки, не соответствующие условию. Если вам нужно удалить или скопировать отфильтрованные данные, сначала выделите видимые ячейки (Alt+;).
📊 Как часто вы работаете с датами в Excel?
Ежедневно
Несколько раз в неделю
Редко
Никогда

2. Условное форматирование: выделение дат по условию

Условное форматирование позволяет визуально выделять ячейки с датами, соответствующими заданным критериям. Например, вы можете автоматически окрашивать просроченные задачи в красный цвет или подсвечивать выходные дни.

Алгоритм настройки:

  1. Выделите диапазон с датами.
  2. Перейдите на вкладку ГлавнаяУсловное форматированиеСоздать правило.
  3. Выберите тип правила:
    • 🎨 Форматировать только ячейки, которые содержат — для простых условий (например, «даты после 31.12.2023»).
    • 📝 Использовать формулу для определения форматируемых ячеек — для сложных условий.

Примеры формул для условного форматирования:

ЗадачаФормулаФормат
Выделить просроченные даты (раньше сегодня)=A1<СЕГОДНЯ()Красный текст
Подсветить выходные (суббота, воскресенье)=ИЛИ(ДЕНЬНЕД(A1;2)>5; A1="")Серый фон
Выделить даты текущего месяца=И(МЕСЯЦ(A1)=МЕСЯЦ(СЕГОДНЯ()); ГОД(A1)=ГОД(СЕГОДНЯ()))Зелёная заливка
⚠️ Внимание: Условное форматирование не обновляется автоматически при изменении данных. Если вы добавили новые даты, нажмите F9 для пересчёта или вручную обновите правила через Управление правилами.

Проверить формат ячеек (должен быть "Дата")

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

Создать резервную копию данных перед массовым форматированием

Протестировать правило на небольшом диапазоне-->

3. Формулы с условиями: ЕСЛИ, И, ИЛИ

Когда нужна не только визуализация, но и автоматический расчёт на основе дат, на помощь приходят логические формулы. Рассмотрим три ключевые функции:

  • 🔄 =ЕСЛИ(условие; значение_если_истина; значение_если_ложь) — базовая конструкция для проверки условий.
  • 🔗 =И(условие1; условие2; ...) — требует выполнения всех условий.
  • 🔀 =ИЛИ(условие1; условие2; ...) — достаточно выполнения хотя бы одного условия.

Примеры применения:

1. Проверка просрочки:

=ЕСЛИ(B2<СЕГОДНЯ(); "Просрочено"; "В срок")

Эта формула вернёт «Просрочено», если дата в ячейке B2 раньше текущей.

2. Сложное условие с И:

=ЕСЛИ(И(B2>=ДАТА(2026;1;1); B2<=ДАТА(2026;12;31)); "2026 год"; "Другой период")

Проверяет, попадает ли дата в B2 в интервал с 01.01.2026 по 31.12.2026.

3. Учёт выходных и праздников:

=ЕСЛИ(ИЛИ(ДЕНЬНЕД(B2;2)>5; B2=ДАТА(2026;1;1)); "Выходной"; "Рабочий день")

Здесь ДЕНЬНЕД(B2;2)>5 проверяет субботу (6) и воскресенье (7), а B2=ДАТА(2026;1;1) добавляет Новый год как дополнительный выходной.

Почему формулы с датами иногда возвращают #ЗНАЧ!

Ошибка #ЗНАЧ! чаще всего возникает, когда Excel воспринимает дату как текст. Проверьте формат ячейки (должен быть "Дата" или "Общий"), а также убедитесь, что в формуле нет опечаток в названиях функций (например, "СЕГОДНЯ" вместо "СЕГОДНЯ()").

4. Работа с динамическими датами: СЕГОДНЯ, ТДАТА, ДАТАМЕС

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

  • 📅 =СЕГОДНЯ() — возвращает текущую дату (обновляется при пересчёте листа).
  • =ТДАТА() — возвращает текущие дату и время.
  • 🔄 =ДАТАМЕС(дата; количество_месяцев) — добавляет или вычитает месяцы.

Примеры использования:

1. Автоматический расчёт дней до дедлайна:

=B2-СЕГОДНЯ()

Если дата в B2 — 15.05.2026, а сегодня 10.05.2026, формула вернёт 5 (дней осталось).

2. Проверка квартала:

=ПОЛУЧИТЬ.МЕСЯЦ.КВАРТАЛА(МЕСЯЦ(B2))

Вернёт номер квартала (1–4) для даты в B2.

3. Дата через 3 месяца:

=ДАТАМЕС(B2; 3)

Добавляет 3 месяца к дате в B2. Полезно для расчёта сроков действия договоров.

⚠️ Внимание: Функции СЕГОДНЯ() и ТДАТА() не обновляются вручную — они пересчитываются только при открытии файла или нажатии F9. Если вам нужно фиксировать дату на момент выполнения действия (например, при сохранении файла), используйте Ctrl+; для вставки статической даты.

5. Продвинутые условия: массивы и Power Query

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

  • 📊 Формулы массива (в новых версиях Excelдинамические массивы).
  • 🔄 Power Query — инструмент для импорта и трансформации данных.

Пример 1. Подсчёт дат в диапазоне:

=СЧЁТЕСЛИМН(B2:B100; ">="&ДАТА(2026;1;1); B2:B100; "<="&ДАТА(2026;3;31))

Эта формула посчитает количество дат в столбце B, попадающих в 1-й квартал 2026 года.

Пример 2. Извлечение уникальных месяцев:

=УНИК(ТЕКСТ(B2:B100; "мммм"))

Вернёт список уникальных месяцев (например, «январь», «февраль») из диапазона B2:B100.

В Power Query (доступен в Excel 2016+ через Данные → Получить данные) вы можете:

  • 🔍 Фильтровать строки по датам (например, оставить только транзакции за последний год).
  • 📅 Извлекать компоненты даты (год, месяц, день недели) в отдельные столбцы.
  • 🔄 Группировать данные по периодам (неделям, месяцам).

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

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

ОшибкаПричинаРешение
Формула возвращает #ЗНАЧ!Ячейка содержит текст вместо датыПроверьте формат ячейки (Ctrl+1) и преобразуйте текст в дату через ДАТАЗНАЧ()
Условное форматирование не работаетВ формуле не зафиксированы ссылкиИспользуйте абсолютные ссылки (например, $A1 вместо A1)
Даты отображаются как числа (например, 45341)Неверный формат ячейкиВыберите формат "Дата" или "Краткая дата"
Функция ДАТАМЕС возвращает неверный месяцАргумент "количество_месяцев" задан некорректноПроверьте знак (положительный — вперед, отрицательный — назад)

Чтобы избежать большинства ошибок, следуйте простому правилу: всегда проверяйте формат данных. Даже если ячейка визуально выглядит как дата, Excel может воспринимать её как текст. Используйте функцию =ТИП(B2) — если результат 1, это текст, если 5 — ошибка, а если 16 — ошибка в формуле массива.

Как преобразовать текст в дату

Если ваши даты импортированы как текст (например, "01.05.2026"), используйте функцию =ДАТАЗНАЧ(A1) или инструмент "Текст по столбцам" (Данные → Текст по столбцам) с форматом "ДМГ".

7. Автоматизация: макросы для работы с датами

Если вам регулярно приходится выполнять одни и те же действия с датами, имеет смысл автоматизировать процесс с помощью макросов. Например, можно создать макрос для:

  • 📅 Автоматического добавления текущей даты в новый лист.
  • 🔄 Массового преобразования текста в даты.
  • 📊 Генерации отчётов по периодам (неделя, месяц, квартал).

Пример макроса для выделения просроченных дат:

Sub ВыделитьПросроченные()

Dim rng As Range

Dim cell As Range

Set rng = Selection ' Выделенный диапазон

For Each cell In rng

If IsDate(cell.Value) Then

If cell.Value < Date Then

cell.Interior.Color = RGB(255, 100, 100) ' Красный цвет

End If

End If

Next cell

End Sub

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

  1. Нажмите Alt+F11 для открытия редактора VBA.
  2. Вставьте код в новый модуль (Insert → Module).
  3. Вернитесь в Excel, выделите диапазон с датами и запустите макрос через Вид → Макросы.
⚠️ Внимание: Макросы работают только в файлах с расширением .xlsm (с поддержкой макросов). При открытии такого файла Excel может показать предупреждение о безопасности — разрешите выполнение макросов, только если доверяете источнику.

FAQ: Ответы на частые вопросы

Как в Excel сравнить две даты?

Используйте стандартные операторы сравнения: =, <>, <, <=, >, >=. Например, формула =A1>B1 вернёт ИСТИНА, если дата в A1 позже, чем в B1.

Для сложных условий комбинируйте операторы с функциями И/ИЛИ:

=И(A1>=ДАТА(2026;1;1); A1<=ДАТА(2026;12;31))
Почему Excel неправильно сортирует даты?

Чаще всего это происходит из-за:

  • 🔢 Неверного формата ячеек (текст вместо даты).
  • 📌 Наличия пустых ячеек или скрытых символов.
  • 📅 Использования разных форматов дат (например, "01.05" и "01-май").

Решение: выделите столбец → Главная → Формат → Формат ячеек → выберите "Дата".

Как посчитать разницу между датами в годах?

Используйте функцию =РАЗНДАТ (доступна только в русскоязычной версии) или комбинацию:

=ДОЛЯГОДА(B1;A1;1)

Где 1 — метод расчёта (1 = фактическое количество дней в году). Для целых лет:

=ЦЕЛОЕ(РАЗНДАТ(A1;B1;"y"))
Можно ли в Excel создать условие для рабочих дней (исключая выходные)?

Да! Используйте функцию =РАБДЕНЬ:

=РАБДЕНЬ(начальная_дата; количество_дней; [праздники])

Пример: =РАБДЕНЬ(A1; 10) вернёт дату через 10 рабочих дней после A1.

Для проверки, является ли дата рабочим днём:

=ЕСЛИ(ДЕНЬНЕД(A1;2)<6; "Рабочий"; "Выходной")
Как зафиксировать текущую дату, чтобы она не обновлялась?

Нажмите Ctrl+; (точка с запятой) — это вставит статическую текущую дату. Для времени используйте Ctrl+Shift+;.

Альтернатива: скопируйте результат формулы =СЕГОДНЯ() и вставьте как значение (Правка → Специальная вставка → Значения).