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

Почему сравнение дат в Excel требует особого подхода

На первый взгляд, сравнить две даты в Microsoft Excel кажется простой задачей — достаточно вычесть одно значение из другого. Но на практике пользователи сталкиваются с массой нюансов: от некорректного отображения результатов до ошибок в формулах при работе с разными форматами. Дело в том, что Excel хранит даты не как текст, а как числовые значения, где 1 января 1900 года соответствует числу 1, а каждая последующая дата увеличивает это число на единицу. Такой подход позволяет выполнять вычисления, но требует понимания внутренней логики программы.

Ошибки при сравнении дат часто возникают из-за:

  • 🗓️ Несовпадения форматов (например, ДД.ММ.ГГГГ vs ММ/ДД/ГГГГ), что приводит к неверной интерпретации дня и месяца.
  • Разницы в временных зонах, если данные импортированы из внешних источников (например, Google Sheets или баз данных).
  • 📅 Пустых ячеек или текста, которые Excel воспринимает как 0 (что соответствует дате 00.01.1900).

В этой статье мы разберём 5 проверенных способов сравнения дат — от элементарных формул до автоматизации через Power Query и VBA, а также покажем, как избежать типичных ошибок и визуализировать результаты с помощью условного форматирования.

📊 Как часто вам приходится сравнивать даты в Excel?
Ежедневно
Несколько раз в неделю
Редко
Никогда

Способ 1: Простое вычитание дат (разница в днях)

Самый базовый метод — вычесть одну дату из другой, чтобы получить разницу в днях. Например, если в ячейке A1 указана дата начала проекта (15.05.2026), а в B1 — дата окончания (30.06.2026), формула =B1-A1 вернёт 46 (количество дней между датами).

Важные моменты:

  • 🔢 Результат вычитания всегда возвращается в днях, даже если ячейки отформатированы как даты.
  • ⚠️ Если вторая дата раньше первой, результат будет отрицательным (например, -10 означает, что событие произошло 10 дней назад).
  • 📊 Чтобы преобразовать дни в годы, разделите результат на 365 (или 365.25 для учёта високосных лет).
Формула Пример Результат Пояснение
=B1-A1 30.06.2026 - 15.05.2026 46 Разница в днях
=DATEDIF(A1,B1,"D") DATEDIF("15.05.2026","30.06.2026","D") 46 Альтернативный метод (см. следующий раздел)
=(B1-A1)/365 (30.06.2026 - 15.05.2026)/365 0,126 Приблизительная разница в годах
⚠️ Внимание: Если после вычитания дат вы видите странное число вроде 45367, проверьте формат ячеек. Скорее всего, Excel интерпретирует введённые данные как текст, а не как даты. Исправьте формат через Главная → Формат → Формат ячеек → Дата.

Способ 2: Функция DATEDIF — гибкое сравнение

Функция DATEDIF (от англ. Date Difference) позволяет вычислять разницу между датами в днях, месяцах или годах с учётом календарных особенностей. Её синтаксис:

DATEDIF(начальная_дата; конечная_дата; единица_измерения)

Где единица_измерения может принимать значения:

  • "D" — разница в днях;
  • "M" — разница в полных месяцах;
  • "Y" — разница в полных годах;
  • "YM" — разница в месяцах без учёта лет;
  • "MD" — разница в днях без учёта месяцев и лет;
  • "YD" — разница в днях без учёта годов (с начала года).

Пример: чтобы узнать, сколько полных лет прошло с 15.05.2020 по 30.06.2026, используйте:

=DATEDIF("15.05.2020"; "30.06.2026"; "Y")

Результат — 4 (полных года).

⚠️ Внимание: Функция DATEDIF не документирована в официальной справке Excel, но работает во всех версиях программы. В Excel 365 и Excel 2021 её можно вводить вручную — автозаполнение не срабатывает.
Почему DATEDIF не видна в списке функций?

Функция DATEDIF была добавлена для совместимости с Lotus 1-2-3 — популярной программой для работы с таблицами в 1980–1990-х. Microsoft сохранила её в Excel, но скрыла из интерфейса, так как аналогичные вычисления можно выполнить другими способами (например, комбинацией YEAR, MONTH и DAY).

Способ 3: Условное форматирование для визуализации

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

  1. Выделите диапазон (например, A1:A100).
  2. Перейдите на вкладку Главная → Условное форматирование → Создать правило.
  3. Выберите Форматировать ячейки, которые содержат.
  4. В поле Форматировать ячейки по следующему правилу укажите:
    =A1
  5. Нажмите Формат, выберите красный цвет заливки и нажмите ОК.

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

=AND(A1>TODAY(); A1<=TODAY()+7)

Выделить диапазон ячеек с датами|

Открыть меню "Условное форматирование"|

Выбрать "Создать правило"|

Указать формулу с TODAY() или другой функцией|

Задать стиль форматирования (цвет, шрифт, границы)|

Применить правило и проверить результат-->

Способ 4: Сравнение с учётом времени (даты + время)

