Сравнение дат в Microsoft Excel — одна из самых востребованных операций при работе с отчётами, графиками и аналитикой. Выяснить, прошёл ли срок действия договора, отследить просроченные платежи или отсортировать события по хронологии — всё это требует умения корректно сравнивать даты на условия «больше» или «меньше». Но многие пользователи сталкиваются с ошибками: Excel воспринимает даты как текст, игнорирует формат ячеек или выдаёт неверные результаты при использовании функций.
В этой статье вы найдёте 5 проверенных способов сравнения дат — от простых формул до автоматизированных инструментов. Мы разберём, почему нельзя сравнивать даты как текст, как избежать ошибок с форматами и какие функции (ЕСЛИ, И, РАЗНДАТ) ускорят вашу работу. А для наглядности приведём реальные примеры из бухгалтерии, логистики и HR-аналитики.
Если вы никогда не работали с датами в Excel, начните с первого раздела — там объяснено, как программа хранит даты и почему 15.05.2026 для неё не то же самое, что текст "15.05.2026". Опытные пользователи могут сразу перейти к формулам или условному форматированию.
Как Excel хранит даты: почему «15.05» ≠ «15 мая»
Прежде чем сравнивать даты, нужно понять, как Excel их обрабатывает. В отличие от текста или чисел, даты в программе представляют собой серийные номера — количество дней, прошедших с 1 января 1900 года (в Windows) или 1904 года (на Mac). Например:
- 📅
01.01.1900=1 - 📅
15.05.2026=45415(для Windows) - 📅
31.12.2026=45684
Это означает, что когда вы вводите 15.05.2026 в ячейку, Excel автоматически преобразует её в число 45415 и отображает в привычном формате. Сравнивать даты как текст нельзя — например, "15.05" (текст) всегда будет «меньше» "02.06" (тоже текст), потому что сравнение идёт посимвольно, а не по календарной логике.
Чтобы проверить, как Excel воспринимает вашу дату, выделите ячейку и посмотрите на строку формул. Если там отображается число (например, 45415), значит, формат корректный. Если виден текст ("15.05.2026") — ячейка хранит строку, и сравнения не сработают.
⚠️ Внимание: Если вы импортировали даты из CSV или другой программы, они могли сохраниться как текст. Чтобы исправить это, выделите столбец и выберите Данные → Текст по столбцам → Готово (Excel автоматически распознает даты).
Формулы для сравнения дат: ЕСЛИ, И, ИЛИ
Самый универсальный способ сравнить даты — использовать логические функции. Они позволяют проверять условия типа «если дата А больше даты Б, то...». Рассмотрим основные варианты.
1. Простое сравнение с ЕСЛИ
Формула проверяет, выполнено ли условие, и возвращает одно из двух значений:
=ЕСЛИ(A2>B2; "Просрочено"; "В срок")
Где:
- 📌
A2— ячейка с текущей датой (например, сегодня). - 📌
B2— ячейка с датой дедлайна. - 📌
"Просрочено"— текст, который отобразится, еслиA2 > B2.
2. Сложные условия с И и ИЛИ
Если нужно проверить несколько условий одновременно, комбинируйте функции:
=ЕСЛИ(И(A2>B2; C2="Да"); "Штраф"; "Без штрафа")
Здесь проверяется, что дата в A2 позже даты в B2 и в ячейке C2 стоит «Да».
3. Сравнение с сегодняшней датой
Чтобы сравнить дату с текущим днём, используйте функцию СЕГОДНЯ():
=ЕСЛИ(A2<СЕГОДНЯ(); "Прошло"; "Актуально")
| Формула | Пример | Результат |
|---|---|---|
=A2>B2 | 15.05.2026 > 10.05.2026 | ИСТИНА |
=ЕСЛИ(A2<=B2; "OK"; "") | 12.05.2026 <= 15.05.2026 | "OK" |
=И(A2>B2; A2 | 15.05.2026 > 10.05.2026 И 15.05.2026 < 20.05.2026 | ИСТИНА |
⚠️ Внимание: ФункцияСЕГОДНЯ()обновляется при каждом открытии файла. Если вам нужна фиксированная дата (например, для архива), используйтеCTRL+;(горячие клавиши для вставки текущей даты как значения).
Ячейки с датами имеют формат "Дата" (не текст)
В формулах используются правильные операторы (> < >= <=)
Для текущей даты применена функция СЕГОДНЯ(), а не фиксированное значение
Проверены граничные случаи (например, даты равны)
-->
Функция РАЗНДАТ: сравнение с учётом дней, месяцев, лет
Иногда недостаточно просто узнать, какая дата больше — нужно посчитать разницу в днях, месяцах или годах. Для этого предназначена функция РАЗНДАТ (в английской версии — DATEDIF), которая скрыта в интерфейсе Excel, но работает корректно.
Синтаксис:
=РАЗНДАТ(начальная_дата; конечная_дата; единица_измерения)
Где единица_измерения может быть:
- 📅
"D"— разница в днях. - 📅
"M"— разница в полных месяцах. - 📅
"Y"— разница в полных годах.
Примеры:
=РАЗНДАТ(B2; СЕГОДНЯ(); "D") // Сколько дней прошло с даты в B2
=РАЗНДАТ(A2; B2; "M") // Разница в месяцах между A2 и B2
Чтобы сравнить даты с учётом разницы, комбинируйте РАЗНДАТ с ЕСЛИ:
=ЕСЛИ(РАЗНДАТ(A2; СЕГОДНЯ(); "D") > 30; "Просрочено более месяца"; "")
Почему РАЗНДАТ не видна в списке функций?
Функция РАЗНДАТ — наследие ранних версий Excel и не отображается в мастер-функциях. Однако она полностью работоспособна. Введите её вручную или используйте английский вариант DATEDIF (работает и в русской версии).
Условное форматирование: визуальное сравнение дат
Если нужно быстро выделить просроченные или актуальные даты без формул, используйте условное форматирование. Этот инструмент автоматически раскрасит ячейки в зависимости от условия.
Как настроить:
- Выделите диапазон с датами (например,
A2:A100). - Перейдите на вкладку
Главная → Условное форматирование → Создать правило. - Выберите
Форматировать только ячейки, которые содержат. - В поле «Форматировать только ячейки с» укажите:
- 📅
Значение ячейки > СЕГОДНЯ()— для будущих дат. - 📅
Значение ячейки < СЕГОДНЯ()— для просроченных.
- 📅
Преимущество этого метода — наглядность: вы сразу увидите все критичные даты без дополнительных столбцов с формулами. Минус — форматирование не обновляется в реальном времени (нужно пересчитывать лист или открывать файл заново).
Фильтрация и сортировка по датам
Сравнение дат часто нужно для фильтрации — например, чтобы отобразить только просроченные заказы или события за последний месяц. В Excel это делается через:
- 🔍 Автофильтр (для простых условий).
- 🔍 Расширенный фильтр (для сложных критериев).
- 🔍 Сортировку (по возрастанию/убыванию).
Пример фильтрации:
- Выделите заголовок таблицы и нажмите
Данные → Фильтр. - Нажмите на стрелку в столбце с датами и выберите
Фильтры по дате. - Укажите условие, например:
- 📅
Раньше...— для дат до определённого дня. - 📅
Между...— для диапазона дат.
- 📅
Для расширенного фильтра создайте отдельный диапазон критериев. Например, чтобы отобразить строки, где дата в столбце B позднее 01.01.2026:
| A | B |
|-------|---------------|
1 | Дата | >01.01.2026 | ← диапазон критериев
Затем выберите Данные → Расширенный фильтр и укажите этот диапазон.
⚠️ Внимание: При фильтрации дат убедитесь, что в критериях используется тот же формат, что и в исходных данных. Например, если в таблице даты в форматеДД.ММ.ГГГГ, а в критериях вы указалиММ/ДД/ГГГГ, фильтр не сработает.
Типичные ошибки и как их избежать
Даже опытные пользователи допускают ошибки при сравнении дат. Вот самые распространённые ловушки и способы их обхода:
1. Даты как текст
Если дата введена как текст (например, через апостроф: '15.05.2026), формулы не сработают. Решение: преобразовать текст в дату с помощью ДАТАЗНАЧ:
=ДАТАЗНАЧ("15.05.2026")
2. Разные форматы дат
Excel может воспринимать 15.05.2026 и 15/05/2026 как разные значения. Решение: унифицируйте формат через Формат ячеек → Дата.
3. Ошибка #ЗНАЧ! при сравнении
Возникает, если в ячейке пусто или некорректный тип данных. Решение: используйте ЕЧИСТ или ЕОШИБКА для проверки:
=ЕСЛИ(И(НЕ(ЕЧИСТ(A2)); НЕ(ЕОШИБКА(A2))); ЕСЛИ(A2>B2; "Да"; "Нет"); "")
4. Проблемы с СЕГОДНЯ()
Функция обновляется при открытии файла, что может искажать результаты в архивных данных. Решение: замените её на фиксированную дату (введите вручную или используйте CTRL+;).
| Ошибка | Причина | Решение |
|---|---|---|
#ЗНАЧ! | Ячейка содержит текст вместо даты | Использовать ДАТАЗНАЧ или изменить формат |
| Некорректная сортировка | Даты введены как текст | Преобразовать в формат "Дата" |
Формула возвращает ЛОЖЬ при явном соблюдении условия | Разные форматы дат (например, ДД.ММ vs ММ/ДД) | Унифицировать формат через Формат ячеек |
Практические примеры: бухгалтерия, логистика, HR
Разберём, как сравнение дат применяется в реальных задачах.
1. Бухгалтерия: контроль оплаты счетов
Допустим, у вас таблица с датами оплаты (столбец B) и сроками (столбец C). Формула для выделения просроченных:
=ЕСЛИ(И(B2=""; C2<СЕГОДНЯ()); "Просрочено"; "")
2. Логистика: сроки доставки
Сравните планируемую дату доставки (A2) с фактической (B2):
=ЕСЛИ(A2
3. HR: стаж сотрудников
Чтобы посчитать стаж в годах и месяцах:
=РАЗНДАТ(C2; СЕГОДНЯ(); "Y") & " лет, " & РАЗНДАТ(C2; СЕГОДНЯ(); "YM") & " мес."
Где C2 — дата приёма на работу.
4. Маркетинг: акции и скидки
Проверка, действует ли скидка (даты начала в A2, окончания в B2):
=ЕСЛИ(И(СЕГОДНЯ()>=A2; СЕГОДНЯ()<=B2); "Акция действует"; "")
Частые вопросы по сравнению дат в Excel
Можно ли сравнить дату с временем (например, 15.05.2026 14:30)?
Да, Excel хранит дату и время как одно число (дробная часть — время). Чтобы сравнить только дату без времени, используйте ЦЕЛОЕ():
=ЕСЛИ(ЦЕЛОЕ(A2) > ЦЕЛОЕ(B2); "Да"; "Нет")
Или функцию ДЕНЬ()/МЕСЯЦ()/ГОД() для выделения компонентов.
Почему формула =A2>B2 возвращает ЛОЖЬ, хотя дата в A2 явно позже?
Скорее всего, одна из ячеек содержит текст или даты в разных форматах. Проверьте:
- Формат ячеек (
CTRL+1 → Дата). - Отображение в строке формул (должно быть число, например
45415, а не текст).
Если проблема остаётся, используйте =ДАТАЗНАЧ(A2) > ДАТАЗНАЧ(B2).
Как сравнить даты в двух таблицах?
Используйте ВПР, ИНДЕКС+ПОИСКПОЗ или XLOOKUP (в новых версиях Excel). Пример:
=ВПР(A2; Лист2!A:B; 2; ЛОЖЬ) > B2
Где Лист2!A:B — диапазон с датами для сравнения.
Можно ли сравнить даты в Power Query?
Да, в Power Query добавьте пользовательский столбец с условием. Например:
= if [Дата1] > [Дата2] then "Да" else "Нет"
После загрузки данных в Excel формула преобразуется в обычный столбец.
Как сравнить даты в Google Таблицах?
Принцип тот же, но есть нюансы:
- 📌 Функция
РАЗНДАТназываетсяDATEDIF(вводится вручную). - 📌 Для текущей даты используйте
TODAY()(аналогСЕГОДНЯ()). - 📌 Условное форматирование настраивается через
Формат → Условное форматирование.