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

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

Многие пользователи ошибочно думают, что для таких расчётов нужны сложные макросы или сторонние надстройки. На самом деле, в 90% случаев достаточно встроенных функций и пары простых формул. В этой статье мы разберём 5 основных способов расчёта временных интервалов — от базовой разницы в днях до учёта рабочих дней и точного подсчёта лет с учётом високосных. А ещё вы узнаете, как избежать типичных ошибок при работе с датами в формате ДД.ММ.ГГГГ и ММ/ДД/ГГГГ.

Если вы когда-нибудь сталкивались с тем, что Excel вместо корректной даты показывает набор решёток ###### или выдаёт явно неверный результат (например, отрицательное количество дней), эта инструкция поможет разобраться в причинах и исправить ошибки. Мы также рассмотрим скрытые возможности функций ДАТАРАЗН и РАЗНДАТ, о которых не пишут в стандартных руководствах.

Готовы перестать тратить время на ручные подсчёты? Тогда приступим!

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

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

Формула выглядит так:

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

Например, если в ячейке A1 у вас дата 15.05.2026, а в B120.05.2026, формула =B1-A1 вернёт значение 5 (дней).

  • 📅 Формат ячеек имеет значение! Если Excel показывает вместо даты число вроде 45341, выделите ячейку и примените формат Дата через контекстное меню (Ctrl+1).
  • Отрицательный результат означает, что начальная дата позже конечной. Используйте АБС(), чтобы получить модуль: =АБС(B1-A1).
  • 🔄 Для динамического расчёта текущей даты используйте СЕГОДНЯ(): =СЕГОДНЯ()-A1 (сколько дней прошло с даты в A1).
⚠️ Внимание: Если при вычитании дат вы получаете ошибку #ЗНАЧ!, проверьте, что обе ячейки содержат именно даты, а не текст. Частая ошибка — копирование дат из внешних источников (например, PDF), где они сохраняются как строки.
📊 Как часто вы работаете с датами в Excel?
Ежедневно
Несколько раз в неделю
Редко
Никогда

2. Функция РАЗНДАТ: дни, месяцы и годы в одном инструменте

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

Синтаксис функции:

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

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

  • "d" — количество дней между датами (включая неполные месяцы).
  • "m" — количество полных месяцев.
  • "y" — количество полных лет.
  • "yd" — дни с учётом годов (например, разница между 01.01.2023 и 15.03.2026 вернёт 74 дня, так как полный год уже учтён).
  • "md" — дни с учётом месяцев (игнорирует годы).
  • "ym" — месяцы с учётом лет (игнорирует дни).

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

=РАЗНДАТ(A1; СЕГОДНЯ(); "y") & " лет и " & РАЗНДАТ(A1; СЕГОДНЯ(); "ym") & " месяцев"
Единица измерения Пример формулы Результат для дат
01.01.202315.03.2026
"d" =РАЗНДАТ(A1; B1; "d") 439 дней
"m" =РАЗНДАТ(A1; B1; "m") 14 месяцев
"y" =РАЗНДАТ(A1; B1; "y") 1 год
"yd" =РАЗНДАТ(A1; B1; "yd") 74 дня (с учётом полного года)
⚠️ Внимание: Функция РАЗНДАТ не учитывает високосные годы при подсчёте дней в формате "yd". Для точных расчётов используйте комбинацию с "d".

3. Рабочие дни: исключаем выходные и праздники

Для расчёта рабочих дней (исключая субботу и воскресенье) в Excel есть специальная функция ЧИСТРАБДНИ (NETWORKDAYS). Она учитывает стандартный 5-дневный рабочий график и optionally позволяет исключить дополнительные праздничные дни.

Синтаксис:

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

Пример: подсчёт рабочих дней между 01.01.2026 (ячейка A1) и 31.01.2026 (ячейка B1), исключая 7 января (праздник в ячейке C1):

=ЧИСТРАБДНИ(A1; B1; C1)
  • 📆 Для учёта нескольких праздников укажите диапазон ячеек, например C1:C5.
  • 🏢 Если в вашей компании нестандартные выходные (например, пятница и суббота), используйте ЧИСТРАБДНИ.МЕЖД (NETWORKDAYS.INTL), где можно задать свои выходные дни через код.
  • ⏳ Для расчёта часов между датами умножьте результат на 8 (при 8-часовом рабочем дне): =ЧИСТРАБДНИ(A1; B1)*8.

Коды выходных для ЧИСТРАБДНИ.МЕЖД:

  • 1 — суббота и воскресенье (стандарт).
  • 2 — воскресенье и понедельник.
  • 11 — только воскресенье.
  • 17 — пятница и суббота (для стран с выходными в эти дни).

Убедитесь, что даты в формате "Дата"|Проверьте список праздников на актуальность|Используйте абсолютные ссылки для диапазона праздников (например, $C$1:$C$10)|Применяйте условное форматирование для выделения выходных дней-->

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

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

Пример: в ячейке A110.05.2026 09:30 (начало), в B110.05.2026 14:45 (окончание). Формула:

=B1-A1

По умолчанию Excel покажет результат в формате даты. Чтобы отобразить его как время:

  1. Выделите ячейку с результатом.
  2. Нажмите Ctrl+1 (или правая кнопка → Формат ячеек).
  3. Выберите категорию Время и укажите формат 37:30:55 (для отображения часов > 24).

