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

Вычисление разницы между двумя датами в Microsoft Excel — одна из самых востребованных задач при работе с временными данными. Будь то расчёт стажа сотрудников, сроков выполнения проектов или анализ временных интервалов между событиями, умение правильно оперировать датами экономит часы ручной работы. Однако даже опытные пользователи иногда сталкиваются с неожиданными результатами: почему формула показывает неверное количество месяцев? Как учесть только рабочие дни? И почему Excel вдруг возвращает ошибку #ЧИСЛО! вместо ожидаемого значения?

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

Почему простая разность дат не всегда работает

На первый взгляд, вычесть одну дату из другой в Excel проще простого: достаточно ввести формулу =B2-A2, где A2 — начальная дата, а B2 — конечная. Однако этот метод даёт корректный результат только для дней. Если вам нужны месяцы или годы, придётся использовать специализированные функции — иначе Excel вернёт значение в формате даты (например, 01.01.1900 вместо ожидаемых 365 дней).

Ещё одна ловушка — формат ячеек. Если ячейка с результатом отформатирована как "Общий" или "Текстовый", Excel может отобразить разницу в виде числа (например, 44197 вместо 365 дней). Это связано с внутренним представлением дат в программе: каждая дата хранится как количество дней, прошедших с 1 января 1900 года. Чтобы избежать путаницы, всегда проверяйте формат ячейки с результатом.

  • 📅 Проблема 1: Формула =B2-A2 возвращает дату вместо количества дней → решение: измените формат ячейки на "Числовой" или "Общий".
  • 🔄 Проблема 2: Разница в месяцах показывает неверное значение (например, между 31 января и 1 марта) → решение: используйте функцию DATEDIF с параметром "m".
  • ⚠️ Проблема 3: Ошибка #ЧИСЛО! при вычитании → решение: проверьте, что обе ячейки содержат корректные даты (не текст!).
⚠️ Внимание: Если в вашей таблице даты хранятся как текст (например, после импорта из CSV), Excel не сможет вычислить разницу. Преобразуйте их в формат даты с помощью функции ДАТАЗНАЧ или инструмента "Текст по столбцам".

Способ 1: Разница в днях (базовый метод)

Самый простой способ узнать количество дней между двумя датами — вычесть одну дату из другой. Этот метод работает в Excel 2007–2023 и Excel Online, не требует дополнительных функций и подходит для 90% задач, где нужна точность до дня.

Формула:

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

Пример: если в ячейке A2 указана дата начала проекта 15.05.2026, а в B2 — дата завершения 30.06.2026, формула будет:

=B2-A2

Результат: 46 (дней).

Начальная дата (A2) Конечная дата (B2) Формула Результат (дней)
15.05.2026 30.06.2026 =B2-A2 46
01.01.2026 01.01.2026 =B2-A2 366 (високосный год)
10.12.2023 10.01.2026 =B2-A2 31

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

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

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

📊 Как часто вы рассчитываете разницу между датами в Excel?
Ежедневно
Несколько раз в неделю
Рядом
Первый раз

Способ 2: Функция DATEDIF — универсальный инструмент

Функция DATEDIF (от англ. Date Difference) — это "секретное оружие" Excel для работы с датами. Она позволяет вычислить разницу в днях ("d"), месяцах ("m") или годах ("y"), а также комбинировать эти единицы. Несмотря на то, что DATEDIF не отображается в списке функций Excel (её нет в мастер-списке), она работает во всех версиях программы, включая Excel 365 и Excel для Mac.

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

=DATEDIF(начальная_дата; конечная_дата; единица_измерения)

Где единица_измерения может принимать следующие значения:

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

Примеры использования:

=DATEDIF(A2; B2; "y")  // Количество полных лет

=DATEDIF(A2; B2; "ym") // Месяцы с момента последнего дня рождения

=DATEDIF(A2; B2; "md") // Дни с момента последнего месяца

⚠️ Внимание: Функция DATEDIF округляет результаты вниз. Например, разница между 31.12.2023 и 01.01.2026 при параметре "m" будет 0 (нет полного месяца), а не 1, как могло бы показаться.

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

Проверьте порядок дат (начальная дата должна быть раньше конечной)

Выберите правильный параметр ("d", "m", "y" и т.д.)

Отформатируйте ячейку с результатом как "Числовой"-->

Способ 3: Разница в месяцах и годах с учётом неполных периодов

Если вам нужно получить точную разницу в годах и месяцах (например, для расчёта стажа в формате "2 года 3 месяца"), одного DATEDIF будет недостаточно. В этом случае комбинируйте несколько функций:

Формула для вывода в формате "X лет Y месяцев":

=DATEDIF(A2; B2; "y") & " лет " & DATEDIF(A2; B2; "ym") & " месяцев"

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

=DATEDIF(A2; B2; "y") & " г. " & DATEDIF(A2; B2; "ym") & " мес. " & DATEDIF(A2; B2; "md") & " дн."

Пример результата: 1 г. 2 мес. 15 дн.

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

=ГОД(B2)-ГОД(A2)+(МЕСЯЦ(B2)-МЕСЯЦ(A2))/12+(ДЕНЬ(B2)-ДЕНЬ(A2))/365

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

Как Excel обрабатывает 29 февраля в високосные годы?

При вычитании дат Excel корректно учитывает високосные годы. Например, разница между 28.02.2023 и 28.02.2026 составит 366 дней (2026 год — високосный). Однако функция DATEDIF с параметром "md" может давать неожиданные результаты для дат в феврале. Например, DATEDIF("28.02.2026"; "01.03.2026"; "md") вернёт 2 (а не 1), потому что 29 февраля 2026 года существует.

Способ 4: Рабочие дни и праздники (ЧИСТРАБДНИ, РАБДЕНЬ)

