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

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

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

Согласно статистике, более 40% ошибок в финансовых моделях Excel связаны с некорректной работой с датами и временем (исследование Spreadsheet Research Group, 2023). Поэтому умение точно рассчитывать интервалы — критичный навык для аналитиков, бухгалтеров и менеджеров проектов.

Базовый метод: простая разность дат

Самый очевидный способ — вычесть одну дату из другой. Если в ячейке A1 указана дата начала события, а в B1 — дата окончания, формула будет выглядеть так:

```excel

=B1-A1

```

Результат отобразится в формате даты, но если выделить ячейку и установить формат Общий или Числовой, вы увидите количество дней между датами. Этот метод работает для календарных дней, включая выходные и праздники.

⚠️ Внимание: Если одна из ячеек содержит текст (например, "01.01.2026" введён как текст, а не дата), Excel вернёт ошибку #ЗНАЧ!. Чтобы избежать этого, используйте функцию ДАТАЗНАЧ() для преобразования текста в дату:

```excel

=ДАТАЗНАЧ("01.01.2026")-ДАТАЗНАЧ("15.12.2023")

```

  • ✅ Работает для любых дат в формате Excel
  • ✅ Не требует дополнительных функций
  • ❌ Учитывает все дни, включая нерабочие
  • ❌ Может давать сбой при текстовом формате дат

Функция ДНИ: универсальный инструмент

Для более надёжного расчёта используйте специализированную функцию ДНИ() (англ. DAYS). Она возвращает количество дней между двумя датами и автоматически обрабатывает текстовые форматы:

```excel

=ДНИ(B1; A1) // или =DAYS(B1, A1) в английской версии

```

Преимущество этой функции в том, что она игнорирует формат ячеек — даже если даты записаны как текст ("1 января 2026"), Excel корректно их распознает. Это особенно полезно при импорте данных из внешних источников, где формат дат может быть нестандартным.

Пример с текстовыми датами:

```excel

=ДНИ("31-дек-2023"; "1-янв-2026")

```

Результат: 1 (один день между этими датами).

Формула Пример Результат Комментарий
=B1-A1 B1=10.01.2026, A1=05.01.2026 5 Простая разность, требует корректного формата дат
=ДНИ(B1; A1) B1="10 января", A1="5 января" 5 Работает с текстовыми датами
=ДНИ("31.12.2023"; "01.01.2026") 1 Корректно обрабатывает переход через год
📊 Какой способ расчёта дней вы используете чаще?
Простая разность (B1-A1)
Функция ДНИ()
Другие функции (ЧИСТРАБДНИ, РАЗНДАТ)
Не знаю, как это делать

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

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

Базовый синтаксис:

```excel

=ЧИСТРАБДНИ(A1; B1)

```

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

```excel

=ЧИСТРАБДНИ(A1; B1; D1:D10)

```

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

Пример с нестандартными выходными

Если выходные — четверг и пятница, используйте:

=ЧИСТРАБДНИ.МЕЖД(A1; B1; 11; D1:D10)

Где 11 — код для выходных в четверг и пятницу (1=воскресенье, 2=понедельник, 4=четверг, 8=пятница; сумма 4+8=12, но 11 используется для комбинации без воскресенья).

  • 📅 Подходит для расчёта сроков выполнения задач
  • 🏢 Учитывает корпоративные праздники
  • ⚙️ Требует ручного ввода праздничных дат
  • 🔄 Не работает с динамическими календарями (например, Пасха)

Учёт часов и минут: функция РАЗНДАТ

Если ваши данные содержат не только даты, но и время (например, "01.01.2026 14:30"), для точного расчёта интервала используйте функцию РАЗНДАТ() (англ. DATEDIF). Она позволяет вычислять разницу в днях, месяцах или годах с учётом времени.

Синтаксис:

```excel

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

```

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

- "d" — дни

- "m" — месяцы

- "y" — годы

- "ym" — месяцы без учёта лет

- "yd" — дни без учёта годов

Пример с временем:

```excel

=РАЗНДАТ("01.01.2026 10:00"; "03.01.2026 18:00"; "d")

```

Результат: 2,33 (2 дня и 8 часов, что эквивалентно 2.33 дням).

Для отдельного выделения часов используйте:

```excel

=РАЗНДАТ(нач_дата; кон_дата; "d") & " дней, " & ТЕКСТ(кон_дата-нач_дата;"ч:мм")

```

Убедитесь, что ячейки имеют формат "Дата" или "Дата и время"|Проверьте, что начальная дата меньше конечной|Для точного расчёта часов используйте формат ячейки "Общий" или "[ч]:мм"|Сравните результат с ручным подсчётом для проверки-->

Продвинутые техники: динамические даты и условные расчёты

