Как посчитать дни в Excel: от простых разниц до расчётов с выходными

Зачем считать дни в Excel и какие задачи это решает

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

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

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

  • 📅 Вычислить разницу между датами в днях, месяцах и годах;
  • 🏢 Исключить выходные и праздники из расчётов;
  • ⏳ Посчитать дни до конкретной даты (например, дедлайна);
  • 🔄 Автоматизировать обновление дат при изменении исходных данных.
📊 Как часто вам приходится считать дни в Excel?
Ежедневно
Несколько раз в неделю
Редко, по необходимости
Никогда не пользовался

Способ 1: Простая разница между датами (функция ДАТАРАЗН)

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

=B1-A1

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

=ДАТАЗНАЧ("30.05.2026")-ДАТАЗНАЧ("15.05.2026")

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

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

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

  • 📆 "D" — дни;
  • 📅 "M" — полные месяцы;
  • 🗓️ "Y" — полные годы.
Формула Пример Результат
=ДАТАРАЗН(A1;B1;"D") A1=15.05.2026, B1=30.05.2026 15 (дней)
=ДАТАРАЗН(A1;B1;"M") A1=15.01.2026, B1=10.03.2026 1 (полный месяц)
=ДАТАРАЗН(A1;B1;"YD") A1=15.12.2023, B1=10.01.2026 26 (дней с начала года)
⚠️ Внимание: Функция ДАТАРАЗН не учитывает високосные годы при расчёте месяцев. Например, разница между 28.02.2026 и 28.02.2026 по параметру "M" будет 12 месяцев, хотя фактически прошло 366 дней (2026 год — високосный).

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

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

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

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

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

Пример: между 01.05.2026 (среда) и 10.05.2026 (пятница) календарных дней — 9, но рабочих (без выходных) — только 7. Если добавить праздники (например, 09.05.2026), результат уменьшится до 6.

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

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

Способ 3: Расчёт дней до конкретной даты (отсчёт до дедлайна)

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

=дедлайн - СЕГОДНЯ()

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

=ЕСЛИ(A1>СЕГОДНЯ(); A1-СЕГОДНЯ(); "Срок истёк")

Для визуального контроля добавьте условное форматирование:

  1. Выделите ячейку с результатом.
  2. Перейдите в Главная → Условное форматирование → Создать правило.
  3. Выберите "Форматировать только ячейки, которые содержат".
  4. Установите условие: "Значение меньше" → 5 и задайте красный цвет текста.
Как зафиксировать текущую дату (без обновлений)

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

  1. Введите в ячейку =СЕГОДНЯ().
  2. Скопируйте ячейку (Ctrl+C).
  3. Выполните Правка → Специальная вставка → Значения (Ctrl+Shift+V).

Способ 4: Продвинутый подсчёт с учётом праздников и нестандартных выходных

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

  • 📅 Задать собственные выходные дни (например, только воскресенье);
  • 🏢 Исключить праздники из списка;
  • 🔄 Гибко настраивать рабочие недели.

Синтаксис:

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

Параметр [выходные] задаётся числом от 1 до 17 или строкой из 7 символов (например, "0000011", где 1 — выходной, 0 — рабочий день). Примеры:

  • 1 — выходные суббота и воскресенье (стандарт);
  • 11 — выходные пятница и суббота;
  • "0000011" — выходные пятница и суббота (альтернативный формат).

Критичный нюанс: Если параметр [выходные] указан как строка (например, "0000011"), он должен быть заключён в кавычки. В противном случае Excel вернёт ошибку #ИМЯ?.

Формула Описание Пример результата
=ЧИСТРАБДНИ.МЕЖД(A1;B1;1) Суббота и воскресенье — выходные 5 (дней)
=ЧИСТРАБДНИ.МЕЖД(A1;B1;11;D1:D3) Пятница и суббота — выходные, плюс 3 праздничных дня 3 (дней)
=ЧИСТРАБДНИ.МЕЖД(A1;B1;"0000011") Выходные — пятница и суббота (строка) 4 (дней)

Способ 5: Подсчёт дней в месяце или году (функции ДЕНЬНЕД, КОНМЕСЯЦА)

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

  • ДЕНЬНЕД — определяет день недели;
  • КОНМЕСЯЦА — возвращает последний день месяца;
  • ДАТА — создаёт дату из года, месяца и дня.

Примеры:

  1. Количество дней в текущем месяце:
    =ДЕНЬ(КОНМЕСЯЦА(СЕГОДНЯ();0))

    Функция КОНМЕСЯЦА возвращает дату последнего дня месяца (например, 31.05.2026), а ДЕНЬ извлекает из неё число (31).

  2. Количество рабочих дней в месяце:
    =ЧИСТРАБДНИ(ДАТА(ГОД(СЕГОДНЯ());МЕСЯЦ(СЕГОДНЯ());1); КОНМЕСЯЦА(СЕГОДНЯ();0))

    Здесь ДАТА(ГОД();МЕСЯЦ();1) создаёт первую дату месяца, а КОНМЕСЯЦА — последнюю.

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

