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

Расчёт временных интервалов — одна из самых востребованных задач в Microsoft Excel и Google Таблицах. Будь то анализ сроков выполнения проектов, расчёт стажа сотрудников или определение просроченных платежей — умение быстро вычислять разницу между датами экономит часы ручной работы. Но даже опытные пользователи иногда путаются в функциях ДАТАРАЗН, РАЗНДАТ или ДНИ, не говоря о нюансах с учётом выходных и праздников.

В этой статье вы найдёте 5 проверенных способов посчитать период в Excel — от простейших формул для дней до сложных вычислений с учётом рабочего времени. Мы разберём реальные примеры: как узнать возраст по дате рождения, сколько месяцев осталось до дедлайна, или как исключить выходные из расчёта сроков. А в конце — уникальная таблица совместимости функций для разных версий Excel (2010–2023 и Office 365), которой нет в стандартной справке Microsoft.

1. Базовый расчёт: разница в днях между двумя датами

Самый простой способ — вычесть одну дату из другой. Excel автоматически преобразует результат в количество дней, так как хранит даты в формате последовательных чисел (начиная с 1 января 1900 года).

Формула:

=Конечная_дата - Начальная_дата

Пример: Если в ячейке A2 указана дата начала проекта (01.06.2026), а в B2 — дата окончания (15.06.2026), формула =B2-A2 вернёт 14 (дней).

  • Плюсы: работает во всех версиях Excel, не требует специальных функций.
  • ⚠️ Минусы: не учитывает рабочие/выходные дни, возвращает только дни (без месяцев/лет).
  • 🔄 Лайфхак: чтобы результат отображался в днях, даже если ячейка форматирована как "Общий", используйте функцию =ДНИ(B2;A2).
⚠️ Внимание: Если в результате вычитания дат вы получаете ошибку #ЗНАЧ!, проверьте формат ячеек. Даты должны быть введены как Дата, а не как текст. Чтобы исправить, выделите ячейки и выберите формат Краткий формат даты в меню Главная → Формат → Формат ячеек.
📊 Какой формат дат вы чаще используете в Excel?
ДД.ММ.ГГГГ
ММ/ДД/ГГ
ГГГГ-ММ-ДД
Другой

2. Функция ДНИ: точный подсчёт дней без выходных

Функция ДНИ (или DAYS в английской версии) возвращает разницу между двумя датами в днях, игнорируя время. Синтаксис:

=ДНИ(конечная_дата; начальная_дата)

Пример: =ДНИ("15.06.2026"; "01.06.2026") вернёт 14. Но если нужно исключить выходные, используйте ЧИСТРАБДНИ:

=ЧИСТРАБДНИ(A2; B2)

Для учёта праздников добавьте третий аргумент — диапазон с датами праздников:

=ЧИСТРАБДНИ(A2; B2; Праздники!A2:A10)
ФункцияСинтаксисУчитывает выходные?Учитывает праздники?
ДНИ=ДНИ(конец; начало)❌ Нет❌ Нет
ЧИСТРАБДНИ=ЧИСТРАБДНИ(начало; конец; [праздники])✅ Да✅ Да (опционально)
РАЗНДАТ=РАЗНДАТ(начало; конец; "d")❌ Нет❌ Нет

Примечание: В Google Таблицах функция ЧИСТРАБДНИ называется NETWORKDAYS, а для учёта праздников используйте NETWORKDAYS.INTL.

3. Расчёт месяцев и лет: функция РАЗНДАТ

Функция РАЗНДАТ (DATEDIF в английской версии) — самая универсальная для расчёта периодов в годах, месяцах или днях. Её синтаксис:

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

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

  • "y" — полные годы;
  • "m" — полные месяцы;
  • "d" — дни;
  • "ym" — месяцы без учёта лет;
  • "yd" — дни без учёта годов;
  • "md" — дни без учёта месяцев и лет.

Примеры:

  • 📅 =РАЗНДАТ("01.01.1990"; "01.06.2026"; "y")34 (полных года).
  • 📆 =РАЗНДАТ("01.01.2026"; "15.06.2026"; "m")5 (полных месяцев).
  • =РАЗНДАТ("01.06.2026"; "15.06.2026"; "d")14 (дней).
⚠️ Внимание: Функция РАЗНДАТ не документирована в официальной справке Excel, но работает во всех версиях, включая Excel 365. Однако в Google Таблицах её нет — используйте альтернативы вроде =YEAR(B2)-YEAR(A2) для лет.

Убедитесь, что даты введены как даты, а не текст|Проверьте порядок аргументов (начальная_дата; конечная_дата)|Используйте кавычки для единиц измерения ("y", "m", "d")|Для отрицательного результата поменяйте даты местами-->

4. Возраст по дате рождения: комбинированные формулы

Чтобы рассчитать возраст человека или "возраст" проекта в годах, месяцах и днях, комбинируйте несколько функций. Пример формулы для ячейки A2 с датой рождения (05.11.1985):

=РАЗНДАТ(A2; СЕГОДНЯ(); "y") & " лет, " & РАЗНДАТ(A2; СЕГОДНЯ(); "ym") & " мес., " & РАЗНДАТ(A2; СЕГОДНЯ(); "md") & " дн."

Результат: 38 лет, 7 мес., 10 дн. (на 15.06.2026).

Для автоматического обновления возраста используйте СЕГОДНЯ(). Если нужна статичная дата (например, на момент создания отчёта), замените её на фиксированную:

=РАЗНДАТ(A2; "15.06.2026"; "y")
Почему РАЗНДАТ иногда ошибается с месяцами?

Функция РАЗНДАТ считает полные месяцы только если день конечной даты ≥ дня начальной. Например, разница между 31.01.2026 и 28.02.2026 составит 0 месяцев (так как 28 < 31). Чтобы исправить, используйте формулу:

