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

Работа с датами в Microsoft Excel — одна из самых востребованных задач среди аналитиков, бухгалтеров и менеджеров проектов. Нужно ли вам рассчитать срок выполнения задачи, определить стаж сотрудника или проанализировать временные интервалы между событиями — без умения вычислять разницу между датами не обойтись. Однако даже опытные пользователи иногда сталкиваются с неожиданными результатами: вместо корректного количества дней Excel выдаёт странные числа, ошибки #ЗНАЧ! или просто неверные значения.

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

Особое внимание уделим нюансам:

  • 🔹 Почему простая формула =B2-A2 иногда даёт сбой
  • 🔹 Как учитывать только рабочие дни (исключая выходные и праздники)
  • 🔹 В чём разница между функциями ДАТАРАЗН и РАЗНДАТ
  • 🔹 Как преобразовать результат из дней в годы, месяцы или часы
📊 Как часто вам приходится работать с датами в Excel?
Ежедневно
Несколько раз в неделю
Редко
Никогда

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

Самый очевидный способ найти разницу между двумя датами — вычесть одну из другой. Если в ячейке A2 у вас начальная дата, а в B2 — конечная, достаточно ввести формулу:

=B2-A2

Excel автоматически вернёт количество дней между этими датами.

Однако здесь есть два подводных камня:

  1. Если ячейки отформатированы как текст (а не как дата), Excel вернёт ошибку или некорректное число. Всегда проверяйте формат через Главная → Формат → Формат ячеек → Дата.
  2. Результат по умолчанию отображается в днях. Чтобы преобразовать его в месяцы или годы, потребуется дополнительная формула (об этом — в следующих разделах).

Пример: если в A2 указана дата 01.01.2023, а в B215.03.2023, формула вернёт 73 (количество дней между этими датами).

2. Функция РАЗНДАТ: универсальный инструмент

Функция РАЗНДАТ (англ. DATEDIF) — это скрытая "жемчужина" Excel, которой нет в списке мастер-функций, но она работает во всех версиях программы. Её синтаксис:

=РАЗНДАТ(начальная_дата; конечная_дата; единица_измерения)

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

  • 📅 "d" — дни
  • 📆 "m" — полные месяцы
  • 🗓️ "y" — полные годы
  • 🔄 "ym" — месяцы без учёта лет
  • 🔙 "yd" — дни без учёта лет
  • 🔀 "md" — дни без учёта месяцев и лет

Важно: функция РАЗНДАТ не поддерживает отрицательные значения. Если начальная дата позже конечной, Excel вернёт ошибку #ЧИСЛО!. Чтобы этого избежать, используйте конструкцию с ЕСЛИ:

=ЕСЛИ(B2>A2; РАЗНДАТ(A2; B2; "d"); РАЗНДАТ(B2; A2; "d") & " (обратный отсчёт)")

Пример расчёта стажа сотрудника:

Начальная датаКонечная датаФормулаРезультат
05.11.201810.05.2026=РАЗНДАТ(A2; B2; "y")5 (полных лет)
05.11.201810.05.2026=РАЗНДАТ(A2; B2; "ym")6 (месяцев сверх полных лет)
05.11.201810.05.2026=РАЗНДАТ(A2; B2; "md")5 (дней сверх полных месяцев)
Почему РАЗНДАТ отсутствует в списке функций?

Функция РАЗНДАТ — это наследие старых версий Lotus 1-2-3. Microsoft сохранила её для совместимости, но не документирует официально. Она работает во всех версиях Excel, включая Excel 365 и Excel 2019, но не отображается в мастер-функций (Формулы → Вставить функцию).

3. Функция ДАТАРАЗН: альтернатива с гибкими настройками

Функция ДАТАРАЗН (англ. DAYS в новых версиях) возвращает количество дней между двумя датами, но в отличие от РАЗНДАТ, она:

  • 🔧 Поддерживает отрицательные значения (если конечная дата раньше начальной).
  • 📊 Точнее учитывает високосные годы.
  • 🔍 Легче вводится через мастер-функций (Формулы → Дата и время → ДАТАРАЗН).

Синтаксис:

=ДАТАРАЗН(конечная_дата; начальная_дата)

Пример: чтобы узнать, сколько дней осталось до конца проекта (дедлайна в ячейке C2), используйте:

=ДАТАРАЗН(C2; СЕГОДНЯ())
⚠️ Внимание: функция СЕГОДНЯ() пересчитывается при каждом открытии файла. Если вам нужно зафиксировать текущую дату, используйте CTRL+; (горячие клавиши для вставки статической даты).

Для преобразования дней в годы или месяцы комбинируйте ДАТАРАЗН с делением:

=ДАТАРАЗН(B2; A2)/365  // Приблизительное количество лет

Но помните: такой расчёт неточен из-за разного количества дней в месяцах и високосных годах. Для точного результата лучше использовать РАЗНДАТ с параметром "y".

4. Учёт рабочих дней: функция ЧИСТРАБДНИ

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

=ЧИСТРАБДНИ(начальная_дата; конечная_дата; [праздники])

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

Пример: рассчитаем количество рабочих дней между 01.01.2026 и 31.01.2026, исключая новогодние каникулы (с 01.01 по 08.01):

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

Где D2:D9 — диапазон с датами праздников.

