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

Почему расчёт дней в Excel — это не так просто, как кажется

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

В этой статье мы разберём 5 надёжных способов посчитать дни между датами — от базовых формул до продвинутых функций для бухгалтеров и аналитиков. Вы узнаете, как избежать типичных ошибок (например, когда Excel воспринимает "01.03" как 1 марта, а не 3 января), как учитывать только рабочие дни, и почему иногда проще использовать ДАТАЗНАЧ, чем вводить даты вручную. А в конце — бонус: готовая таблица с формулами для копирования!

Предупреждение: если вы работаете с историческими датами до 1900 года или будущими после 9999 года, Excel их не поддерживает. Для таких случаев потребуются обходные решения (о них — в разделе про ограничения).

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

Если вам нужно быстро узнать, сколько дней прошло между двумя датами, достаточно вычесть одну дату из другой. Excel автоматически преобразует разницу в количество дней, если ячейки имеют формат Дата.

Пример: в ячейке A1 у вас дата начала проекта — 15.05.2026, а в B1 — текущая дата. Формула будет такой:

=B1-A1

Результат — число дней между датами. Но здесь есть подводные камни:

  • 🔴 Ошибка #1: Если ячейки имеют текстовый формат (например, после импорта из CSV), Excel покажет #ЗНАЧ!. Исправляйте формат через Формат ячеек → Дата.
  • 🔴 Ошибка #2: При вычитании "большей" даты из "меньшей" результат будет отрицательным. Используйте =ABS(B1-A1), чтобы всегда получать положительное число.
  • 🟢 Плюс: Работает во всех версиях Excel, включая Excel Online и Google Таблицы.

Способ 2: Функция ДНИ — когда нужна точность

Функция =ДНИ(конечная_дата; начальная_дата) специально создана для подсчёта дней между двумя датами. Её преимущество — она всегда возвращает положительное число, даже если начальная дата позже конечной. Синтаксис:

=ДНИ(B1; A1)

Где:

  • B1 — ячейка с конечной датой;
  • A1 — ячейка с начальной датой.

Пример: если в A1 указана дата рождения 12.08.1990, а в B1 — сегодняшняя дата, формула покажет ваш возраст в днях. Но учтите:

Что будет, если перепутать аргументы?

Функция ДНИ вернёт отрицательное число, но только в Excel 2013 и новее. В старых версиях (2010 и ранее) она просто не сработает и покажет #ИМЯ?.

Когда использовать ДНИ вместо вычитания?

Критерий Вычитание (B1-A1) Функция ДНИ
Простота ⭐⭐⭐⭐⭐ ⭐⭐⭐
Гарантия положительного результата ❌ (нужен ABS)
Работа с текстовыми датами ❌ (нужен ДАТАЗНАЧ)
Совместимость со старыми версиями Excel ❌ (до 2013 года не работала)
📊 Какой способ вы используете чаще?
Вычитание дат
Функция ДНИ
Другие функции (ДАТАРАЗН и т.д.)
Не знаю, что это

Способ 3: Функция ДАТАРАЗН — для сложных расчётов

Если вам нужно посчитать не просто дни, а годы, месяцы или недели между датами, используйте =ДАТАРАЗН(нач_дата; кон_дата; "д"). Эта функция возвращает разницу в указанных единицах:

  • "д" — дни;
  • "м" — полные месяцы;
  • "г" — полные годы.

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

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

Важно: ДАТАРАЗН учитывает только полные периоды. Например, разница между 31 января и 1 февраля составит 1 день, а не 1 месяц.

Где пригодится:

  • 📅 Расчёт стажа сотрудников (в годах и месяцах).
  • 📊 Анализ временных интервалов в проектах (например, "сколько недель ушло на этап").
  • 💰 Финансовые расчёты с учётом процентов за дни пользования кредитом.

Убедитесь, что обе даты в формате Дата|Проверьте порядок аргументов (нач_дата; кон_дата)|Используйте кавычки для единиц измерения ("д", "м", "г")|Для текущей даты применяйте СЕГОДНЯ()

-->

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

Если вам нужно узнать, сколько рабочих дней прошло между датами (без суббот, воскресений и праздников), используйте функцию =ЧИСТРАБДНИ(нач_дата; кон_дата; [праздники]).