=ЕСЛИ(ДЕНЬ(A2)<=ДЕНЬ(B2); РАЗНДАТ(A2; B2; "m"); РАЗНДАТ(A2; B2; "m")-1)

5. Период с учётом рабочего времени: ЧИСТРАБДНИ и ВРЕМЯ

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

  • 🕒 Рабочие дни: =ЧИСТРАБДНИ(A2; B2).
  • ⏱️ Рабочие часы: =ЧИСТРАБДНИ(A2; B2) * 8 (для 8-часового рабочего дня).
  • 📅 С учётом праздников: =ЧИСТРАБДНИ(A2; B2; Праздники!A2:A10).

Пример: Если проект начался 01.06.2026 (пятница) и закончился 10.06.2026 (следующий понедельник), формула =ЧИСТРАБДНИ("01.06.2026"; "10.06.2026") вернёт 5 (рабочих дней), хотя календарная разница — 9 дней.

Для точного расчёта часов с учётом начала/конца рабочего дня (например, с 9:00 до 18:00) используйте:

=ЕСЛИ(ЧИСТРАБДНИ(A2; B2)=0; МАКС(0; (B2-A2)*24); ЧИСТРАБДНИ(A2; B2)*8 + МАКС(0; (МОД(B2;1)-МОД(A2;1))*24-9))
⚠️ Внимание: Функция ЧИСТРАБДНИ считает субботу и воскресенье выходными по умолчанию. Если у вас другой график (например, рабочая суббота), используйте ЧИСТРАБДНИ.INTL с параметром выходных дней. Например, для выходных в пятницу и субботу: =ЧИСТРАБДНИ.INTL(A2; B2; 7), где 7 — код для пятницы/субботы.

6. Продвинутые сценарии: периоды с условиями

Иногда нужно посчитать период только при выполнении определённых условий. Например:

  • 📊 Разница между датами, если статус = "Завершён":
    =ЕСЛИ(C2="Завершён"; B2-A2; "")
  • 🔍 Период просрочки (если дата < сегодня):
    =ЕСЛИ(B2<СЕГОДНЯ(); СЕГОДНЯ()-B2; 0)
  • 📈 Средний срок выполнения задач:
    =СРЗНАЧЕСЛИ(Статус!A2:A100; "Завершено"; Разница!B2:B100)

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

  1. Выделите данные с датами и связанными метриками.
  2. Вставьте сводную таблицу (Вставка → Сводная таблица).
  3. Перетащите даты в область "Строки" и выберите группировку по месяцам/кварталам.
  4. Добавьте в "Значения" поле с разницей дней (например, "Срок выполнения").

7. Ошибки и их решения: почему Excel неправильно считает период

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

ОшибкаПричинаРешение
#ИМЯ?Опечатка в названии функции (например, РАЗНДАТТ вместо РАЗНДАТ)Проверьте синтаксис. В английской версии Excel используйте DATEDIF.
#ЗНАЧ!Ячейка содержит текст вместо датыПреобразуйте текст в дату с помощью ДАТАЗНАЧ или измените формат ячейки.
Отрицательное значениеНачальная дата позже конечнойПоменяйте даты местами или используйте =АБС(B2-A2).
Неправильные месяцы/годыФункция РАЗНДАТ не учитывает неполные периодыИспользуйте комбинированные формулы (см. раздел 4).
#ЧИСЛО!Некорректная дата (например, 31 февраля)Проверьте даты на валидность функцией =ДАТАМЕС(A2;1).

Если Excel упорно не распознаёт даты, попробуйте "разбудить" их с помощью формулы:

=ДАТАЗНАЧ(ТЕКСТ(A2; "дд.мм.гггг"))

FAQ: Частые вопросы о расчёте периодов в Excel

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

Используйте формулу =ЦЕЛОЕ((B2-A2)/7), где A2 и B2 — начальная и конечная даты. Для учёта неполных недель добавьте =ОКРВВЕРХ((B2-A2)/7; 1).

🔹 Почему РАЗНДАТ возвращает #ЧИСЛО! в Excel 2019?

Эта ошибка возникает, если одна из дат введена как текст или содержит недопустимое значение (например, 32 января). Проверьте даты функцией =ЕДАТА(A2;0) — если результат ошибка, исправьте формат ячейки.

🔹 Как посчитать период в часах и минутах?

Умножьте разницу на 24 (для часов) или на 1440 (для минут): =(B2-A2)*24 или =(B2-A2)*1440. Для отображения в формате чч:мм используйте пользовательский формат ячейки [ч]:мм.

🔹 Можно ли посчитать период с учётом только рабочих часов (например, с 10:00 до 19:00)?

Да, но потребуется сложная формула. Пример для рабочего дня с 10:00 до 19:00:

=ЕСЛИ(ЧИСТРАБДНИ(A2;B2)=0;

МАКС(0; (B2-A2)*24 - ЕСЛИ(ЧАС(A2)<10; 10-ЧАС(A2); 0) - ЕСЛИ(ЧАС(B2)>19; ЧАС(B2)-19; 0));

ЧИСТРАБДНИ(A2;B2)*9 + МАКС(0; (МОД(B2;1)-МОД(A2;1))*24 - ЕСЛИ(ЧАС(A2)<10; 10-ЧАС(A2); 0) - ЕСЛИ(ЧАС(B2)>19; ЧАС(B2)-19; 0)))

🔹 Как автоматически обновлять период при изменении текущей даты?

Используйте функцию СЕГОДНЯ() вместо фиксированной даты. Например: =РАЗНДАТ(A2; СЕГОДНЯ(); "d"). Чтобы отключить автоматическое обновление, перейдите в Формулы → Вычисления → Вручную.