Расчёт временных интервалов — одна из самых востребованных задач в 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).
⚠️ Внимание: Если в результате вычитания дат вы получаете ошибку#ЗНАЧ!, проверьте формат ячеек. Даты должны быть введены какДата, а не как текст. Чтобы исправить, выделите ячейки и выберите форматКраткий формат датыв менюГлавная → Формат → Формат ячеек.
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)
Для анализа временных трендов используйте сводные таблицы:
- Выделите данные с датами и связанными метриками.
- Вставьте сводную таблицу (
Вставка → Сводная таблица). - Перетащите даты в область "Строки" и выберите группировку по месяцам/кварталам.
- Добавьте в "Значения" поле с разницей дней (например, "Срок выполнения").
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"). Чтобы отключить автоматическое обновление, перейдите в Формулы → Вычисления → Вручную.