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

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

Мы рассмотрим не только стандартные функции вроде DATEDIF, но и малоизвестные приёмы для нетипичных задач: например, как посчитать количество полных месяцев между двумя датами или исключить из расчёта конкретные дни недели. Особое внимание уделим распространённым ошибкам, из-за которых Excel выдаёт некорректные результаты, и покажем, как их избежать. Если вы когда-либо получали вместо разницы между датами странное число вроде 44197 — эта инструкция для вас.

Для наглядности все примеры сопровождаются скриншотами (в текстовом формате) и готовыми формулами, которые можно скопировать в свою таблицу. А в конце статьи вы найдёте FAQ с ответами на самые частые вопросы — от форматирования ячеек до расчёта возраста по дате рождения.

Почему Excel показывает даты как числа и как это исправить

Перед тем как приступать к расчётам, важно понять, как Excel хранит даты. Внутри программы любая дата — это просто число, где 1 соответствует 1 января 1900 года (в Windows) или 1904 года (в Mac). Например, дата 10.05.2026 в числовом формате будет выглядеть как 45412. Этот нюанс объясняет, почему при вычитании одной даты из другой вы получаете целое число — количество дней между ними.

Если вместо привычной даты в ячейке отображается число (например, 44197), это означает, что у ячейки установлен общий формат (Общий). Чтобы исправить:

  • 📅 Выделите ячейку или диапазон с датами.
  • 🖱️ Нажмите правой кнопкой мыши и выберите Формат ячеек (или используйте сочетание Ctrl+1).
  • 📊 В открывшемся окне перейдите на вкладку Число и выберите формат Дата (например, 14.03.2001).

Критическая ошибка: если вы введёте дату в ячейку с текстовым форматом (например, 10/05/2026), Excel воспримет её как текст, и формулы не будут работать. Всегда проверяйте формат ячейки перед расчётами!

Чтобы быстро проверить, распознаёт ли Excel вашу запись как дату, попробуйте изменить ширину столбца: если значение выравнивается по правому краю — это число (дату можно форматировать), если по левому — текст (нужно исправить ввод).

📊 Как часто вы работаете с датами в Excel?
Ежедневно
Несколько раз в неделю
Редко
Никогда

Способ 1: Простое вычитание дат (разница в днях)

Самый базовый метод — вычесть одну дату из другой. Excel автоматически вернёт разницу в днях. Например, если в ячейке A1 указана дата начала проекта (01.01.2026), а в B1 — дата окончания (31.01.2026), формула будет такой:

=B1-A1

Результат: 30 (количество дней между датами). Этот способ подходит для большинства задач, где нужна календарная разница, например:

  • 📦 Сроки доставки товара.
  • 📅 Продолжительность акций или распродаж.
  • ⏳ Время выполнения задачи в трекере.

Однако у метода есть ограничения:

⚠️ Внимание: Если результат отрицательный (например, -15), это означает, что дата в первой ячейке позже, чем во второй. Чтобы избежать путаницы, используйте функцию ABS для получения абсолютного значения: =ABS(B1-A1).

Для удобства можно добавить к результату поясняющий текст. Например, чтобы вывести не просто 30, а 30 дней, используйте функцию CONCATENATE (или оператор &):

=B1-A1 & " дней"

☑️ Подготовка к расчёту разницы дат

Выполнено: 0 / 4

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

Функция DATEDIF (от англ. Date Difference) — самый мощный инструмент для работы с временными интервалами в Excel. Она позволяет вычислить разницу не только в днях, но и в полных годах, месяцах или комбинациях. Синтаксис функции:

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

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

  • "D" — разница в днях.
  • "M" — разница в полных месяцах.
  • "Y" — разница в полных годах.
  • "YM" — разница в месяцах без учёта лет (например, между 01.01.2023 и 15.03.2023 вернёт 2).
  • "MD" — разница в днях без учёта месяцев и лет.
  • "YD" — разница в днях без учёта годов (используется редко).

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

Задача Формула Результат для дат
01.01.2020 и 15.03.2023
Полных лет =DATEDIF(A1; B1; "Y") 3
Полных месяцев =DATEDIF(A1; B1; "M") 38
Дней без учёта лет =DATEDIF(A1; B1; "MD") 14 (разница между 1 и 15 марта)
Общий стаж (лет и месяцев) =DATEDIF(A1; B1; "Y") & " лет, " & DATEDIF(A1; B1; "YM") & " мес." 3 лет, 2 мес.

