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

Почему Excel — лучший инструмент для работы с датами?

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

Главное преимущество программы — гибкость. Вы можете рассчитывать календарные дни (включая выходные), рабочие дни (исключая субботу/воскресенье), а также учитывать индивидуальные графики работы или региональные праздники. При этом все вычисления обновляются автоматически при изменении исходных данных — никаких ручных пересчётов!

В этой статье мы разберём 5 универсальных методов подсчёта дней в Excel, которые покроют 90% практических задач: от базового вычитания до формул с массивами и пользовательскими функциями. Каждый способ сопровождается пошаговыми инструкциями, скриншотами и готовыми примерами для копирования.

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

Метод 1: Простое вычитание дат (календарные дни)

Самый элементарный способ — вычесть одну дату из другой. Excel автоматически распознаёт формат даты и возвращает результат в днях. Например, формула =B2-A2 вернёт количество дней между датами в ячейках A2 и B2.

Важно: ячейки должны быть отформатированы как дата (не текст!). Проверить это можно в меню Главная → Формат → Формат ячеек. Если даты введены как текст (например, "01.01.2026"), Excel вернёт ошибку #ЗНАЧ!.

  • Плюсы: работает во всех версиях Excel, не требует функций.
  • Минусы: учитывает все дни, включая выходные и праздники.
  • 📌 Пример: =ДАТА(2026;12;31)-ДАТА(2026;1;1) вернёт 365 (дней в 2026 году).

Метод 2: Функция ДНИ (DAYS) для точных расчётов

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

Синтаксис:

=ДНИ("31.12.2026"; "01.01.2026")  → 365

=DAYS("2026-12-31"; "2026-01-01") → 365 (международный формат)

ФормулаРезультатПояснение
=ДНИ("15.05.2026"; "10.05.2026")5Разница в 5 календарных дней
=ДНИ(СЕГОДНЯ(); "1.01.2026")XXДней с начала 2026 года (динамическое значение)
=ДНИ("31.12.2026"; СЕГОДНЯ())XXДней до конца 2026 года
⚠️ Внимание: Если конечная дата раньше начальной, функция вернёт отрицательное число. Чтобы избежать этого, используйте =АБС(ДНИ(...)).

Метод 3: Рабочие дни без выходных (ЧИСТРАБДНИ)

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

Пример:

=ЧИСТРАБДНИ("01.01.2026"; "31.01.2026"; A2:A5)

где в ячейках A2:A5 перечислены праздники (например, 1–8 января).

  • 📅 Как указать праздники: Создайте список дат в отдельном столбце и укажите его диапазон в формуле.
  • 🔄 Динамический расчёт: Сочетание с СЕГОДНЯ() позволит отслеживать рабочие дни до дедлайна в реальном времени.
  • Быстрый ввод: Для дат в формате "дд.мм.гггг" можно использовать автозаполнение (протянуть маркер ячейки вниз).

Убедиться, что даты в формате "Дата"|Создать отдельный столбец для праздников|Проверить регион (в некоторых странах выходные не суббота/воскресенье)|Использовать абсолютные ссылки для диапазона праздников (например, $A$2:$A$5)-->

Метод 4: Учёт индивидуальных графиков (ЧИСТРАБДНИ.МЕЖД)

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

Формат аргумента выходные:

  • 1 — выходной (например, "0000011" — выходные суббота/воскресенье).
  • 0 — рабочий день.

Пример для выходных в пятницу/субботу: "0000110".

=ЧИСТРАБДНИ.МЕЖД("01.06.2026"; "10.06.2026"; "0000011"; B2:B5)
⚠️ Внимание: В Excel 2010 и старше функция ЧИСТРАБДНИ.МЕЖД может отсутствовать. В этом случае используйте надстройку Analysis ToolPak или VBA-скрипт.
Как включить Analysis ToolPak?

Перейдите в Файл → Параметры → Надстройки. Внизу окна выберите Управление: Надстройки ExcelПерейти. Отметьте галочкой Analysis ToolPak и нажмите OK.

Метод 5: Продвинутые расчёты с ДАТАМЕС и массивами

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