Для учёта часов между датами (например, для табеля рабочего времени) комбинируйте ЧИСТРАБДНИ с умножением:

=ЧИСТРАБДНИ(A2; B2) * 8  // Количество рабочих часов (при 8-часовом дне)

Создать список праздничных дней в отдельном диапазоне|Проверить формат дат (должен быть "Дата")|Учесть региональные особенности (в некоторых странах выходные — пятница и суббота)|Использовать абсолютные ссылки на диапазон праздников (например, $D$2:$D$9)-->

5. Разница в месяцах и годах: точные расчёты

Для вычисления разницы в месяцах или годах с учётом календарных особенностей (например, 31 января минус 1 месяц = 31 декабря, а не 30 ноября) используйте комбинацию функций:

=ГОД(B2)-ГОД(A2)-ЕСЛИ(ИЛИ(МЕСЯЦ(B2)<МЕСЯЦ(A2); И(МЕСЯЦ(B2)=МЕСЯЦ(A2); ДЕНЬ(B2)<ДЕНЬ(A2))); 1; 0)

Эта формула вернёт полное количество лет между датами, учитывая дни и месяцы.

Для месяцев аналогично:

=РАЗНДАТ(A2; B2; "m")

Но помните: РАЗНДАТ с параметром "m" возвращает полные месяцы, игнорируя дни. Например, разница между 31.01.2026 и 01.03.2026 составит 1 месяц (а не 2), потому что 31 февраля не существует.

Если вам нужно округлённое количество лет (например, для расчёта стажа "по полугодиям"), используйте:

=ОКРУГЛВВЕРХ(РАЗНДАТ(A2; B2; "d")/365; 1)

6. Распространённые ошибки и как их избежать

Даже простые расчёты с датами могут давать сбои. Вот топ-5 ошибок и их решения:

  1. Ошибка #ЗНАЧ!: возникает, если одна из ячеек содержит текст вместо даты. Проверьте формат через Формат ячеек → Дата или используйте =ДАТАЗНАЧ(A2) для преобразования текста в дату.
  2. Некорректное количество дней: если вычитаете даты в формате дд.мм.гггг, но результат отрицательный, поменяйте местами ячейки или используйте АБС():
    =АБС(B2-A2)
  3. Проблемы с 1900 годом: Excel считает 01.01.1900 за "нулевую" дату, но в реальности этот день не существовал (ошибка Lotus 1-2-3). Чтобы избежать путаницы, используйте даты не раньше 01.01.1901.
  4. Високосные годы: функции вроде =ДАТАРАЗН/365 дают погрешность. Для точного расчёта лет используйте РАЗНДАТ с параметром "y".
  5. Региональные настройки: если даты отображаются как мм/дд/гггг вместо дд.мм.гггг, измените параметры системы (Файл → Параметры → Язык → Региональные параметры).
⚠️ Внимание: при копировании дат из внешних источников (например, с сайтов) Excel может распознать их как текст. Чтобы исправить это, выделите диапазон и выполните Данные → Текст по столбцам → Готово (без изменения параметров).

FAQ: Частые вопросы о разнице дат в Excel

Как посчитать разницу между датой и временем (например, 10.05.2026 14:30 и 12.05.2026 09:15)?

Используйте простое вычитание, но убедитесь, что обе ячейки отформатированы как Дата и время. Результат будет в днях с дробной частью (например, 2,71875 — это 2 дня и 17 часов 15 минут). Чтобы преобразовать дробь в часы, умножьте на 24:

= (B2-A2)*24  // Разница в часах

Почему функция РАЗНДАТ возвращает #ИМЯ? вместо результата?

Это означает, что Excel не распознаёт название функции. Возможные причины:

  • 🔹 Опечатка в названии (правильно: РАЗНДАТ, а не РАЗНИЦАДАТ).
  • 🔹 Используется нерусская версия Excel (в английской версии функция называется DATEDIF).
  • 🔹 Ячейки отформатированы как текст (проверьте через Формат ячеек).

Решение: введите функцию вручную или используйте альтернативу — ДАТАРАЗН.

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

Excel не поддерживает временные зоны напрямую. Чтобы учесть разницу, сначала приведите обе даты к одной временной зоне:

  1. Добавьте или вычтите часы (например, для перевода из UTC+3 в UTC+0: =A2-ВРЕМЯ(3;0;0)).
  2. Используйте функцию ЧАС для корректировки: =B2-A2+ВРЕМЯ(разница_в_часах;0;0).

Для автоматизации создайте отдельную ячейку с разницей временных зон.

Как посчитать количество кварталов между двумя датами?

Используйте комбинацию функций ГОД и МЕСЯЦ:

= (ГОД(B2)-ГОД(A2))*4 + ОКРУГЛВВЕРХ(МЕСЯЦ(B2)/3;0) - ОКРУГЛВВЕРХ(МЕСЯЦ(A2)/3;0)

Эта формула вернёт количество полных кварталов между датами.

Почему при копировании формулы с датами результат не меняется?

Скорее всего, в формуле используются абсолютные ссылки (например, $A$2 вместо A2). Чтобы ссылки автоматически обновлялись при копировании:

  • 🔹 Уберите знак $ (нажмите F4, чтобы переключить тип ссылки).
  • 🔹 Проверьте, не заблокированы ли ячейки (вкладка Рецензирование → Защитить лист).