Сравнение дат в Microsoft Excel — одна из самых востребованных операций при работе с отчётами, графиками выполнения задач или анализом временных интервалов. Казалось бы, что может быть проще: взять две ячейки с датами и определить, какая из них раньше или позже. Но на практике пользователи сталкиваются с ошибками формата, некорректными результатами вычитания или проблемами при использовании функций ЕСЛИ. Почему так происходит?
Дело в том, что Excel хранит даты не как текст, а как числовые значения — количество дней, прошедших с 1 января 1900 года (в Windows) или 1904 года (в Mac). Например, дата «15 мая 2026» для программы — это число 45415. Эта особенность открывает широкие возможности для вычислений, но требует понимания базовых принципов. Без них даже простая разница между двумя датами может превратиться в головоломку с неожиданными результатами вроде «######» или отрицательных чисел.
В этой статье мы разберём 5 практических методов сравнения дат — от элементарных формул до продвинутых инструментов вроде Power Query, а также покажем, как избежать типичных ошибок. Вы узнаете, как не только определить, какая дата раньше, но и автоматически выделить просроченные задачи, рассчитать количество рабочих дней между событиями или найти дубликаты в большом массиве данных.
——— • ——— • ———
1. Базовое сравнение дат: операторы «>», «<» и «=»
Самый простой способ сравнить две даты — использовать стандартные операторы сравнения прямо в формуле. Excel воспринимает даты как числа, поэтому с ними работают все математические правила.
Допустим, у вас в ячейке A2 дата начала проекта («10.05.2026»), а в B2 — дата завершения («20.05.2026»). Чтобы узнать, закончился ли проект, введите в C2:
=B2<=СЕГОДНЯ()
Эта формула вернёт ИСТИНА, если текущая дата позже или равна дате в B2. Аналогично работают другие операторы:
- 📅
=A2>B2— проверяет, начался ли проект позже, чем закончился (ошибка логики). - ⏳
=A2=B2— сравнивает, совпадают ли даты (например, для проверки дубликатов). - 📊
=B2-A2— вычисляет разницу в днях между датами.
Если вам нужно учитывать часы и минуты, используйте формат дд.мм.гггг чч:мм или функцию ВРЕМЯЗНАЧ.
2. Функция ЕСЛИ: условное сравнение с текстовым результатом
Операторы сравнения возвращают только ИСТИНА/ЛОЖЬ, что не всегда удобно. Чтобы получить осмысленный текст (например, «Просрочено» или «В срок»), используйте функцию ЕСЛИ.
Пример: в ячейке A2 дедлайн задачи («15.05.2026»), а в B2 нужно вывести статус:
=ЕСЛИ(A2<СЕГОДНЯ(); "Просрочено"; "В срок")
Расширенный вариант с учётом будущих дат:
=ЕСЛИ(A2<СЕГОДНЯ(); "Просрочено"; ЕСЛИ(A2=СЕГОДНЯ(); "Сегодня"; "Впереди"))
Обратите внимание на точку с запятой в формулах — это разделитель аргументов в русской версии Excel. В английской версии используется запятая.
- 🔍
СЕГОДНЯ()— всегда возвращает текущую дату (обновляется при пересчёте листа). - 📅
ДАТАЗНАЧ()— преобразует текст в формате даты в числовой формат (полезно для импортированных данных). - ⚠️
ЕНД()— проверяет ячейку на ошибки перед сравнением.
3. Условное форматирование: визуальное выделение дат
Если вам нужно быстро найти просроченные задачи или важные события в большом списке, условное форматирование справится лучше любой формулы. Оно автоматически подсветит ячейки по заданным критериям.
Как настроить:
- Выделите диапазон с датами (например,
A2:A100). - Перейдите на вкладку
Главная → Условное форматирование → Правила выделения ячеек → Меньше... - В поле введите
=СЕГОДНЯ()и выберите цвет заливки (например, красный). - Нажмите
ОК— все даты раньше текущей будут подсвечены.
Для более сложных условий (например, выделение дат в интервале «завтра ±3 дня») используйте формулу в правиле:
=И(A2>=СЕГОДНЯ(); A2<=СЕГОДНЯ()+3)
| Цель | Формула для условного форматирования | Пример визуализации |
|---|---|---|
| Просроченные задачи | =A2<СЕГОДНЯ() |
Красный фон |
| Дата сегодня | =A2=СЕГОДНЯ() |
Жёлтый фон |
| События на этой неделе | =И(A2>=СЕГОДНЯ(); A2<=СЕГОДНЯ()+7) |
Зелёный текст |
| Выходные дни | =ИЛИ(ДЕНЬНЕД(A2)=7; ДЕНЬНЕД(A2)=1) |
Синий шрифт |
Почему условное форматирование не работает?
Убедитесь, что ячейки имеют формат Дата, а не Текст. Если даты хранятся как текст (например, после импорта из CSV), используйте функцию ДАТАЗНАЧ для преобразования.
4. Расчёт разницы между датами: функции РАЗНДАТ и ДНИ
Часто недостаточно просто сравнить даты — нужно узнать, сколько дней, месяцев или лет прошло между ними. Для этого в Excel есть специализированные функции.
Функция ДНИ (или DAYS в английской версии) возвращает разницу в днях:
=ДНИ(дата_окончания; дата_начала)
Пример: =ДНИ(B2; A2) вернёт количество дней между A2 и B2.
Для более сложных вычислений (месяцы, годы) используйте РАЗНДАТ:
=РАЗНДАТ(A2; B2; "d")
=РАЗНДАТ(A2; B2; "m")
=РАЗНДАТ(A2; B2; "y")
Обратите внимание: РАЗНДАТ — это функция совместимости, и её синтаксис отличается от стандартных формул. Аргументы разделяются точкой с запятой, а единицы измерения указываются в кавычках.
⚠️ Внимание: ФункцияРАЗНДАТне документирована в официальной справке Excel, но работает во всех версиях. В Excel 365 для тех же целей рекомендуют использоватьДНИ,ДНИ360или комбинациюГОД/МЕСЯЦ/ДЕНЬ.
Ячейки имеют формат Дата|Формула возвращает положительное число|Учтена временная зона (если важно)|Проверены крайние случаи (например, 29 февраля)
-->
5. Продвинутые методы: Power Query и сводные таблицы
Если вам нужно сравнить даты в больших массивах данных (тысячи строк) или автоматизировать процесс, стандартные формулы могут оказаться медленными. В таких случаях помогут:
- 🔄 Power Query — инструмент для очистки и преобразования данных. Позволяет добавлять столбцы с разницей между датами, фильтровать записи по временным интервалам и даже объединять таблицы по датам.
- 📊 Сводные таблицы — помогают группировать данные по годам, кварталам или месяцам и анализировать тренды.
- 🤖 VBA-макросы — для создания пользовательских функций (например, сравнения дат с учётом праздников).
Пример использования Power Query:
- Выделите исходные данные и нажмите
Данные → Из таблицы/диапазона. - В открывшемся редакторе выберите столбец с датой, затем
Добавить столбец → Пользовательский столбец. - Введите формулу для расчёта разницы (например,
= Date.From([Дата2]) - Date.From([Дата1])). - Нажмите
Закрыть и загрузить— результат появится на новом листе.
Преимущество этого метода — автоматическое обновление при изменении исходных данных. Достаточно кликнуть «Обновить» на вкладке Данные.
6. Типичные ошибки и как их избежать
Даже опытные пользователи Excel сталкиваются с проблемами при сравнении дат. Вот самые распространённые ловушки:
- 🗓️ Текст вместо даты: Если дата импортирована из CSV или введена вручную как текст (например, «01.05.2026»), Excel не сможет её сравнить. Используйте
ДАТАЗНАЧили преобразуйте столбец черезТекст по столбцам. - ⏰ Игнорирование времени: Формат
дд.мм.ггггобрезает часы и минуты. Если важно время, используйтедд.мм.гггг чч:ммили функциюВРЕМЯ. - 🌍 Региональные настройки: В американском Excel дата «05.06.2026» интерпретируется как 5 июня, а в российском — как 6 мая. Проверяйте формат в
Файл → Параметры → Язык. - 🔢 Отрицательные результаты: Если формула
=B2-A2возвращает «######», значит, разница отрицательная. ИспользуйтеАБСили проверяйте порядок ячеек.
⚠️ Внимание: ФункцияСЕГОДНЯ()обновляется при каждом открытии файла или пересчёте листа. Если вам нужна фиксированная дата (например, дата создания отчёта), используйтеСЕЙЧАС()и преобразуйте результат в значение черезСпециальная вставка → Значения.
Для диагностики ошибок используйте ТИП (проверяет тип данных) и ЕНД (выявляет ошибки в ячейках):
=ЕСЛИ(ТИП(A2)=1; "Дата"; "Не дата")
=ЕСЛИ(ЕНД(A2); "Ошибка"; "ОК")
7. Практический пример: отслеживание дедлайнов в проекте
Рассмотрим реальную задачу: у вас есть таблица с задачами, их дедлайнами и статусами. Нужно автоматически определять просроченные задачи и рассчитывать оставшееся время.
| Задача | Дедлайн (D2) | Дней до дедлайна (E2) | Статус (F2) |
|---|---|---|---|
| Отчёт по продажам | 15.05.2026 | =МАКС(D2-СЕГОДНЯ(); 0) |
=ЕСЛИ(D2<СЕГОДНЯ(); "Просрочено"; ЕСЛИ(D2=СЕГОДНЯ(); "Сегодня"; "Осталось " & E2 & " дн.")) |
| Обновление сайта | 20.05.2026 | =МАКС(D3-СЕГОДНЯ(); 0) |
=ЕСЛИ(D3<СЕГОДНЯ(); "Просрочено"; ЕСЛИ(D3=СЕГОДНЯ(); "Сегодня"; "Осталось " & E3 & " дн.")) |
Формула в столбце E использует МАКС, чтобы избежать отрицательных значений. В столбце F — вложенные ЕСЛИ для гибкого отображения статуса.
Для удобства добавьте условное форматирование к столбцу F:
- Красный текст для «Просрочено».
- Жёлтый фон для «Сегодня».
- Зелёный текст для «Осталось..».
Часто задаваемые вопросы
Как сравнить дату с временем (например, 15.05.2026 14:30)?
Используйте формат дд.мм.гггг чч:мм и функцию ВРЕМЯЗНАЧ для извлечения времени. Пример:
=ЕСЛИ(A2+B2>СЕГОДНЯ()+ВРЕМЯЗНАЧ("18:00"); "После 18:00"; "До 18:00")
Где A2 — дата, B2 — время в формате чч:мм.
Почему формула =B2-A2 возвращает ###### вместо числа?
Это означает, что:
- Результат отрицательный (например, дата в
B2раньше, чем вA2). Решение: используйтеАБС(B2-A2). - Ширина столбца недостаточна. Растяните его или измените формат ячейки на
Общий. - Одна из ячеек содержит текст. Проверьте формат через
Формат ячеек → Число.
Как сравнить даты без учёта года (например, только месяц и день)?
Используйте функции МЕСЯЦ и ДЕНЬ:
=И(МЕСЯЦ(A2)=МЕСЯЦ(B2); ДЕНЬ(A2)=ДЕНЬ(B2))
Для сравнения только месяцев:
=МЕСЯЦ(A2)=МЕСЯЦ(B2)
Можно ли сравнить даты в Excel Online и Google Таблицах?
Да, синтаксис формул практически идентичен. Отличия:
- В Google Таблицах разделитель аргументов — запятая (
=IF(A2). - Функция
РАЗНДАТработает в обеих платформах, но в Excel Online может требовать ручного ввода. - Условное форматирование в Google Таблицах настраивается через
Формат → Условное форматирование.
Как сравнить дату с сегодняшним днём, исключая выходные?
Используйте комбинацию ДЕНЬНЕД (возвращает день недели, где 1 — воскресенье, 7 — суббота) и РАБДЕНЬ:
=ЕСЛИ(И(A2<СЕГОДНЯ(); ДЕНЬНЕД(A2)<>7; ДЕНЬНЕД(A2)<>1); "Просрочено в рабочий день"; "ОК")
Для расчёта рабочих дней между датами:
=РАБДЕНЬ(A2; B2)