⚠️ Внимание: Функция DATEDIF не документирована в официальной справке Excel, но работает во всех версиях программы. Однако она может выдавать ошибку #ЧИСЛО!, если начальная дата позже конечной. Всегда проверяйте порядок аргументов!

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

=DATEDIF(дата_рождения; TODAY(); "Y")

Эта формула автоматически обновляется при открытии файла, показывая актуальный возраст.

Способ 3: Функция DAYS — альтернатива простому вычитанию

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

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

Преимущества DAYS перед простым вычитанием:

  • 🔍 Более читаемый код (ясно, что формула возвращает дни).
  • 🛡️ Меньше риск ошибок при копировании формул (порядок аргументов интуитивен).
  • 📊 Работает с датами в текстовом формате (например, ="10.05.2026"), если они корректно распознаются.

Пример:

=DAYS("31.12.2026"; "01.01.2026")

Результат: 365 (количество дней в 2026 году).

Обратите внимание, что DAYS не учитывает время — если в ячейках указаны дата и время (например, 10.05.2026 14:30), функция проигнорирует временную часть. Для расчёта разницы с учётом часов и минут используйте простое вычитание (=B1-A1) и настройте формат ячейки как [ч]:мм.

Почему функция DAYS может возвращать отрицательное значение?

Если конечная дата раньше начальной, функция вернёт отрицательное число дней. Это нормальное поведение, но если вам нужны только положительные значения, оберните формулу в ABS: =ABS(DAYS(B1; A1)).

Способ 4: Расчёт рабочих дней (исключая выходные и праздники)

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

  • NETWORKDAYS — учитывает только выходные (по умолчанию суббота и воскресенье).
  • NETWORKDAYS.INTL — позволяет задать свои выходные дни (например, пятница и суббота для стран Ближнего Востока).

Синтаксис NETWORKDAYS:

=NETWORKDAYS(начальная_дата; конечная_дата; [праздники])

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

Пример: посчитаем рабочие дни между 01.01.2026 и 31.01.2026, исключив Новогодние каникулы (01.01.202608.01.2026):

=NETWORKDAYS("01.01.2026"; "31.01.2026"; {"01.01.2026"; "02.01.2026"; "03.01.2026"; "04.01.2026"; "05.01.2026"; "06.01.2026"; "07.01.2026"; "08.01.2026"})

Результат: 17 (из 31 дня в январе 2026 года только 17 рабочих).

Для NETWORKDAYS.INTL добавлен параметр выходные, где можно указать:

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

⚠️ Внимание: Если в аргументе [праздники] указана дата, которая и так является выходным (например, суббота), она не будет учтена повторно. Функция сначала исключает выходные, а затем праздники из оставшихся дней.

Для автоматизации можно создать отдельный лист с праздничными датами и ссылаться на него в формуле. Например, если праздники перечислены в диапазоне Праздники!A2:A10, формула примет вид:

=NETWORKDAYS(A1; B1; Праздники!A2:A10)

Способ 5: Расчёт периодов с учётом времени (часы, минуты, секунды)

Если в ваших данных указаны не только даты, но и время (например, 10.05.2026 09:30), простое вычитание вернёт разницу в днях с дробной частью, где дробь — это доля суток. Чтобы преобразовать её в часы, минуты или секунды, используйте:

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

Пример: если в A1 указано 10.05.2026 09:00, а в B110.05.2026 17:30, формула =(B1-A1)*24 вернёт 8,5 (8 часов 30 минут).

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

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

