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

Почему расчёт дней в Excel — это не тривиальная задача

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

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

Базовый метод: функция ДАТАРАЗН (DATEDIF)

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

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

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

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

  • 📅 "D" — количество дней (полная разница)
  • 📆 "M" — количество полных месяцев
  • 📅 "Y" — количество полных лет
  • 📌 "YM" — месяцы без учёта лет
  • 📌 "MD" — дни без учёта месяцев и лет
  • 📌 "YD" — дни без учёта годов

Пример: чтобы узнать, сколько дней прошло с 01.01.2023 до 15.03.2023, используйте:

=ДАТАРАЗН("01.01.2023"; "15.03.2023"; "D")

Результат: 73 дня.

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

В Excel даты хранятся как числа (количество дней с 01.01.1900), поэтому их можно вычитать напрямую. Этот метод работает быстрее, чем ДАТАРАЗН, если нужна только разница в днях.

Пример:

=B2-A2

Где A2 — ячейка с начальной датой, а B2 — с конечной. Результат будет в числовом формате. Чтобы отобразить его как дни, измените формат ячейки на Общий.

Начальная дата (A2) Конечная дата (B2) Формула Результат
10.05.2023 20.05.2023 =B2-A2 10
01.01.2023 31.12.2023 =B2-A2 364
15.02.2023 15.03.2023 =ДАТАРАЗН(A2;B2;"D") 28

⚠️ Внимание: Если конечная дата раньше начальной, результат будет отрицательным. Чтобы избежать ошибок, используйте функцию АБС:

=АБС(B2-A2)
📊 Какой метод подсчёта дней вы используете чаще?
Вычитание дат
Функция ДАТАРАЗН
Другие функции
Не знаю

Учёт рабочих дней: функции ЧИСТРАБДНИ и РАБДЕНЬ

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

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

Синтаксис ЧИСТРАБДНИ:

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

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

Пример: подсчёт рабочих дней с 01.06.2023 по 30.06.2023 без учёта праздников:

=ЧИСТРАБДНИ("01.06.2023"; "30.06.2023")

Результат: 21 рабочий день (июнь 2023 года имеет 30 дней, из них 8 выходных).

Как добавить праздники в расчёт?

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

=ЧИСТРАБДНИ("01.06.2023"; "30.06.2023"; D2:D10)

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

Продвинутый уровень: ЧИСТРАБДНИ.МЕЖД для нестандартных графиков

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

  • 🏭 Сменного графика (например, 2 через 2).
  • 🌍 Стран с нестандартными выходными (например, ОАЭ — пятница-суббота).
  • 🏥 Организаций с круглосуточным режимом (выходные по скользящему графику).

Синтаксис:

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

Аргумент [выходные] может быть:

  • 🔢 Числом (например, 1 — суббота-воскресенье, 11 — только воскресенье).
  • 📜 Строкой (например, "0000011", где 1 — выходной, 0 — рабочий день, начиная с понедельника).

Пример: подсчёт рабочих дней для графика "пятница-суббота" (как в ОАЭ):

=ЧИСТРАБДНИ.МЕЖД("01.06.2023"; "30.06.2023"; "0000110")

Создать список праздников в отдельном диапазоне

Проверить формат ячеек с датами (должен быть "Дата")

Выбрать правильную функцию (ЧИСТРАБДНИ или ЧИСТРАБДНИ.МЕЖД)

Указать выходные дни (если график нестандартный)

-->

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

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

Пример: расчёт разницы между 01.06.2023 14:30 и 05.06.2023 09:15:

  1. Введите даты с временем в ячейки A2 и B2.
  2. Используйте формулу: =B2-A2.
  3. Измените формат ячейки на [ч]:мм:сс (для отображения часов) или д.м.гг ч:мм (для дней и времени).

Результат: 3 дня 18 часов 45 минут.

⚠️ Внимание: Если даты введены как текст (например, "01.06.2023 14:30"), Excel воспримет их как строки, а не как даты. Используйте функцию ДАТАЗНАЧ для преобразования:

=ДАТАЗНАЧ("01.06.2023 14:30")

Ошибки и ловушки: почему Excel считает дни неправильно

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

  1. Формат ячеек: Даты хранятся как числа, но отображаются в формате даты. Если ячейка имеет формат Текст или Общий, Excel не распознает её как дату.
  2. Двузначные годы: Ввод даты как 01.06.23 может быть интерпретирован как 1923 или 2023 год в зависимости от настроек системы.
  3. Високосные годы: Функции Excel автоматически учитывают високосные годы (например, 2026), но ошибки могут возникнуть при ручном вводе дат.
  4. Часовой пояс: Если даты получены из разных источников (например, Google Analytics и ), они могут относиться к разным часовым поясам.

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

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

Как посчитать дни между сегодняшней датой и другой датой?

Используйте функцию СЕГОДНЯ (TODAY):

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

Эта формула вернёт количество дней до конца 2023 года. Обратите внимание: функция СЕГОДНЯ пересчитывается при каждом открытии файла.

Можно ли посчитать дни между датами в Google Таблицах?

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

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

Разделите разницу в днях на 7 и округлите в меньшую сторону:

=ЦЕЛОЕ((B2-A2)/7)

Или используйте функцию ОТБР:

=ОТБР((B2-A2)/7; 0)
Почему результат формулы отображается как ######?

Это означает, что:

  1. Результат слишком большой для ячейки (расширьте столбец).
  2. Формат ячейки неверный (измените на Общий или Дата).
  3. Отрицательное значение (проверьте порядок дат).
Как посчитать дни с учётом только будних дней (понедельник-пятница)?

Используйте функцию ЧИСТРАБДНИ без указания праздников:

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

Она автоматически исключает субботу и воскресенье.