Если ваши даты включают время (например, 15.05.2026 14:30), простое вычитание может дать неожиданные результаты. Например, разница между 15.05.2026 23:59 и 16.05.2026 00:01 составит 0,0001157 дня (около 10 минут), хотя календарно это разные дни.

Чтобы сравнить только даты, игнорируя время, используйте функцию ЦЕЛОЕ():

=ЦЕЛОЕ(B1) - ЦЕЛОЕ(A1)

Или обрежьте время с помощью ДЕНЬ(), МЕСЯЦ() и ГОД():

=ДАТА(ГОД(B1); МЕСЯЦ(B1); ДЕНЬ(B1)) - ДАТА(ГОД(A1); МЕСЯЦ(A1); ДЕНЬ(A1))

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

=B1 - ЦЕЛОЕ(B1) - (A1 - ЦЕЛОЕ(A1))

Результат будет в долях дня (например, 0,5 = 12 часов). Чтобы перевести в часы, умножьте на 24.

Способ 5: Продвинутые методы (Power Query и VBA)

Для обработки больших массивов данных или автоматизации сравнения дат используйте Power Query или VBA.

Power Query (доступен в Excel 2016+):

  1. Импортируйте данные в Power Query через Данные → Получить данные.
  2. Выделите столбец с датами, перейдите на вкладку Добавить столбец и выберите Вычислить разницу дат.
  3. Укажите второй столбец для сравнения и единицу измерения (дни, месяцы, годы).

VBA (для создания пользовательских функций):

Function DaysBetween(date1 As Date, date2 As Date) As Long

DaysBetween = Abs(date2 - date1)

End Function

Эту функцию можно вызвать в Excel как =DaysBetween(A1; B1).

Преимущества продвинутых методов:

  • 🔄 Обработка тысяч строк без замедления.
  • 📈 Возможность добавления дополнительной логики (например, исключение выходных).
  • 🔄 Автоматическое обновление при изменении исходных данных.

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

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

  1. Текст вместо дат: Excel не распознаёт значения вроде "15 мая" или "05/15/2026" как даты. Используйте ДАТАЗНАЧ() или Текст по столбцам для преобразования.
  2. Неверный порядок дня/месяца: В формате ММ/ДД/ГГГГ дата 05/06/2026 означает 5 июня, а не 6 мая. Проверяйте региональные настройки.
  3. Пустые ячейки: Формулы вроде =B1-A1 вернут ошибку, если одна из ячеек пуста. Используйте ЕСЛИОШИБКА():
=ЕСЛИОШИБКА(B1-A1; "Данные отсутствуют")

Ещё одна ловушка — високосные годы. Функция DATEDIF учитывает их автоматически, но при ручных расчётах (например, деление на 365) результат может быть неточным. Для точного перевода дней в годы используйте:

=DATEDIF(A1; B1; "Y") & " лет, " & DATEDIF(A1; B1; "YM") & " мес., " & DATEDIF(A1; B1; "MD") & " дн."
⚠️ Внимание: При импорте дат из внешних источников (например, CSV или SQL) Excel может преобразовать их в текст. Всегда проверяйте формат ячеек после импорта, особенно если даты выглядят как числа (например, 45367 вместо 01.05.2026).

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

Как сравнить дату в Excel с сегодняшним днём?

Используйте функцию TODAY() (или СЕГОДНЯ() в русской версии). Например, чтобы проверить, прошла ли дата в ячейке A1, введите:

=ЕСЛИ(A1

Функция TODAY() обновляется автоматически при каждом открытии файла.

Почему при вычитании дат получается ошибка #ЗНАЧ?

Ошибка #ЗНАЧ! возникает, если хотя бы одна из ячеек содержит текст вместо даты. Проверьте формат ячеек (Ctrl+1) и при необходимости преобразуйте данные с помощью ДАТАЗНАЧ():

=ДАТАЗНАЧ(A1) - ДАТАЗНАЧ(B1)

Если дата записана в нестандартном формате (например, "15 мая 2026"), используйте комбинацию ДАТА(), МЕСЯЦ() и ДЕНЬ().

Как посчитать количество рабочих дней между датами?

Для этого предназначена функция ЧИСТРАБДНИ() (или NETWORKDAYS в английской версии). Она исключает выходные (субботу и воскресенье) и праздники. Пример:

=ЧИСТРАБДНИ(A1; B1; C1:C10)

Где C1:C10 — диапазон с датами праздников. Чтобы исключить только выходные, третий аргумент можно опустить.

Можно ли сравнить даты в разных временных зонах?

Excel не поддерживает временные зоны напрямую, но вы можете вручную скорректировать время. Например, если в ячейке A1 дата по UTC, а нужно сравнить её с местным временем (UTC+3), добавьте 3 часа:

=A1 + (3/24)

Для автоматизации используйте Power Query или VBA с учётом смещения временных зон.

Как найти самую раннюю или позднюю дату в диапазоне?

Используйте функции МИН() и МАКС():

=МИН(A1:A100)  ' Самая ранняя дата

=МАКС(A1:A100) ' Самая поздняя дата

Если в диапазоне есть пустые ячейки или текст, добавьте проверку:

=МАКС(ЕСЛИОШИБКА(A1:A100; 0))