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

Работа с датами и временем в Microsoft Excel — одна из самых востребованных задач, особенно когда нужно рассчитать продолжительность проектов, возраст клиентов, сроки выполнения задач или просто разницу между двумя событиями. На первый взгляд кажется, что достаточно вычесть одну дату из другой, но на практике всё гораздо сложнее: формат ячеек, учёт выходных, временные зоны и даже переход на зимнее/летнее время могут исказить результаты.

Многие пользователи сталкиваются с тем, что Excel выдаёт вместо ожидаемых дней странные числа вроде 44567 или времени 12:00:00, не понимая, что это внутреннее представление дат в программе. Другие пытаются вручную считать рабочие дни, забывая про праздники, или допускают ошибки при работе с временными интервалами больше 24 часов. Эта статья поможет разобраться во всех нюансах — от простейших формул до продвинутых функций для расчёта календарных, рабочих и точных временных периодов.

Мы рассмотрим не только стандартные функции вроде ДАТАРАЗН или РАЗНДАТ, но и малоизвестные приёмы: как учитывать только будни, как вычислять время с точностью до секунд, и даже как автоматизировать расчёты для больших таблиц. А в конце вас ждёт FAQ с ответами на самые частые вопросы и типичные ошибки.

📊 Что вы чаще всего рассчитываете в Excel?
Сроки проектов
Возраст клиентов
Рабочее время сотрудников
Финансовые периоды
Другое

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

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

Допустим, у вас в ячейке A1 дата начала проекта — 15.05.2026, а в B1 — дата окончания — 30.05.2026. Формула будет такой:

=B1-A1

Результат: 15 дней.

Но здесь есть подводные камни:

  • 📅 Формат ячеек: Если ячейки с датами отформатированы как текст, Excel воспримет их как строки, и вычитание не сработает. Всегда проверяйте формат через Главная → Формат ячеек → Дата.
  • Отрицательные значения: Если дата окончания раньше начальной, результат будет отрицательным. Используйте =АБС(B1-A1), чтобы получить модуль.
  • 🔄 Время в датах: Если в ячейках указано не только число, но и время (например, 15.05.2026 14:30), Excel учтёт и его. Чтобы игнорировать время, используйте =ЦЕЛОЕ(B1)-ЦЕЛОЕ(A1).

Пример с учётом времени:

=B1-A1

Если A1 = 15.05.2026 10:00, а B1 = 16.05.2026 12:00, результат будет 1,083 (1 день и 2 часа). Чтобы перевести это в часы, умножьте на 24:

=(B1-A1)*24

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

Когда нужно узнать не только количество дней, но и лет или месяцев между датами, на помощь приходит функция РАЗНДАТ (или DATEDIF в английской версии). Она скрыта в списке функций, но работает стабильно во всех версиях Excel.

Синтаксис:

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

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

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

Примеры:

ФормулаНачальная датаКонечная датаРезультат
=РАЗНДАТ(A1;B1;"y")15.05.202015.05.20264
=РАЗНДАТ(A1;B1;"m")15.01.202615.05.20264
=РАЗНДАТ(A1;B1;"d")01.01.202631.01.202630
=РАЗНДАТ(A1;B1;"ym")15.01.202615.05.20264
=РАЗНДАТ(A1;B1;"md")15.05.202620.05.20265

Важно: функция РАЗНДАТ округляет результаты вниз. Например, разница между 31.12.2023 и 01.01.2026 по параметру "y" будет 0, хотя прошёл 1 день.

Почему РАЗНДАТ не видна в списке функций?

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

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

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

Синтаксис:

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

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

Пример:

Допустим, в ячейках:

  • A1 = 01.05.2026 (начало проекта);
  • B1 = 15.05.2026 (окончание проекта);
  • D1:D3 = даты праздников (09.05.2026, 10.05.2026).

Формула:

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

Результат: 9 рабочих дней (вместо 14 календарных).

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

=ЧИСТРАБДНИ(A1; B1)  8 + (МОД(B1;1) - МОД(A1;1))  24

Где 8 — количество рабочих часов в день, а 24 — коэффициент для перевода дробной части (времени) в часы.

Убедитесь, что даты в формате Дата, а не текст

Создайте отдельный список праздников в диапазоне ячеек

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

Используйте абсолютные ссылки для диапазона праздников (например, $D$1:$D$10), если формула копируется-->

4. Работа с временными интервалами: часы, минуты, секунды

Когда речь идёт о времени (например, длительность звонков, рабочие смены), стандартное вычитание может дать неожиданные результаты. Например, если вычесть 9:00 из 17:00, Excel вернёт 0,333... — это дробная часть суток (8 часов = 8/24).

