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

Введение: зачем считать дни в Excel и где это применяется

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

В этой статье мы разберём 5 способов посчитать дни между датами — от базовой арифметики до сложных функций с учётом производственного календаря. Вы узнаете, как избежать типичных ошибок (например, с форматом ячеек), как работать с временными метками, и почему иногда проще использовать Power Query, чем формулы. А в конце — FAQ с ответами на самые частые вопросы, включая нюансы для Excel Online и Google Sheets.

Неважно, нужно ли вам посчитать срок исполнения договора, время выполнения задачи или возраст клиента — после прочтения вы сможете сделать это за 2 минуты, не гуглить формулы в интернете.

Способ 1: Базовая формула (простая разница в днях)

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

=КОНДАТА - НАЧДАТА

Где:

  • 📅 КОНДАТА — ячейка с конечной датой (например, B2)
  • 📅 НАЧДАТА — ячейка с начальной датой (например, A2)

Пример: если в A2 стоит 15.05.2026, а в B220.05.2026, формула вернёт 5.

⚠️ Внимание: Если даты введены как текст (например, через копирование из PDF), Excel воспримет их как строки, и формула вернёт ошибку #ЗНАЧ!. Проверьте формат ячеек: выделите диапазон → Главная → Формат → Формат ячеек → Дата.
Сценарий Формула Результат
Простая разница =B2-A2 5 (дней)
Даты в одном столбце (смещение на 1 строку) =A3-A2 7
Разница с сегодняшним днём =СЕГОДНЯ()-A2 12 (актуально на момент расчёта)

Способ 2: Функция ДНИ (DATEDIF для точности)

Функция ДНИ (англ. DAYS) появилась в Excel 2013 и упрощает синтаксис. Она автоматически игнорирует время, если оно указано в ячейках, и всегда возвращает целое число дней:

=ДНИ(НАЧДАТА; КОНДАТА)

Пример:

=ДНИ("10.01.2026"; "15.01.2026")

Вернёт 5.

Для старых версий Excel (2010 и ранее) используйте DATEDIF — "скрытую" функцию, которую Microsoft не документирует, но она работает:

=DATEDIF(НАЧДАТА; КОНДАТА; "D")

Аргумент "D" означает "days" (дни). Эта функция также поддерживает другие единицы:

  • 📆 "M" — полные месяцы между датами
  • 📅 "Y" — полные годы
  • 📊 "YM" — месяцы без учёта лет
Почему DATEDIF не в справке Excel?

Функция DATEDIF была добавлена для совместимости с Lotus 1-2-3 и никогда не документировалась официально. Она работает во всех версиях, но Microsoft рекомендует использовать современные альтернативы типа ДНИ.

Способ 3: Учёт только рабочих дней (исключаем выходные)

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

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

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

=ЧИСТРАБДНИ.МЕЖД(НАЧДАТА; КОНДАТА; [Выходные]; [Праздники])

Пример для рабочей недели с понедельника по пятницу (выходные — суббота и воскресенье):

=ЧИСТРАБДНИ.МЕЖД(A2; B2; 1)

Где 1 — код для стандартных выходных (1 = суббота/воскресенье, 2 = воскресенье/понедельник и т.д.). Полный список кодов:

Код Выходные дни
1 Суббота, воскресенье
2 Воскресенье, понедельник
11 Только воскресенье
17 Пятница, суббота

Чтобы исключить праздники, создайте диапазон с датами (например, D2:D10) и укажите его третьим аргументом:

=ЧИСТРАБДНИ(A2; B2; D2:D10)
📊 Как часто вам нужно считать рабочие дни в Excel?
Ежедневно
Несколько раз в неделю
Редко
Никогда

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

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

  • 🕒 Только дни: =ЦЕЛОЕ(B2-A2)
  • ⏱️ Только время: =B2-A2-ЦЕЛОЕ(B2-A2) (вернёт долю дня, например 0,5 = 12 часов)
  • 📅 Дни + часы в отдельных ячейках:
=ЦЕЛОЕ(B2-A2)  // Дни

=(B2-A2-ЦЕЛОЕ(B2-A2))*24 // Часы

Для преобразования дробной части в минуты или секунды умножайте на 1440 (минуты в дне) или 86400 (секунды).