=ЕСЛИ(ИЛИ(ОСТАТ(GOD(дата);400)=0; И(ОСТАТ(GOD(дата);4)=0; ОСТАТ(GOD(дата);100)<>0)); 366; 365)

Способ 6: Автоматизация с помощью Power Query (для больших данных)

Если вам нужно обработать тысячи строк с датами (например, журнал посещаемости или лог транзакций), ручной подсчёт дней станет неэффективным. В таких случаях используйте Power Query — инструмент для преобразования и загрузки данных. Алгоритм действий:

  1. Выделите исходную таблицу и перейдите на вкладку Данные → Получение данных → Из таблицы/диапазона.
  2. В открывшемся редакторе Power Query добавьте столбец с разницей дат:
    • Перейдите на вкладку Добавить столбец → Настраиваемый столбец.
    • Введите формулу: [Конечная дата] - [Начальная дата].
  • При необходимости добавьте ещё один столбец для рабочих дней с функцией Duration.Days и учётом выходных.
  • Нажмите Закрыть и загрузить, чтобы вернуть данные в Excel.
  • Преимущества Power Query:

    • 🔄 Обработка миллионов строк без замедления;
    • 🔄 Автоматическое обновление при изменении исходных данных;
    • 📊 Возможность объединения с другими источниками (SQL, CSV).
    ⚠️ Внимание: При импорте дат из внешних источников (например, CSV) Excel может интерпретировать их как текст. Перед расчётами проверьте формат столбца и при необходимости преобразуйте данные с помощью Таблица → Преобразовать → Изменить тип → Дата.

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

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

    1. Ошибка #ЗНАЧ!:

      Причина: одна или обе даты введены как текст (например, "15 мая" вместо 15.05.2026).

      Решение: Используйте ДАТАЗНАЧ или измените формат ячейки на Дата.

    2. Неправильный результат в ДАТАРАЗН:

      Причина: перепутан порядок аргументов (начальная и конечная даты).

      Решение: Убедитесь, что первая дата меньше второй, или используйте АБС для абсолютного значения:

      =АБС(ДАТАРАЗН(A1;B1;"D"))

    3. Отрицательные дни в ЧИСТРАБДНИ:

      Причина: конечная дата раньше начальной.

      Решение: Поменяйте даты местами или примените АБС.

    4. Некорректный учёт праздников:

      Причина: в списке праздников указаны даты в текстовом формате.

      Решение: Преобразуйте список в формат Дата или используйте ДАТАЗНАЧ.

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

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

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

    Если одна из ячеек пустая, Excel вернёт ошибку. Чтобы избежать этого, используйте функцию ЕСЛИ для проверки:

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

    Либо замените пустые ячейки текущей датой:

    =ЕСЛИ(ЕПУСТО(B1); СЕГОДНЯ()-A1; B1-A1)
    Можно ли посчитать дни с учётом половинных рабочих дней (например, суббота — короткий день)?

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

    1. Создайте вспомогательную таблицу с коэффициентами для каждого дня (например, 1 для полного дня, 0.5 для половинного).
    2. Используйте ЧИСТРАБДНИ.МЕЖД для подсчёта полных дней.
    3. Добавьте корректировку через СУММПРОИЗВ, умножая дни на коэффициенты.
    Почему функция ДАТАРАЗН возвращает неверное количество месяцев?

    Функция ДАТАРАЗН считает полные месяцы. Например, разница между 31.01.2026 и 01.03.2026 по параметру "M" будет 1 (а не 2), потому что 31 января и 1 марта не попадают в один и тот же день месяца. Для точного расчёта используйте комбинацию:

    =ДАТАРАЗН(A1;B1;"Y")*12 + ДАТАРАЗН(A1;B1;"YM")
    Как посчитать дни между датой и временем (например, 15.05.2026 14:30)?

    Excel хранит дату и время как дробное число (целая часть — дата, дробная — время). Чтобы получить разницу в днях с учётом времени, просто вычтите одну ячейку из другой:

    =B1-A1

    Результат будет в формате 1.5 (1 день и 12 часов). Чтобы отобразить только дни, используйте ЦЕЛОЕ:

    =ЦЕЛОЕ(B1-A1)
    Можно ли автоматически обновлять количество дней при изменении даты в другой книге?

    Да, но для этого нужно:

    1. Сохранить обе книги в доверенном расположении (например, на жёстком диске).
    2. В основной книге создать ссылку на внешнюю дату: =[Книга2.xlsx]Лист1!$A$1.
    3. Настроить автоматическое обновление связей: Данные → Обновить все.

    Обратите внимание: Excel блокирует автоматическое обновление внешних ссылок в файлах из интернета или недоверенных источников.