Работа с датами в Microsoft Excel — одна из самых востребованных задач при анализе данных. Будь то контроль сроков выполнения проектов, фильтрация транзакций по периодам или автоматическое выделение просроченных заданий — условия на даты экономят часы рутинной работы. Однако многие пользователи сталкиваются с трудностями: то формула возвращает ошибку #ЗНАЧ!, то условное форматирование не срабатывает на диапазоне с пустыми ячейками.
В этой статье мы разберём 5 практических способов постановки условий на даты — от базовых инструментов вроде автофильтра до продвинутых формул с ЕСЛИ, И и ДАТАМЕС. Вы узнаете, как избежать типичных ошибок при сравнении дат, почему Excel хранит даты как числа начиная с 1 января 1900 года, и как это знание поможет вам создавать гибкие условия. Все примеры адаптированы для версий Excel 2016–2023 и Microsoft 365.
1. Базовые условия: автофильтр и сортировка по датам
Начнём с самого простого — встроенных инструментов Excel, которые не требуют знания формул. Автофильтр и сортировка позволяют быстро отобрать данные по датам без написания кода.
Чтобы применить фильтр:
- Выделите диапазон с данными (включая заголовки столбцов).
- Перейдите на вкладку
Данные→Фильтр(или нажмитеCtrl+Shift+L). - Нажмите на стрелку фильтра в столбце с датами и выберите один из вариантов:
- 📅 Фильтры по дате — готовые условия («Завтра», «На этой неделе», «В прошлом месяце»).
- 🔍 Пользовательский фильтр — для создания собственных условий (например, «больше 01.01.2026»).
- 📊 Сортировка от старых к новым (или наоборот).
Пример пользовательского фильтра для выбора дат за текущий квартал:
=И(A1>=ДАТА(ГОД(СЕГОДНЯ()); МЕСЯЦ(СЕГОДНЯ())-ПОЛУЧИТЬ.МЕСЯЦ.КВАРТАЛА(МЕСЯЦ(СЕГОДНЯ()))+1; 1); A1<=ДАТА(ГОД(СЕГОДНЯ()); МЕСЯЦ(СЕГОДНЯ())-ПОЛУЧИТЬ.МЕСЯЦ.КВАРТАЛА(МЕСЯЦ(СЕГОДНЯ()))+3; 1))
⚠️ Внимание: Автофильтр не изменяет данные — он только скрывает строки, не соответствующие условию. Если вам нужно удалить или скопировать отфильтрованные данные, сначала выделите видимые ячейки (Alt+;).
2. Условное форматирование: выделение дат по условию
Условное форматирование позволяет визуально выделять ячейки с датами, соответствующими заданным критериям. Например, вы можете автоматически окрашивать просроченные задачи в красный цвет или подсвечивать выходные дни.
Алгоритм настройки:
- Выделите диапазон с датами.
- Перейдите на вкладку
Главная→Условное форматирование→Создать правило. - Выберите тип правила:
- 🎨 Форматировать только ячейки, которые содержат — для простых условий (например, «даты после 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
Чтобы запустить этот макрос:
- Нажмите
Alt+F11для открытия редактора VBA. - Вставьте код в новый модуль (
Insert → Module). - Вернитесь в 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+;.
Альтернатива: скопируйте результат формулы =СЕГОДНЯ() и вставьте как значение (Правка → Специальная вставка → Значения).