Как посчитать разницу между двумя датами в Excel: от дней до лет

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

В этой статье мы разберём 5 надёжных методов вычисления разницы между датами — от простого вычитания до продвинутых функций вроде DATEDIF и DAYS360. Вы узнаете, как избежать типичных ошибок (например, с учётом високосных годов), как преобразовать результат в нужный формат и даже как автоматизировать расчёты для больших массивов данных. А в конце вас ждёт FAQ-блок с ответами на самые частые вопросы.

1. Простейший способ: вычитание дат

Самый интуитивный метод — вычесть одну дату из другой. Excel автоматически распознаёт ячейки с датами как числовые значения (где 1 = 1 января 1900 года) и возвращает разницу в днях. Например, если в ячейке A1 указана дата 15.05.2026, а в B120.05.2026, формула =B1-A1 вернёт 5.

Но здесь есть нюансы:

  • 📅 Формат ячеек: Если результат отображается как дата (например, 05.01.1900), измените формат ячейки на Общий или Числовой.
  • ⚠️ Отрицательные значения: Если первая дата позже второй, Excel покажет отрицательное число. Используйте ABS(), чтобы получить модуль: =ABS(B1-A1).
  • 🔄 Автоматическое обновление: Если даты в ячейках меняются, результат пересчитается автоматически.
⚠️ Внимание: Если одна из ячеек содержит текст (например, "Май 2026" вместо 01.05.2026), Excel вернёт ошибку #ЗНАЧ!. Проверьте формат данных с помощью функции ЕЧИСЛО().

Пример для расчёта количества дней между сегодняшней датой и датой в ячейке A1:

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

2. Функция DATEDIF: разница в днях, месяцах или годах

Функция DATEDIF (от англ. Date Difference) — самый мощный инструмент для вычисления разницы между датами. Она скрыта в списке функций Excel, но работает во всех версиях, включая Excel 365 и Excel 2019. Синтаксис:

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

Аргумент единица_измерения определяет, в чём будет выражен результат:

  • 📆 "D" — разница в днях (включая дни в неполных месяцах).
  • 📅 "M" — разница в полных месяцах (игнорирует дни).
  • 🎂 "Y" — разница в полных годах.
  • 🔢 "YM" — разница в месяцах без учёта лет.
  • 📊 "MD" — разница в днях без учёта месяцев и лет.
  • 🔄 "YD" — разница в днях без учёта лет.

Пример: чтобы узнать, сколько полных лет и месяцев прошло с 10.03.2020 до 15.07.2026, используйте две формулы:

=DATEDIF("10.03.2020"; "15.07.2026"; "Y") & " лет и " & DATEDIF("10.03.2020"; "15.07.2026"; "YM") & " месяцев"

Результат: 4 лет и 4 месяцев.

⚠️ Внимание: Функция DATEDIF не учитывает високосные годы при расчёте месяцев. Например, разница между 28.02.2020 (високосный год) и 28.02.2021 по параметру "M" будет 12, хотя фактически прошло 366 дней.
📊 Как часто вы работаете с датами в Excel?
Ежедневно
Несколько раз в неделю
Рядом
Первый раз

3. Функции DAYS, MONTH и YEAR: разложение даты на компоненты

Если нужно получить разницу в отдельных единицах (например, "3 года, 2 месяца и 15 дней"), комбинируйте функции YEAR, MONTH и DAY с DATEDIF. Алгоритм:

  1. Вычислите полные годы: =DATEDIF(A1; B1; "Y").
  2. Вычислите полные месяцы без учёта лет: =DATEDIF(A1; B1; "YM").
  3. Вычислите оставшиеся дни: =DATEDIF(A1; B1; "MD").

Пример для ячеек A1=15.05.2020 и B1=20.08.2026:

ФормулаРезультатОписание
=DATEDIF(A1; B1; "Y")4Полных лет
=DATEDIF(A1; B1; "YM")3Полных месяцев без учёта лет
=DATEDIF(A1; B1; "MD")5Дней без учёта месяцев и лет

Чтобы объединить результаты в одну строку, используйте оператор &:

=DATEDIF(A1; B1; "Y") & " г. " & DATEDIF(A1; B1; "YM") & " мес. " & DATEDIF(A1; B1; "MD") & " дн."

4. Функция DAYS360: разница в днях по банковскому методу

Функция DAYS360 используется в финансовых расчётах, где год условно считается равным 360 дням (12 месяцев по 30 дней). Синтаксис:

=DAYS360(начальная_дата; конечная_дата; [метод])

Аргумент [метод] (необязательный) определяет правило расчёта:

  • 📌 ИСТИНА (или 1) — европейский метод: если начальная дата приходится на 31-е число, она заменяется на 30-е.
  • 📌 ЛОЖЬ (или 0) — американский метод: если конечная дата приходится на 31-е число, а начальная — на 30-е или раньше, конечная дата заменяется на 30-е.

Пример: разница между 31.12.2023 и 15.03.2026:

=DAYS360("31.12.2023"; "15.03.2026"; ИСТИНА)  → 74 дня
⚠️ Внимание: DAYS360 всегда возвращает приблизительное значение. Для точных расчётов (например, срока беременности или гарантийного периода) используйте DATEDIF или простое вычитание.

5. Разница между датой и временем