Иногда требуется посчитать дни между датами с дополнительными условиями. Например:

- Рассчитать дни только для определённых месяцев.

- Исключить из расчёта периоды простоя.

- Посчитать дни до текущей даты с автоматическим обновлением.

Для таких задач комбинируйте функции ЕСЛИ(), И(), СЕГОДНЯ() и массивы. Пример: подсчёт дней между датами, но только для зимних месяцев (декабрь-февраль):

```excel

=СУММПРОИЗВ(

(МЕСЯЦ(ПОСЛЕДОВАТ(А1; В1-А1))>=12) + (МЕСЯЦ(ПОСЛЕДОВАТ(А1; В1-А1))<=2);

1

)

```

Здесь ПОСЛЕДОВАТ() (англ. SEQUENCE) генерирует массив дат между A1 и B1, а СУММПРОИЗВ() суммирует только те дни, которые попадают в зимние месяцы.

Для динамического расчёта дней до сегодняшней даты используйте:

```excel

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

```

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

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

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

⚠️ Внимание: Если формула возвращает отрицательное число дней, проверьте порядок дат — начальная дата должна быть меньше конечной. Excel не выдаст ошибку, но результат будет некорректным.
  • 🔴 Ошибка #ЗНАЧ!: Одна из ячеек содержит текст, который Excel не распознаёт как дату. Используйте ДАТАЗНАЧ() или проверьте формат ячейки.
  • 🔴 Неверный результат в рабочих днях: Забыли указать праздники в ЧИСТРАБДНИ(). Добавьте диапазон с датами праздников.
  • 🔴 Формула не обновляется: В настройках Excel отключен автоматический пересчёт. Перейдите в Формулы → Параметры вычислений → Автоматически.
  • 🔴 Дробные дни: При расчёте с временем результат отображается в формате даты. Измените формат ячейки на Числовой или [ч]:мм.

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

Практические примеры: задачи из реальной жизни

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

  1. Срок выполнения проекта:

    Задача: Посчитать количество рабочих дней между датой начала проекта (01.03.2026) и дедлайном (31.03.2026), исключая выходные и праздники (8 марта).

    Решение:

    ```excel

    =ЧИСТРАБДНИ("01.03.2026"; "31.03.2026"; "08.03.2026")

    ```

    Результат: 21 рабочий день.

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

    Задача: Определить, сколько дней осталось до истечения срока годности (даты на упаковке: 15.05.2026), если сегодня 10.04.2026.

    Решение:

    ```excel

    =ДАТАЗНАЧ("15.05.2026")-СЕГОДНЯ()

    ```

    Результат будет автоматически уменьшаться каждый день.

  3. Анализ временных затрат:

    Задача: Посчитать, сколько часов ушло на выполнение задачи, если начало — 01.01.2026 09:00, а окончание — 03.01.2026 17:30.

    Решение:

    ```excel

    =(ДАТАЗНАЧ("03.01.2026 17:30")-ДАТАЗНАЧ("01.01.2026 09:00"))*24

    ```

    Результат: 46,5 часов.

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

  1. Выделите ячейку с результатом (например, C1).
  2. Перейдите в Главная → Условное форматирование → Правила выделения ячеек → Меньше....
  3. Укажите значение 5 и выберите красный цвет заполнения.

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

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

В Google Sheets используются те же функции, но с английскими названиями:

  • =DAYS(B1, A1) — аналог ДНИ();
  • =NETWORKDAYS(B1, A1) — аналог ЧИСТРАБДНИ();
  • =DATEDIF(A1, B1, "d") — аналог РАЗНДАТ().

Для русскоязычной версии можно использовать =ДНИ(B1; A1) — Google Таблицы поддерживают оба синтаксиса.

Почему формула возвращает ###### вместо результата?

Это означает, что ячейка слишком узкая для отображения результата. Расширьте столбец или измените формат ячейки на Общий. Также ошибка может возникать, если результат отрицательный (например, конечная дата раньше начальной), а в формате ячейки установлено отображение только положительных значений.

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

Используйте функцию ЦЕЛОЕ() для округления в меньшую сторону:

```excel

=ЦЕЛОЕ((B1-A1)/7)

```

Для округления до ближайшей недели (включая неполную) используйте ОКРУГЛ():

```excel

=ОКРУГЛ((B1-A1)/7; 0)

```

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

Да, в Power Query (вкладка Данные → Получение данных) добавьте пользовательский столбец с формулой:

```excel

= Duration.Days([EndDate] - [StartDate])

```

Где [EndDate] и [StartDate] — названия столбцов с датами. После этого загрузите данные обратно в Excel.

Как учитывать праздники, которые выпадают на выходные?

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