Чтобы получить результат в привычном формате, используйте:

  • 🕒 Часы: =(B1-A1)*24;
  • ⏱️ Минуты: =(B1-A1)*1440 (24 часа × 60 минут);
  • ⏲️ Секунды: =(B1-A1)*86400 (24 × 60 × 60).

Если интервал превышает 24 часа, Excel по умолчанию отобразит его как 00:00:00. Чтобы исправить это, примените пользовательский формат:

  1. Выделите ячейку с результатом.
  2. Нажмите Ctrl+1.
  3. В разделе Число → Все форматы введите [ч]:мм:сс.

Пример:

Если A1 = 10:00 01.05.2026, а B1 = 18:00 02.05.2026, формула =B1-A1 с форматом [ч]:мм покажет 34:00 (34 часа).

5. Продвинутые приёмы: учёт праздников и нестандартных выходных

Функция ЧИСТРАБДНИ.МЕЖД (или NETWORKDAYS.INTL) позволяет гибко настраивать, какие дни считать выходными. Например, если у вас рабочая неделя с понедельника по пятницу, а суббота — сокращённый день.

Синтаксис:

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

Где [выходные] — число или строка, определяющая выходные дни:

  • 1 или "0000011" — суббота и воскресенье (стандарт);
  • 11 или "0000001" — только воскресенье;
  • "1010110"** — выходные: понедельник, среда, суббота.

Пример:

Рассчитаем рабочие дни между 01.05.2026 и 15.05.2026, где выходные — пятница и суббота (как в некоторых мусульманских странах):

=ЧИСТРАБДНИ.МЕЖД(A1; B1; "0000110"; D1:D3)

Для автоматизации можно создать таблицу с праздничными датами на год и ссылаться на неё во всех формулах. Например:

=ЧИСТРАБДНИ.МЕЖД(A1; B1; 1; Праздники!A:A)

Где Праздники!A:A — столбец с датами праздников на отдельном листе.

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

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

⚠️ Внимание: Если после вычитания дат вы видите число вроде 45342, а не дату — это нормально! Excel хранит даты как количество дней с 1 января 1900 года. Чтобы преобразовать число в дату, измените формат ячейки.

Ошибки и решения:

ОшибкаПричинаРешение
###### (решетки)Ячейка слишком узкая для отображения даты/времениРастяните столбец или измените формат на Общий
1/1/1900Ячейка пустая или содержит 0Проверьте данные или используйте =ЕСЛИ(A1=0;"";A1)
Отрицательное времяВключён параметр Использовать систему дат 1904Перейдите в Файл → Параметры → Дополнительно и снимите флажок
#ЗНАЧ!Ячейка содержит текст вместо датыИспользуйте =ДАТАЗНАЧ(A1) для преобразования текста в дату

Ещё одна частая проблема — автоматическое преобразование дат. Например, если ввести 1-5 в ячейку, Excel может интерпретировать это как 1 мая. Чтобы избежать этого:

  • Предварительно форматируйте ячейку как Текст.
  • Используйте апостроф перед вводом: '1-5.
⚠️ Внимание: Функции РАЗНДАТ и ЧИСТРАБДНИ не работают с датами до 1 января 1900 года. Для исторических расчётов используйте альтернативные методы (например, вычитание вручную с учётом юлианского/григорианского календаря).

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

Как посчитать возраст человека в Excel?

Используйте комбинацию функций:

=РАЗНДАТ(дата_рождения; СЕГОДНЯ(); "y")

Для точного возраста с учётом месяцев и дней:

=РАЗНДАТ(дата_рождения; СЕГОДНЯ(); "y") & " лет, " & РАЗНДАТ(дата_рождения; СЕГОДНЯ(); "ym") & " мес., " & РАЗНДАТ(дата_рождения; СЕГОДНЯ(); "md") & " дн."
Почему Excel показывает ###### вместо даты?

Это означает, что столбец слишком узкий. Растяните его или измените формат ячейки на Общий. Также проверьте, не является ли значение отрицательным (например, если дата окончания раньше начальной).

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

Используйте формулу:

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

Или с учётом неполных недель:

=ОКРУГЛВНИЗ((B1-A1)/7; 0)
Можно ли посчитать время с точностью до миллисекунд?

Да, но Excel хранит время с точностью до 1/86400 секунды (так как 24×60×60=86400). Для миллисекунд умножьте разницу на 86400000:

=(B1-A1)*86400000

Однако отобразить миллисекунды в ячейке можно только через пользовательский формат ч:мм:сс.000.

Как автоматически обновлять текущую дату в формулах?

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

=РАЗНДАТ(A1; СЕГОДНЯ(); "d")

покажет количество дней с даты в A1 до сегодняшнего дня.