Пример: подсчёт рабочих дней между 01.06.2026 и 15.06.2026 с учётом праздников (например, 12 июня):

=ЧИСТРАБДНИ("01.06.2026"; "15.06.2026"; D1:D5)

Где D1:D5 — диапазон с датами праздников (например, 12.06.2026).

Ограничения:

  • ⚠️ Функция не учитывает региональные праздники (например, День города). Их нужно добавлять вручную.
  • ⚠️ В Google Таблицах аналогичная функция называется NETWORKDAYS.

Способ 5: Динамический расчёт с функцией СЕГОДНЯ()

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

Примеры:

  1. Дней с даты: =СЕГОДНЯ()-A1 (где A1 — начальная дата).
  2. Дней до даты: =A1-СЕГОДНЯ() (если A1 — целевая дата).
  3. Рабочих дней до дедлайна: =ЧИСТРАБДНИ(СЕГОДНЯ(); A1).

Важно: СЕГОДНЯ()летучая функция. Это значит, что она пересчитывается при каждом изменении в книге или открытии файла. Если вам нужно зафиксировать дату (например, для отчёта), замените её на статическое значение через Копировать → Специальная вставка → Значения.

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

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

⚠️ Внимание: Если вы импортировали даты из внешнего источника (например, 1С или CSV), Excel может воспринять их как текст. Проверяйте формат ячеек: выделите диапазон → Формат ячеек → Дата. Если дата не меняется, используйте =ДАТАЗНАЧ(текстовая_дата).

Другие ошибки:

  • 🔴 Двузначные годы: Excel интерпретирует 01.05.24 как 2026, но в некоторых локалях может принять за 1924. Всегда указывайте год полностью.
  • 🔴 Разные форматы дат: Если в одной ячейке ДД.ММ.ГГГГ, а в другой ММ/ДД/ГГГГ, Excel их не распознает. Unified формат через Формат ячеек.
  • 🔴 Високосные годы: Excel корректно учитывает 29 февраля, но если вы вручную вводите дату 29.02.2023 (невисокосный год), она сдвинется на 1 марта.

Проверьте себя: если формула возвращает ######, это значит, что результат не помещается в ячейку по ширине. Растяните столбец или измените формат на Общий.

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

Если вам нужно посчитать не только дни, но и часы/минуты между датами (например, для тайм-трекинга задач), используйте формулу с вычитанием и умножением:

= (B1-A1)*24  

= (B1-A1)*24*60

Пример: если в A1 время начала задачи 10:30 15.05.2026, а в B1 — время окончания 14:45 16.05.2026, формула =(B1-A1)*24 вернёт 28,25 (часов).

Для отображения результата в формате ДД:ЧЧ:ММ:

  1. Выделите ячейку с результатом.
  2. Нажмите Ctrl+1 (или Формат ячеек).
  3. Выберите формат [ч]:мм (для часов) или д.м.гггг ч:мм (для дней и времени).
⚠️ Внимание: При работе с временем в Excel максимальная разница, которую можно посчитать, — 9999 дней (около 27 лет). Для больших интервалов используйте VBA или разбивайте расчёт на части.

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

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

Да. Используйте ссылки на листы в формуле. Например: =Лист2!B1-Лист1!A1, где Лист1!A1 — начальная дата на первом листе, а Лист2!B1 — конечная дата на втором.

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

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

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

Формулы идентичны Excel, но некоторые функции имеют другие названия:

  • ДНИDAYS;
  • ЧИСТРАБДНИNETWORKDAYS;
  • ДАТАРАЗНDATEDIF.

Пример: =DATEDIF(A1, B1, "d").

Можно ли автоматически подсвечивать просроченные даты?

Да, с помощью условного форматирования:

  1. Выделите ячейки с датами.
  2. Перейдите в Главная → Условное форматирование → Правила выделения ячеек → Меньше.
  3. Введите =СЕГОДНЯ() и выберите цвет (например, красный).

Теперь все даты раньше сегодняшней будут подсвечены.

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

В Power Query (инструмент для обработки данных в Excel) используйте следующий подход:

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

Это полезно для обработки больших наборов данных (тысячи строк).