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

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

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

Если вы никогда раньше не работали с датами в Excel, не переживайте: мы начнём с азов и постепенно перейдём к более сложным примерам. А для опытных пользователей подготовлены лайфхаки, которые выгодно выделят ваши отчёты на фоне коллег.

Базовый метод: простая разница между датами

Самый очевидный способ узнать количество дней между двумя датами — это вычесть одну дату из другой. Excel автоматически распознаёт формат дат и возвращает результат в днях. Например, если в ячейке A1 указана дата начала проекта (10.05.2026), а в B1 — дата окончания (20.05.2026), достаточно ввести формулу:

=B1-A1

Результат — 10, то есть 10 дней между датами. Этот метод работает и с датами в текстовом формате, если они корректно распознаны Excel как даты (например, "10 мая 2026" после преобразования в формат даты).

Но что, если даты указаны в разных форматах? Например, одна в виде ДД.ММ.ГГГГ, а другая — ММ/ДД/ГГ? Здесь важно убедиться, что Excel интерпретирует их одинаково. Для этого выделите ячейки и проверьте формат через Главная → Формат ячеек → Дата.

  • Плюсы метода: максимальная простота, не требует знания функций.
  • Минусы: не учитывает рабочие/выходные дни, не работает с текстом (например, "10 мая").
  • 🔄 Альтернатива: функция РАЗНДАТ (о ней ниже).

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

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

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

Аргумент единица_измерения определяет, в чём будет измеряться разница:

  • "d" — дни (most popular для нашей задачи);
  • "m" — полные месяцы;
  • "y" — полные годы;
  • "yd" — дни без учёта годов;
  • "md" — дни без учёта месяцев и годов.

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

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

Важно: функция РАЗНДАТ не документирована Microsoft, но работает во всех версиях Excel с 2000 года. Однако в Excel Online её поддержка может отсутствовать.

📊 Какой метод вычисления дней используете чаще?
Простое вычитание дат
Функция РАЗНДАТ
Другие функции (ДРАЗН, ЧИСТРАБДНИ)
Не работал с датами в Excel

Расчёт рабочих дней: исключаем выходные

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

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

Необязательный аргумент [праздники] позволяет указать диапазон ячеек с датами праздников, которые тоже нужно исключить. Например, если в ячейках D1:D5 перечислены государственные праздники, формула примет вид:

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

Пример расчёта рабочих дней между 1 и 31 мая 2026 года (без учёта праздников):

=ЧИСТРАБДНИ("01.05.2026"; "31.05.2026")

Результат — 23 (так как в мае 2026 года 8 выходных дней).

⚠️ Внимание: Функция ЧИСТРАБДНИ считает рабочими днями все дни, кроме субботы и воскресенья. Если в вашей стране другие выходные (например, пятница и суббота), используйте ЧИСТРАБДНИ.МЕЖД с указанием пользовательских выходных.
Функция Назначение Пример Результат
ЧИСТРАБДНИ Рабочие дни (пн-пт) =ЧИСТРАБДНИ("01.05.2026"; "10.05.2026") 7
ЧИСТРАБДНИ.МЕЖД Рабочие дни с пользовательскими выходными =ЧИСТРАБДНИ.МЕЖД("01.05.2026"; "10.05.2026"; 1) 8 (если выходной — пятница)
РАЗНДАТ Любые временные интервалы =РАЗНДАТ("01.05.2026"; "10.05.2026"; "d") 9

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

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

Синтаксис:

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

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

  • 1 — выходные: суббота, воскресенье (по умолчанию);
  • 2 — выходные: воскресенье, понедельник;
  • 11 — выходные: только воскресенье;
  • "0000011" — выходные: пятница, суббота (строка из 7 символов, где 1 — выходной, 0 — рабочий день).

Пример для стран Ближнего Востока, где выходные — пятница и суббота:

=ЧИСТРАБДНИ.МЕЖД("01.05.2026"; "10.05.2026"; "0000011")

Убедиться, что даты в формате Excel (не текст)|Проверить список праздников (если есть)|Выбрать правильную функцию (ЧИСТРАБДНИ или ЧИСТРАБДНИ.МЕЖД)|Указать корректный шаблон выходных (если нестандартный)|Проверить результат на тестовых данных-->

Разница в днях с учётом времени

Если ваши даты включают не только день, но и время (например, 01.05.2026 14:30), простое вычитание или РАЗНДАТ вернёт дробное число, где целая часть — дни, а дробная — доля дня. Например:

=B1-A1  // где A1 = 01.05.2026 09:00, B1 = 02.05.2026 17:00

Результат — 1,333... (1 день и 8 часов).

Чтобы получить только целые дни, используйте функцию ЦЕЛОЕ:

=ЦЕЛОЕ(B1-A1)

А если нужно отдельно посчитать часы и минуты, умножьте дробную часть на 24 (для часов) или на 1440 (для минут):

= (B1-A1 - ЦЕЛОЕ(B1-A1)) * 24  // часы

= (B1-A1 - ЦЕЛОЕ(B1-A1)) * 1440 // минуты

⚠️ Внимание: При работе с временем убедитесь, что ячейки имеют формат "Дата" или "Общий", а не "Текст". Иначе Excel не сможет корректно вычислить разницу. Проверить формат можно через Главная → Формат ячеек.

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

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

  • 🔴 Ошибка #ЗНАЧ!: возникает, если одна из ячеек содержит текст вместо даты. Решение: используйте функцию ДАТАЗНАЧ, чтобы преобразовать текст в дату:
    =РАЗНДАТ(ДАТАЗНАЧ("10.05.2026"); B1; "d")
  • 🔴 Неправильный результат: если даты введены в формате ДД.ММ.ГГГГ, но Excel интерпретирует их как ММ.ДД.ГГГГ (например, 05.10.2026 становится 10 мая вместо 5 октября). Решение: явно укажите формат даты через Формат ячеек или используйте функцию ДАТА:
    =ДАТА(2026; 10; 5)  // 5 октября 2026
  • 🔴 Отрицательное значение: если начальная дата позже конечной, результат будет отрицательным. Решение: используйте АБС, чтобы получить модуль:
    =АБС(B1-A1)

Ещё одна частая ошибка — забыть про високосные годы. Функции Excel автоматически их учитывают, но если вы вручную вычитаете даты через ДАТА, убедитесь, что февраль имеет правильное количество дней. Например:

=ДАТА(2026; 3; 1) - ДАТА(2026; 2; 1)  // 29 дней (2026 — високосный год)
Как Excel хранит даты?

Внутри Excel все даты представлены как числа, где 1 соответствует 1 января 1900 года, 2 — 2 января 1900 года и так далее. Время хранится как дробная часть: 1,5 — это полдень (12:00) 1 января 1900 года. Этот формат называется "серийный номер даты" и позволяет легко выполнять арифметические операции с датами и временем.

Практические примеры: от задач HR до управления проектами

Давайте рассмотрим реальные кейсы, где расчёт дней между датами становится критически важным.

1. Расчёт стажа сотрудников:

В ячейке A1 — дата приёма на работу (15.03.2020), в B1 — текущая дата (=СЕГОДНЯ()). Чтобы узнать стаж в днях, месяцах и годах:

=РАЗНДАТ(A1; B1; "y") & " лет, " & РАЗНДАТ(A1; B1; "ym") & " мес., " & РАЗНДАТ(A1; B1; "md") & " дней"

Результат: "4 лет, 1 мес., 20 дней" (на май 2026 года).

2. Контроль сроков выполнения задач:

Если дедлайн проекта — 30.06.2026 (B1), а сегодня =СЕГОДНЯ() (A1), чтобы узнать, сколько рабочих дней осталось:

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

3. Анализ времени доставки:

В интернет-магазине нужно посчитать среднее время доставки заказов. Если в столбце A даты заказов, а в B — даты доставки, используйте:

=СРЗНАЧ(B2:B100 - A2:A100)
Примечание: это формула массива, в новых версиях Excel вводится как обычно, в старых — нажимайте Ctrl+Shift+Enter.

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

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

Да, все описанные функции работают и в Google Sheets, за исключением РАЗНДАТ (вместо неё используйте простое вычитание дат или =DAYS(end_date, start_date)). Функции ЧИСТРАБДНИ и ЧИСТРАБДНИ.МЕЖД доступны без изменений.

Как посчитать дни между датами, если одна из них пустая?

Используйте функцию ЕСЛИ, чтобы избежать ошибок:

=ЕСЛИ(И(NOT(ISBLANK(A1)); NOT(ISBLANK(B1))); B1-A1; "Данные неполные")

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

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

Да, но для этого нужно объединить данные. Например, если праздники хранятся в файле Праздники.xlsx на листе Лист1 в диапазоне A1:A10, используйте:

=ЧИСТРАБДНИ(A1; B1; [Праздники.xlsx]Лист1!$A$1:$A$10)

Убедитесь, что оба файла открыты.

Как посчитать дни между сегодняшним днём и датой в будущем, игнорируя выходные?

Используйте комбинацию СЕГОДНЯ() и ЧИСТРАБДНИ:

=ЧИСТРАБДНИ(СЕГОДНЯ(); "31.12.2026")

Для динамического обновления результата нажмите F9.

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

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