⚠️ Внимание: При работе с временем убедитесь, что ячейки имеют формат Дата или Общий. Если Excel воспринимает время как текст (например, 14:30 без даты), используйте функцию ВРЕМЗНАЧ для преобразования:
=ВРЕМЗНАЧ("14:30")

☑️ Проверка формата даты/времени

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

Способ 5: Динамический расчёт (с сегодняшней датой)

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

=СЕГОДНЯ()-A2

Эта формула обновится автоматически при каждом открытии файла. Аналогично работает ТДАТА (англ. NOW), но она учитывает ещё и текущее время:

=ТДАТА()-A2

Примеры применения:

  • 📦 Срок хранения продукта: =СЕГОДНЯ()-A2 (где A2 — дата производства)
  • Остаток до дедлайна: =B2-СЕГОДНЯ() (где B2 — дата дедлайна)
  • 📅 Возраст клиента: =ДНИ(A2; СЕГОДНЯ())/365 (приблизительный возраст в годах)

Важно: Функции СЕГОДНЯ и ТДАТА не обновляются вручную — они пересчитываются только при открытии файла или принудительном пересчёте (F9). Если вам нужно зафиксировать текущую дату (например, для отчёта), используйте комбинацию Ctrl + ; (вставит статичную дату).

Распространённые ошибки и как их исправить

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

  1. Ошибка #ЗНАЧ!

    Причина: одна или обе даты введены как текст. Решение: используйте ДАТАЗНАЧ или измените формат ячейки на Дата.

  2. Отрицательное число дней

    Причина: конечная дата раньше начальной. Решение: поменяйте местами аргументы или используйте АБС:

    =АБС(B2-A2)
  3. Неправильный результат из-за времени

    Причина: в ячейках есть временная часть (например, 15.05.2026 00:00 vs 15.05.2026 23:59). Решение: обрежьте время функцией ЦЕЛОЕ или используйте ДНИ.

  4. Ошибка #ИМЯ?

    Причина: опечатка в названии функции (например, ДНЕЙ вместо ДНИ). Решение: проверьте синтаксис.

  5. Некорректный учёт високосных годов

    Причина: ручной расчёт дней через умножение на 365. Решение: всегда используйте функции ДНИ или DATEDIF — они учитывают високосные годы автоматически.

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

Можно ли посчитать дни между датами в Google Sheets?

Да, все описанные функции работают и в Google Sheets, за исключением DATEDIF — там она документирована официально. Синтаксис идентичен, но названия функций на английском:

  • =DAYS(end_date, start_date)
  • =NETWORKDAYS(start_date, end_date, [holidays])
Как посчитать количество месяцев или лет между датами?

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

=DATEDIF(A2; B2; "M")  // Месяцы

=DATEDIF(A2; B2; "Y") // Годы

Для точного расчёта с учётом дней (например, "2 года и 3 месяца") комбинируйте:

=DATEDIF(A2; B2; "Y") & " лет и " & DATEDIF(A2; B2; "YM") & " месяцев"
Почему формула =B2-A2 возвращает дату 01.01.1900 вместо числа?

Это означает, что ячейка с результатом имеет формат Дата. Измените формат на Общий или Числовой:

  1. Выделите ячейку с формулой.
  2. Нажмите Ctrl + 1 (или правая кнопка → Формат ячеек).
  3. Выберите категорию Числовой.
Как посчитать дни с учётом только будних дней и праздников?

Создайте список праздников в отдельном диапазоне (например, D2:D10) и используйте:

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

Для нестандартных выходных (например, пятница-суббота) применяйте ЧИСТРАБДНИ.МЕЖД:

=ЧИСТРАБДНИ.МЕЖД(A2; B2; 7; D2:D10)

Где 7 — код для выходных "пятница-суббота".

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

Да, если использовать таблицы Excel (не путать с диапазонами). Преобразуйте данные в таблицу (Ctrl + T), и формулы будут автоматически расширяться на новые строки. Также можно использовать Power Query для динамических расчётов:

  1. Выделите данные → Данные → Из таблицы/диапазона.
  2. В редакторе Power Query добавьте столбец с формулой (например, = Date.From([Конечная дата]) - Date.From([Начальная дата])).
  3. Загрузите данные обратно в Excel.