=ДАТАМЕС(СЕГОДНЯ(); 1; 0)-СЕГОДНЯ()

где ДАТАМЕС возвращает дату через N месяцев (здесь 1 месяц вперед, 0 дней — т.е. последний день текущего месяца).

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

=ЧИСТРАБДНИ(Лист1!A2; Лист2!B2; Праздники!C2:C10)

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

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

  1. Ошибка #ЗНАЧ!: Возникает, если ячейка содержит текст вместо даты. Решение: используйте ДАТАЗНАЧ() для преобразования текста в дату:
    =ДНИ(ДАТАЗНАЧ("31.12.2026"); СЕГОДНЯ())
  2. Неправильный регион: В американском Excel даты вводятся как "мм/дд/гггг", а в российском — "дд.мм.гггг". Проверьте настройки в Файл → Параметры → Язык.
  3. Отрицательные дни: Если конечная дата раньше начальной, используйте АБС() или поменяйте местами аргументы.

Ещё одна частая проблема — автоматическое округление времени. Если ваши даты содержат время (например, "01.01.2026 14:30"), Excel может учитывать его при вычитании. Чтобы игнорировать время, используйте =ЦЕЛОЕ(A2) для извлечения только даты.

Практические примеры для разных задач

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

ЗадачаФормулаПример результата
Срок исполнения заказа (5 рабочих дней)=РАБДЕНЬ(СЕГОДНЯ(); 5)18.05.2026 (если сегодня 13.05)
Дней до выхода на работу после больничного=ЧИСТРАБДНИ(СЕГОДНЯ(); "20.05.2026")5 (если сегодня 13.05)
Возраст в днях=ДНИ(СЕГОДНЯ(); "15.03.1990")12543 (на 13.05.2026)
Дней до истечения срока годности=ДНИ("30.06.2026"; СЕГОДНЯ())48 (если сегодня 13.05)

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

  1. Выделите диапазон с результатами.
  2. Перейдите в Главная → Условное форматирование → Правила выделения ячеек → Меньше....
  3. Укажите значение 3 и выберите красный цвет.
📊 Какой метод подсчёта дней вы используете чаще?
Простое вычитание
Функция ДНИ
ЧИСТРАБДНИ (рабочие дни)
Другое

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

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

Excel не поддерживает часовые пояса напрямую. Преобразуйте обе даты к одному поясу (например, UTC) с помощью формулы:

=ДНИ(А2 + (B2/24); А1 + (B1/24))

где A1, A2 — даты, а B1, B2 — смещение в часах (например, +3 для Москвы).

Можно ли посчитать дни без учёта конкретных дат (например, летние каникулы)?

Да, используйте функцию ЧИСТРАБДНИ с дополнительным диапазоном исключаемых дат. Например:

=ЧИСТРАБДНИ("01.06.2026"; "31.08.2026"; Праздники!A2:A10; ЛетниеКаникулы!B2:B30)

где ЛетниеКаникулы!B2:B30 — диапазон с датами каникул.

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

Используйте комбинацию ДНИ и ЦЕЛОЕ:

=ЦЕЛОЕ(ДНИ("31.12.2026"; "01.01.2026")/7)

Для подсчёта оставшихся дней: =ОСТАТ(ДНИ(...); 7).

Почему функция ДНИ возвращает ошибку #ИМЯ?

Это происходит, если:

  • Вы используете английскую версию Excel, но вводите русское название функции (напишите DAYS вместо ДНИ).
  • В настройках региона установлен другой язык интерфейса. Проверьте в Файл → Параметры → Язык.
Как посчитать дни с учётом полурабочих дней (например, суббота — короткий день)?

Стандартные функции Excel не поддерживают полурабочие дни. Решение:

  1. Создайте вспомогательный столбец с коэффициентами (1 — полный день, 0.5 — полудень).
  2. Используйте формулу массива (введите с Ctrl+Shift+Enter):
=СУММПРОИЗВ(--(ЧИСЛСТОЛБ(А2:А100)>0); B2:B100)

где A2:A100 — диапазон дат, B2:B100 — коэффициенты.