Для выделения отдельно часов, минут или секунд используйте функции:

  • =ЧАС(B1-A1) — возвращает часы.
  • =МИНУТЫ(B1-A1) — возвращает минуты.
  • =СЕКУНДЫ(B1-A1) — возвращает секунды.
⚠️ Внимание: При работе с временными интервалами > 24 часов Excel может сбросить отображение до 00:00:00. Всегда проверяйте формат ячейки!
Как посчитать время с учётом ночных смен?

Если ваша смена начинается в 22:00 и заканчивается в 06:00 следующего дня, используйте формулу:

=ЕСЛИ(B1

где +1 добавляет полные сутки к времени окончания, если оно меньше времени начала.

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

Для точных расчётов с учётом високосных лет (например, при планировании долговременных проектов) стандартные функции могут давать погрешности. В таких случаях помогает комбинация РАЗНДАТ и ДАТА.

Пример: расчёт точного количества дней между 28.02.2020 (високосный год) и 28.02.2026:

=РАЗНДАТ("28.02.2020"; "28.02.2026"; "d")
Результат: 1461 день (включая 29 февраля 2020 года).

Для нестандартных периодов (например, "3 месяца и 15 дней") используйте функцию ДАТА для сдвига даты:

=ДАТА(ГОД(A1); МЕСЯЦ(A1)+3; ДЕНЬ(A1)+15)
  • 🗓️ Чтобы узнать, является ли год високосным, используйте формулу:
    =ЕСЛИ(ИЛИ(ОСТАТ(GOD(A1);400)=0; И(ОСТАТ(GOD(A1);4)=0; ОСТАТ(GOD(A1);100)<>0)); "Високосный"; "Не високосный")
  • 🔄 Для циклических расчётов (например, "каждые 90 дней") используйте =A1+90.

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

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

  • 🚫 Ошибка ######: Возникает, если ширина столбца недостаточна для отображения даты. Растяните столбец или измените формат на Краткий формат даты.
  • 📉 Некорректная разница: Проверьте, что обе даты в одном формате (например, не смешивайте ДД.ММ.ГГГГ и ММ/ДД/ГГГГ). Используйте Формат ячеек для унификации.
  • Время сбрасывается: При копировании данных из внешних источников время может обнуляться. Используйте ТЕКСТ.ПОСЛЕ() или ЛЕВСИМВ() для извлечения времени из строк.
  • 🔢 Функция не работает: Убедитесь, что в настройках Excel включена поддержка 1904 года (в некоторых версиях это влияет на расчёты). Проверьте в Файл → Параметры → Дополнительно → При переходе на эту книгу → Использовать систему дат 1904.

Если вы импортируете даты из CSV или PDF, они могут распознаваться как текст. Чтобы преобразовать их в даты:

  1. Выделите проблемные ячейки.
  2. Перейдите в Данные → Текст по столбцам → Готово.
  3. Примените формат Дата.

7. Автоматизация: динамические расчёты с учётом текущей даты

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

Примеры:

  • Дней до события:
    =A1-СЕГОДНЯ()
    где A1 — дата события.
  • Процент выполнения по времени:
    =МИН(1; (СЕГОДНЯ()-A1)/(B1-A1))
    где A1 — дата начала, B1 — дата окончания.
  • Автоматическое оповещение: Комбинация с ЕСЛИ для выделения просроченных задач:
    =ЕСЛИ(B1<СЕГОДНЯ(); "Просрочено"; "В срок")

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

  1. Выделите ячейки с датами.
  2. Перейдите в Главная → Условное форматирование → Правила выделения ячеек → Меньше.
  3. Укажите =СЕГОДНЯ() и выберите красный цвет для просроченных дат.

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

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

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

=ЦЕЛОЕ((B1-A1)/7)
где A1 и B1 — начальная и конечная даты. Для остатка дней (например, "3 недели и 2 дня") добавьте:
=ОСТАТ(B1-A1; 7)
❓ Почему функция РАЗНДАТ возвращает ошибку #ИМЯ?

Это происходит из-за опечатки в названии функции или неверного разделителя аргументов. В русскоязычной версии Excel используйте точку с запятой (;), а не запятую:

=РАЗНДАТ(A1; B1; "d")

Если проблема остаётся, проверьте региональные настройки в Панель управления → Язык и региональные стандарты.

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

Да, просто вычтите одно значение из другого:

=B1-A1

И примените формат [ч]:мм:сс (с квадратными скобками), чтобы корректно отобразить часы > 24.

❓ Как исключить из расчёта конкретные дни недели (например, среды)?

Используйте комбинацию ЧИСТРАБДНИ.МЕЖД с пользовательским шаблоном выходных. Например, чтобы исключить среды и выходные:

  1. Создайте строку из 7 символов, где 1 — рабочий день, 0 — выходной: 1101111 (0 — среда).
  2. Примените формулу:
    =ЧИСТРАБДНИ.МЕЖД(A1; B1; "1101111")
❓ Почему при копировании формулы с датами результат не меняется?

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

=B1-A1  // относительные

=B$1-A$1 // абсолютные по строке

Или проверьте, не включён ли режим Показать формулы (Ctrl+`).