Если в ваших данных указаны не только даты, но и время (например, 15.05.2026 14:30), разница будет выражена в дробных днях. Чтобы преобразовать её в часы, минуты или секунды:

  • Часы: умножьте результат на 24: =(B1-A1)*24.
  • ⏱️ Минуты: умножьте на 1440: =(B1-A1)*1440.
  • ⏲️ Секунды: умножьте на 86400: =(B1-A1)*86400.

Пример: если в A1 указано 15.05.2026 09:00, а в B115.05.2026 17:30, формула =(B1-A1)*24 вернёт 8,5 (8 часов 30 минут).

Ячейки отформатированы как "Дата" или "Дата/Время"|Результат вычитания умножен на 24/1440/86400 для часов/минут/секунд|Проверено отсутствие текста в ячейках с датами (используйте ЕЧИСЛО())|Учтена разница часовых поясов (если данные из разных источников)

-->

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

Даже опытные пользователи Excel сталкиваются с ошибками при работе с датами. Вот TOP-5 проблем и их решения:

  1. Ошибка #ЗНАЧ!
    Причина: одна из ячеек содержит текст или пусто.
    Решение: используйте ЕЧИСЛО() для проверки: =ЕЧИСЛО(A1) (вернёт ИСТИНА, если ячейка содержит число/дату).
  2. Некорректный формат результата
    Причина: ячейка с результатом отформатирована как "Дата".
    Решение: выделите ячейку → ГлавнаяФормат ячеек → выберите Общий или Числовой.
  3. Отрицательная разница
    Причина: первая дата позже второй.
    Решение: используйте ABS() или поменяйте ячейки местами.
  4. Не учитываются високосные годы
    Причина: функция DATEDIF с параметром "D" не всегда точна.
    Решение: для критических расчётов используйте простое вычитание (=B1-A1).
  5. Даты в текстовом формате
    Причина: данные импортированы из CSV или введены вручную как текст.
    Решение: преобразуйте с помощью ДАТАЗНАЧ() или ТЕКСТ.В.ДАТУ().
Как проверить, распознаёт ли Excel ячейку как дату?

Наведите курсор на ячейку — в строке формул справа от поля ввода отображается текущий формат. Если там написано "Текст" или "Общий", а не "Дата", используйте =ДАТАЗНАЧ(A1) для преобразования.

7. Автоматизация: расчёт разницы для большого массива данных

Если вам нужно посчитать разницу между датами для тысяч строк, ручной ввод формул неэффективен. Вот как автоматизировать процесс:

Способ 1: Прогонка формулы вниз

  • 📝 Введите формулу в первую ячейку (например, =DATEDIF(A2; B2; "D")).
  • 🔽 Наведите курсор на правый нижний угол ячейки (появится крестик).
  • 🖱️ Дважды кликните — формула скопируется до последней заполненной строки.

Способ 2: Таблицы Excel (Ctrl+T)

  • 📊 Выделите диапазон с датами → нажмите Ctrl+T, чтобы преобразовать в таблицу.
  • 🔄 Введите формулу в первый столбец — она автоматически применится ко всем строкам.
  • ➕ Новые строки будут включать формулу автоматически.

Способ 3: Power Query (для сложных данных)

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

  1. Перейдите на вкладку ДанныеПолучить данныеИз таблицы/диапазона.
  2. В редакторе Power Query добавьте пользовательский столбец с формулой (например, = Date.From([Дата2]) - Date.From([Дата1])).
  3. Загрузите данные обратно в Excel.

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

Как посчитать разницу между датами, если одна из них — сегодняшняя?

Используйте функцию СЕГОДНЯ():

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

=DATEDIF(A1; СЕГОДНЯ(); "Y")

Обратите внимание: СЕГОДНЯ() обновляется при каждом открытии файла.

Почему функция DATEDIF возвращает ошибку #ЧИСЛО?

Ошибка #ЧИСЛО! возникает, если:

  • Начальная дата позже конечной (используйте ABS).
  • Одна из дат не распознана как дата (проверьте формат ячейки).
  • Использован неверный параметр (например, "X" вместо "D").
Как посчитать количество рабочих дней между датами?

Используйте функцию ЧИСТРАБДНИ:

=ЧИСТРАБДНИ(A1; B1; [праздники])

Где [праздники] — диапазон с датами выходных (необязательный параметр). Например:

=ЧИСТРАБДНИ("01.01.2026"; "31.01.2026"; D1:D5)

где D1:D5 — список праздников.

Можно ли посчитать разницу между датами в Google Таблицах?

Да, все описанные функции (DATEDIF, DAYS360, вычитание) работают и в Google Sheets. Синтаксис идентичен, за исключением:

  • Функция СЕГОДНЯ() пишется как TODAY().
  • Разделитель аргументов — запятая (,), а не точка с запятой (;).
Как отобразить разницу в виде "X лет, Y месяцев, Z дней"?

Комбинируйте DATEDIF с оператором &:

=DATEDIF(A1; B1; "Y") & " лет, " & DATEDIF(A1; B1; "YM") & " мес., " & DATEDIF(A1; B1; "MD") & " дн."

Для корректного склонения ("1 год" вместо "1 лет") используйте функцию ЕСЛИ:

=DATEDIF(A1; B1; "Y") & ЕСЛИ(DATEDIF(A1; B1; "Y")=1; " год"; " лет") & "... "