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

Разница между двумя датами в Microsoft Excel вычисляется неверно, если просто вычесть одну ячейку из другой — программа возвращает число с дробной частью (время суток), а не целое количество дней. Чтобы получить точный результат, нужно использовать специализированные функции: РАЗНДАТ, DATEDIF, или комбинацию ДАТА с арифметическими операциями. При этом ошибки возникают даже у опытных пользователей: Excel может игнорировать формат ячеек, учитывать 1900 год как високосный или неправильно обрабатывать отрицательные значения.

Если вам нужно посчитать рабочие дни (без выходных), календарные дни (включая субботу-воскресенье), или точный интервал в годах/месяцах, подходы будут разными. Например, формула =DATEDIF(A1;B1;"D") вернёт полные дни между датами в ячейках A1 и B1, но не учтёт праздники. А функция ЧИСТРАБДНИ исключит субботы-воскресенья, но потребует дополнительного списка официальных нерабочих дней.

Далее разберём все варианты расчётов — от базовых до продвинутых, с учётом особенностей разных версий Excel (2010, 2016, 2019, 365) и Google Таблиц.

1. Базовый метод: вычитание дат

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

Пример:

=B1-A1

где B1 — конечная дата, A1 — начальная. Результат будет в формате числа с дробной частью (например, 15,25 — 15 дней и 6 часов). Чтобы отобразить только целые дни, примените формат ячейки «Общий» или «Числовой» без десятичных знаков.

⚠️ Внимание: Если результат отрицательный (например, -10), это означает, что начальная дата позже конечной. Исправьте порядок ячеек в формуле.

  • ✅ Работает во всех версиях Excel и Google Таблицах.
  • ✅ Не требует дополнительных функций.
  • ❌ Не учитывает рабочие/выходные дни.
  • ❌ Дробная часть (время) может мешать при дальнейших расчётах.

2. Функция РАЗНДАТ (DATEDIF): гибкий расчёт интервалов

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

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

где единица_измерения — это код формата вывода:

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

Пример для дней:

=РАЗНДАТ(A1; B1; "D")
Важно: Функция РАЗНДАТ не отображается в мастер функций Excel (её нужно вводить вручную), но работает во всех версиях, включая Excel 2007 и новее.
Почему РАЗНДАТ не видна в списке функций?

Эта функция осталась в Excel для совместимости с устаревшими программами (например, Lotus 1-2-3). Microsoft не рекомендует её использовать в новых проектах, но она по-прежнему работает стабильно.

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

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

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

Необязательный аргумент [праздники] — это диапазон ячеек с датами официальных нерабочих дней (например, D1:D10).

Пример:

=ЧИСТРАБДНИ(A1; B1; $D$1:$D$5)

где D1:D5 — список праздников (например, 1 января, 8 марта и т.д.).

⚠️ Внимание: Если не указать праздники, функция проигнорирует их. Например, 1 мая будет считаться рабочим днём, если его не добавить в список исключений.

Функция Синтаксис Что учитывает Пример результата
ЧИСТРАБДНИ =ЧИСТРАБДНИ(A1;B1;D1:D5) Выходные + праздники 18 (из 25 календарных дней)
РАЗНДАТ =РАЗНДАТ(A1;B1;"D") Все календарные дни 25
ДЕНЬНЕД =ДЕНЬНЕД(A1;2) День недели (1=воскресенье) 3 (среда)

4. Расчёт дней с учётом текущей даты

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

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

Эта формула вернёт количество дней между датой в ячейке A1 и текущей датой. Важно: Результат будет автоматически обновляться при каждом открытии файла.

Если нужно зафиксировать текущую дату (чтобы она не менялась), используйте сочетание клавиш Ctrl+; (вставляет статическую дату) или функцию:

=ДАТА(ГОД(СЕГОДНЯ()); МЕСЯЦ(СЕГОДНЯ()); ДЕНЬ(СЕГОДНЯ()))

но это избыточно — проще ввести дату вручную.

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

5. Ошибки и их исправление

Частые проблемы при расчёте дней между датами и способы их решения:

  • 🔴 #ЗНАЧ! — одна из ячеек не распознаётся как дата. Проверьте формат ячейки (Формат ячеек → Дата).
  • 🔴 Отрицательное число — порядок дат перепутан. Поменяйте местами нач_дата и кон_дата.
  • 🔴 Неверный результат в РАЗНДАТ — убедитесь, что используете кавычки для аргумента единицы измерения (например, "D", а не D).
  • 🔴 Дробная часть в результате — примените функцию ЦЕЛОЕ() или измените формат ячейки.

Если даты введены как текст (например, "01.01.2023"), Excel не сможет их корректно обработать. Преобразуйте текст в дату с помощью:

=ДАТАЗНАЧ(A1)

или через меню «Текст по столбцам» (на вкладке «Данные»).

Ячейки отформатированы как "Дата"|Порядок дат корректный (нач_дата ≤ кон_дата)|Нет текстовых значений вместо дат|Учтён регион (1900 vs 1904 система дат)-->

6. Продвинутые сценарии

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

  • 📅 Дни между датами без учёта выходных и праздников:
    =ЧИСТРАБДНИ.МЕЖД(A1; B1; 1; D1:D5)

    (аргумент 1 исключает субботу-воскресенье).

  • 📊 Процент выполнения задачи по дням:
    =РАЗНДАТ(A1; СЕГОДНЯ(); "D") / РАЗНДАТ(A1; B1; "D")

    (где A1 — начало, B1 — дедлайн).

  • 🔄 Дни до следующего дня рождения:
    =ДАТА(ГОД(СЕГОДНЯ()+1); МЕСЯЦ(C1); ДЕНЬ(C1))-СЕГОДНЯ()

    (где C1 — дата рождения).

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

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

где 11 — код для выходного только в воскресенье.

1) Формат ячеек с датами.

2) Региональные настройки Excel (система дат 1900 или 1904).

3) Наличие скрытых символов в датах (например, пробелов).-->

FAQ: Частые вопросы

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

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

  • =DATEDIF(A1, B1, "D") — аналогично РАЗНДАТ;
  • =NETWORKDAYS(A1, B1, D1:D5) — как ЧИСТРАБДНИ;
  • =TODAY()-A1 — дни до сегодня.

Отличие: в Google Таблицах функция DATEDIF отображается в списке автозаполнения.

Почему Excel показывает ###### вместо результата?

Это означает, что ширина столбца недостаточна для отображения числа. Растяните столбец или измените формат ячейки на «Общий». Также ошибка может возникать, если результат расчёта — отрицательное число с большим количеством знаков.

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

Да, в Power Query (на вкладке «Данные» → «Получить данные») используйте:

  1. Загрузите таблицу с датами.
  2. Добавьте пользовательский столбец с формулой = [Конечная дата] - [Начальная дата].
  3. Измените тип данных столбца на «Целое число».

Преимущество: Power Query автоматически обновляет расчёты при изменении исходных данных.

Как учитывать только будние дни без праздников?

Используйте ЧИСТРАБДНИ без третьего аргумента:

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

Эта формула исключит субботы и воскресенья, но не официальные праздники. Для их учёта добавьте диапазон с датами праздников (например, D1:D10).

Почему РАЗНДАТ возвращает ошибку #ЧИСЛО!?

Ошибка возникает в трёх случаях:

  1. Начальная дата позже конечной (используйте ЕСЛИОШИБКА для обработки).
  2. Одна из ячеек содержит некорректную дату (например, 31.02.2023).
  3. Аргумент единицы измерения указан без кавычек (например, D вместо "D").