Для бизнес-задач часто требуется посчитать только рабочие дни, исключив выходные и праздники. В Excel для этого есть две функции:

  • ЧИСТРАБДНИ — возвращает количество рабочих дней между двумя датами;
  • РАБДЕНЬ — добавляет заданное количество рабочих дней к дате (полезно для расчёта дедлайнов).

Пример использования ЧИСТРАБДНИ:

=ЧИСТРАБДНИ(A2; B2; [Праздники])

Где [Праздники] — необязательный диапазон с датами праздников. Например, если в ячейках D2:D10 перечислены праздничные даты, формула примет вид:

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

Функция РАБДЕНЬ пригодится, чтобы узнать дату завершения проекта с учётом только рабочих дней. Например, если задача должна быть выполнена за 10 рабочих дней начиная с 01.06.2026:

=РАБДЕНЬ("01.06.2026"; 10; D2:D10)

Результат: 17.06.2026 (с учётом выходных и праздников из диапазона D2:D10).

⚠️ Внимание: Функции ЧИСТРАБДНИ и РАБДЕНЬ считают субботу и воскресенье выходными по умолчанию. Если у вас другой график (например, рабочая суббота), используйте функцию ЧИСТРАБДНИ.МЕЖД (доступна в Excel 2013 и новее), где можно задать собственные выходные дни.

Способ 5: Продвинутые техники (Power Query, VBA)

Если вам нужно обработать тысячи строк с датами или создать сложные отчёты, стандартных функций Excel может быть недостаточно. В этом случае на помощь приходят:

  • 🔧 Power Query — для импорта и преобразования данных с датами (например, объединение таблиц по временным интервалам);
  • 🖥️ VBA — для создания пользовательских функций (например, расчёт разницы с учётом производственного календаря);
  • 📊 Сводные таблицы — для группировки данных по годам, кварталам или месяцам.

Пример пользовательской функции на VBA для расчёта разницы в годах с учётом доли месяца:

Function YearsBetween(startDate As Date, endDate As Date) As Double

YearsBetween = DateDiff("yyyy", startDate, endDate) _

+ (DateDiff("m", startDate, endDate) Mod 12) / 12 _

+ (Day(endDate) - Day(startDate)) / 365

End Function

Чтобы использовать эту функцию:

  1. Нажмите Alt + F11, чтобы открыть редактор VBA.
  2. Вставьте код в новый модуль (Insert → Module).
  3. Сохраните файл как .xlsm (с поддержкой макросов).
  4. Теперь в Excel можно использовать =YearsBetween(A2; B2).

Для работы с Power Query:

  1. Перейдите на вкладку Данные → Получить данные → Из таблицы/диапазона.
  2. В редакторе Power Query добавьте столбец с разницей дат: Добавить столбец → Пользовательский.
  3. Введите формулу: = Duration.Days([EndDate] - [StartDate]).

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

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

Ошибка Причина Решение
#ЧИСЛО! Некорректный формат даты (текст вместо даты) Используйте ДАТАЗНАЧ или преобразуйте формат ячейки
#ЗНАЧ! Ячейка содержит текст или пустая Проверьте данные с помощью ЕЧИСЛО или ЕПУСТО
Неверное количество месяцев (например, 0 вместо 1) DATEDIF округляет вниз Используйте комбинацию параметров ("y", "ym", "md")
Отрицательное значение Начальная дата позже конечной Поменяйте местами даты или используйте АБС

Ещё одна частая проблема — несоответствие форматов дат в разных региональных настройках. Например, в американском формате дата 05.06.2026 интерпретируется как 5 июня, а в европейском — как 6 мая. Чтобы избежать путаницы:

  • Используйте функцию ДАТА для явного указания дня, месяца и года: =ДАТА(2026; 6; 5);
  • Или применяйте ДАТАЗНАЧ для преобразования текста в дату: =ДАТАЗНАЧ("05-06-2026").

Важно: Excel хранит даты как числа, где 1 соответствует 01.01.1900. Поэтому если вы видите в ячейке число вместо даты, просто измените формат на "Дата".

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

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

Да, для этого вычтите одно значение даты-времени из другого. Например, если в A2 записано 01.06.2026 10:00, а в B202.06.2026 14:30, формула =B2-A2 вернёт 1,1875 (1 день и 4,5 часа). Чтобы отобразить результат в часах, умножьте на 24: =(B2-A2)*24.

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

Используйте формулу: =ЦЕЛОЕ((B2-A2)/7) для полных недель или =ОКРУГЛВВЕРХ((B2-A2)/7; 0) для округления вверх. Если нужно учесть, что неделя начинается с понедельника, используйте: =ЧИСТРАБДНИ(A2; B2;)/5*7 (приблизительный расчёт).

Почему функция DATEDIF не показывает в списке функций Excel?

DATEDIF — это "унаследованная" функция, оставшаяся для совместимости с Lotus 1-2-3. Она не документирована в новых версиях Excel, но продолжает работать. Чтобы её использовать, вводите название вручную.

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

Используйте комбинацию: =DATEDIF(A2; ТДАТА(); "y") для полных лет. Чтобы получить точный возраст с учётом месяцев и дней: =DATEDIF(A2; ТДАТА(); "y") & " лет, " & DATEDIF(A2; ТДАТА(); "ym") & " мес., " & DATEDIF(A2; ТДАТА(); "md") & " дн.", где A2 — дата рождения.

Можно ли в Excel посчитать разницу между датами с учётом часового пояса?

Нет, Excel не поддерживает часовые пояса напрямую. Если вам нужно учитывать разницу во времени, предварительно приведите все даты к одному часовому поясу (например, с помощью формул или Power Query).