Для расчёта ночных смен или интервалов, пересекающих полночь, этот метод незаменим. Например, если смена началась в 22:00 10.05.2026 и закончилась в 06:00 11.05.2026, формула вернёт 8:00, а не ошибочные -16:00.

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

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

  1. Текст вместо даты: Если дата введена как текст (например, '10.05.2026 с апострофом), Excel не распознаёт её как дату. Решение: Используйте функцию ДАТАЗНАЧ для преобразования:
    =ДАТАЗНАЧ("10.05.2026")
  2. Неправильный порядок дат: Формулы вроде DATEDIF или DAYS возвращают ошибку, если начальная дата позже конечной. Решение: Проверяйте порядок аргументов или используйте ABS.
  3. Формат ячейки: Результат вычитания дат отображается как дата (например, 30.01.1900 вместо 30). Решение: Установите для ячейки формат Общий или Числовой.
  4. Високосные годы: Функции вроде DATEDIF корректно учитывают високосные годы (например, 2026), но при ручных расчётах их легко упустить. Решение: Полностью полагайтесь на встроенные функции.

Ещё одна частая проблема — разные системы дат в Excel для Windows и Mac. В Windows отсчёт идёт с 01.01.1900 (система 1900), а в Mac по умолчанию может использоваться система 1904. Чтобы проверить:

  1. Перейдите в Файл → Параметры → Дополнительно.
  2. Посмотрите параметр При переходе на другую книгуИспользовать систему дат 1904. Если галочка стоит, снимите её для совместимости.

⚠️ Внимание: Если вы работаете с файлом, созданным на Mac, в Windows даты могут сдвинуться на 4 года (1462 дня). Всегда уточняйте систему дат при совместной работе!

Практические примеры: от стажа до сроков годности

Разберём реальные задачи, где расчёт периодов между датами критически важен.

1. Расчёт стажа сотрудника:

Допустим, в A2 указана дата приёма на работу (15.06.2018), а в B2 — текущая дата (=TODAY()). Формула для стажа в формате "X лет Y месяцев":

=DATEDIF(A2; B2; "Y") & " лет, " & DATEDIF(A2; B2; "YM") & " мес."

Результат: 5 лет, 10 мес. (для мая 2026 года).

2. Срок годности продукта:

Если в A1 указана дата производства (01.03.2026), а в B1 — срок годности в днях (90), формула для даты истечения:

=A1+B1

Формат ячейки установите как Дата. Результат: 29.05.2026.

3. Анализ времени выполнения задач:

В проекте указаны даты начала (C2) и окончания (D2) задач. Чтобы посчитать среднее время выполнения для 10 задач:

=AVERAGE(D2:D11 - C2:C11)

Установите для ячейки с формулой формат Числовой (среднее в днях).

4. Контроль дедлайнов:

Если в E2 указана дата дедлайна (30.06.2026), а в F2 — текущая дата (=TODAY()), формула для отображения оставшихся дней с предупреждением:

=IF(E2-F2<=3; "Срочно! Осталось " & E2-F2 & " дней"; E2-F2 & " дней")

Если до дедлайна 3 дня или меньше, ячейка отобразит "Срочно! Осталось 2 дней".

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

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

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

=ЦЕЛОЕ(DATEDIF(A1; B1; "D")/7)

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

=DATEDIF(A1; B1; "D")/7

Установите для ячейки формат с 2 десятичными знаками.

Почему функция DATEDIF возвращает #ЧИСЛО!?

Ошибка #ЧИСЛО! возникает в трёх случаях:

  1. Начальная дата позже конечной.
  2. Один из аргументов не является датой (например, текст).
  3. Неправильный третий аргумент (например, опечатка в "YM").

Проверьте порядок дат и формат ячеек.

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

Для этого придётся использовать массив формул. Пример для исключения сред (3 — среда в функции WEEKDAY):

=SUMPRODUCT(--(WEEKDAY(ROW(INDIRECT(A1&":"&B1)))<>3))

Где A1 и B1 — начальная и конечная даты. Функция вернёт количество дней, кроме сред.

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

Да, с помощью комбинации функций YEAR и MONTH:

= (ГОД(B1) - ГОД(A1)) * 4 + ЦЕЛОЕ((МЕСЯЦ(B1) - 1) / 3) - ЦЕЛОЕ((МЕСЯЦ(A1) - 1) / 3)

Формула вернёт разницу в кварталах (например, между 01.01.2023 и 15.05.2023 будет 1 квартал).

Как посчитать возраст с учётом месяца (например, 2 года и 3 месяца)?

Используйте вложенные функции DATEDIF:

=DATEDIF(дата_рождения; TODAY(); "Y") & " г. " & DATEDIF(дата_рождения; TODAY(); "YM") & " мес."

Для точности можно добавить дни:

=DATEDIF(A1; TODAY(); "Y") & " г. " & DATEDIF(A1; TODAY(); "YM") & " мес. " & DATEDIF(A1; TODAY(); "MD") & " дн."