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

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

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

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

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

=B1-A1

Формат ячеек с датами имеет значение! Если Excel воспринимает ваши данные как текст (например, "01.01.2023" отображается выровненным по левому краю), формула вернет ошибку. Чтобы исправить это:

  • 📅 Выделите ячейки с датами → перейдите на вкладку Главная → в выпадающем меню Формат ячеек выберите Дата.
  • 🔄 Если даты введены как текст (например, через точку или дефис), используйте функцию =ДАТАЗНАЧ() для преобразования:
    =ДАТАЗНАЧ("01.01.2023")
  • ⚠️ Проверьте региональные настройки: в российской версии Excel по умолчанию используется формат ДД.ММ.ГГГГ, а в американской — ММ/ДД/ГГГГ.

Этот метод подходит для календарных дней, но не учитывает выходные и праздники. Если вам нужно посчитать именно рабочие дни, читайте следующий раздел.

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

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

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

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

Пример: чтобы посчитать рабочие дни между 01.01.2026 и 31.01.2026 (исключая Новогодние каникулы), используйте:

=ЧИСТРАБДНИ("01.01.2026"; "31.01.2026"; {"01.01.2026";"02.01.2026";"03.01.2026";"04.01.2026";"05.01.2026";"06.01.2026";"07.01.2026";"08.01.2026"})

Обратите внимание:

  • 📌 Аргумент [праздники] необязателен, но если его не указать, функция проигнорирует официальные выходные.
  • 📊 Праздники можно задать как диапазон ячеек (например, D1:D10), где перечислены даты, или как массив в фигурных скобках.
  • 🔄 В Google Таблицах аналогичная функция называется =NETWORKDAYS().
⚠️ Внимание: Если начальная дата позже конечной, функция вернет отрицательное значение. Чтобы избежать ошибок, используйте =АБС(ЧИСТРАБДНИ(...)).

Убедитесь, что даты введены в формате ДД.ММ.ГГГГ|

Проверьте, что праздники указаны как даты, а не текст|

Используйте абсолютные ссылки на диапазон праздников (например, $D$1:$D$10)|

Сортировка праздников не обязательна, но упрощает проверку-->

3. Учет нестандартных выходных: функция ЧИСТРАБДНИ.МЕЖД

Что делать, если ваша компания работает по гибкому графику? Например, выходные — пятница и суббота, или только воскресенье? Для таких случаев в Excel 2010 и новее есть функция =ЧИСТРАБДНИ.МЕЖД().

Ее синтаксис:

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

Аргумент [выходные] позволяет задать произвольные выходные дни. Например:

  • 📅 Для выходных в пятницу и субботу используйте 7 (где 7 — это номер дня недели, 1=понедельник, 7=воскресенье).
  • 📅 Для одного выходного дня (воскресенье) укажите 0000001 (строка из 7 символов, где 1 — выходной, 0 — рабочий).
  • 📅 Для субботы и воскресенья (стандартный вариант) можно опустить аргумент или указать 1.

Пример расчета рабочих дней между 01.06.2026 и 30.06.2026 с выходными в пятницу и субботу:

=ЧИСТРАБДНИ.МЕЖД("01.06.2026"; "30.06.2026"; 7)
График работы Аргумент [выходные] Пример формулы
Суббота, воскресенье (стандарт) 1 или опустить =ЧИСТРАБДНИ.МЕЖД(A1; B1)
Только воскресенье 0000001 =ЧИСТРАБДНИ.МЕЖД(A1; B1; 0000001)
Пятница, суббота 7 =ЧИСТРАБДНИ.МЕЖД(A1; B1; 7)
Среда, воскресенье 0010001 =ЧИСТРАБДНИ.МЕЖД(A1; B1; "0010001")

Важно: в Excel 2007 и старше функции ЧИСТРАБДНИ.МЕЖД нет — используйте альтернативу с комбинацией ДЕНЬНЕД и СУММПРОИЗВ.

4. Расчет дней с точностью до часов, минут и секунд

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

  • 📏 Целая часть — количество полных дней.
  • 📏 Дробная часть — доля дня (например, 0,5 = 12 часов).

Чтобы преобразовать дробное значение в часы, минуты или секунды, используйте:

  • 🕒 Часы: = (B1-A1) * 24
  • ⏱️ Минуты: = (B1-A1) 24 60
  • Секунды: = (B1-A1) 24 60 * 60

Пример: если в A1 время начала 01.01.2026 10:30:00, а в B1 — время окончания 02.01.2026 15:45:00, формула =ТЕКСТ(B1-A1; "д ч:мм:сс") вернет результат 1 05:15:00 (1 день, 5 часов, 15 минут).

⚠️ Внимание: При работе с временем убедитесь, что ячейки имеют формат Дата или Время. Если Excel отображает даты как числа (например, 45301 вместо 01.01.2026), измените формат через Главная → Формат ячеек → Дата.

5. Визуализация разницы дат: условное форматирование и графики

Числовые значения — это хорошо, но иногда нужно наглядно показать временные интервалы. Например, чтобы выделить просроченные задачи или визуализировать сроки проектов. Для этого подойдут:

  • 🎨 Условное форматирование: выделите ячейки с разницей дней → Главная → Условное форматирование → Правила выделения ячеек. Установите правило "больше чем" и выберите красный цвет для просроченных задач.
  • 📊 Линейчатые диаграммы: создайте график, где по оси X — задачи, а по оси Y — количество дней до дедлайна. Так можно быстро оценить приоритеты.
  • 📅 Диаграммы Ганта: в Excel нет встроенного инструмента, но можно создать его с помощью Линейчатой диаграммы с накоплением (инструкция в спойлере ниже).
Как построить диаграмму Ганта в Excel

1. Создайте таблицу с задачами, датами начала и продолжительностью в днях.

2. Добавьте столбец "Дата окончания" = [Дата начала] + [Продолжительность].

3. Выделите данные → Вставка → Вставить линейчатую диаграмму с накоплением.

4. Отформатируйте оси: по X — даты, по Y — задачи.

5. Удалите легенду и добавьте подписи данных для наглядности.

Пример условного форматирования для отслеживания дедлайнов:

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

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

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

  • 🗓️ Excel воспринимает дату как текст: проверьте формат ячеек (должен быть Дата), используйте =ДАТАЗНАЧ() для преобразования. Пример ошибки: #ЗНАЧ! при вычитании "текстовых" дат.
  • Неправильный порядок дат: если начальная дата позже конечной, результат будет отрицательным. Используйте =АБС() или поменяйте даты местами.
  • 🌍 Региональные настройки: в американском Excel дата 01.05.2026 интерпретируется как 1 мая, а в российском — как 5 января. Проверьте настройки в Файл → Параметры → Язык → Региональные параметры.
  • 📅 Пропущенные праздники: функция ЧИСТРАБДНИ не учитывает праздники по умолчанию — их нужно указывать вручную.

Еще одна частая проблема — ошибка #ЧИСЛО! при расчете разницы. Она возникает, если:

  • Одна из "дат" на самом деле не дата, а текст (например, опечатка в формате).
  • Вы пытаетесь вычесть дату из пустой ячейки.
  • Используете несуществующую дату (например, 31.02.2026).
⚠️ Внимание: Excel хранит даты как числа, где 1 соответствует 1 января 1900 года. Поэтому даты до 1900 года (например, исторические события) не поддерживаются. Для работы с ними используйте текстовый формат или специализированные надстройки.

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

Если стандартных функций недостаточно, можно использовать пользовательские решения на базе VBA или формул массива. Например, чтобы посчитать количество конкретных дней недели (например, только понедельников) между двумя датами, применяйте:

=СУММ(--(ДЕНЬНЕД(СТРОКА(НЕПРЯМ($A$1:ИНДЕКС($A:$A; B1-A1)))-1)=1))

Где:

  • A1 — начальная дата,
  • B1 — конечная дата,
  • 1 в конце — номер дня недели (1=воскресенье, 2=понедельник и т.д.).

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

  1. Нажмите Alt + F11, чтобы открыть редактор VBA.
  2. Вставьте новый модуль: Insert → Module.
  3. Добавьте код функции (пример ниже).
  4. Сохраните файл как .xlsm (с поддержкой макросов).
Пример VBA-функции для подсчета рабочих дней с кастомными выходными

Function CustomWorkDays(start_date As Date, end_date As Date, Optional weekend_days As String = "17") As Long

Dim days_count As Long, i As Long

days_count = 0

For i = start_date To end_date

If InStr(weekend_days, Weekday(i, vbSunday)) = 0 Then

days_count = days_count + 1

End If

Next i

CustomWorkDays = days_count

End Function

Использование в Excel: =CustomWorkDays(A1; B1; "17"), где "17" — выходные (1=воскресенье, 7=суббота).

Пользовательские функции удобны для:

  • 📅 Сложных календарей (например, с плавающими выходными).
  • 📊 Интеграции с внешними источниками данных (например, автоматическим получением списка праздников из интернета).
  • ⚡ Повторяющихся задач (например, ежемесячный расчет зарплаты с учетом отработанных дней).

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

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

Используйте формулу =ЦЕЛОЕ((B1-A1)/7), где A1 и B1 — начальная и конечная даты. Если нужно учесть только полные недели (без остатка), добавьте проверку: =ЕСЛИ(ОСТАТ((B1-A1);7)=0; (B1-A1)/7; ЦЕЛОЕ((B1-A1)/7)).

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

Да, принципы те же:

  • Простое вычитание: =B1-A1.
  • Рабочие дни: =NETWORKDAYS(A1; B1; C1:C10) (где C1:C10 — праздники).
  • Нестандартные выходные: =NETWORKDAYS.INTL(A1; B1; 7; C1:C10) (аргумент 7 — код выходных дней).

Обратите внимание: в Google Таблицах нет функции ДАТАЗНАЧ — используйте =ДАТА() или =TO_DATE().

Почему Excel показывает дату как число (например, 45342)?

Это внутренний формат хранения дат в Excel, где 1 = 1 января 1900 года. Чтобы преобразовать число в дату:

  1. Выделите ячейку → Главная → Формат ячеек → Дата.
  2. Или используйте формулу =ДАТА(1900;1;1)+A1-2 (где A1 — ячейка с числом).

Минус 2 в формуле связан с исторической ошибкой в Excel, где 1900 год считался високосным (на самом деле он не високосный).

Как посчитать дни между сегодняшней датой и другой датой?

Используйте функцию =СЕГОДНЯ():

  • Календарные дни: =A1-СЕГОДНЯ() (если A1 — будущая дата) или =СЕГОДНЯ()-A1 (если A1 — прошедшая дата).
  • Рабочие дни: =ЧИСТРАБДНИ(СЕГОДНЯ(); A1).

Функция СЕГОДНЯ() обновляется автоматически при каждом пересчете листа.

Можно ли посчитать дни с учетом только рабочих часов (например, с 9:00 до 18:00)?

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

  1. Рассчитайте полную разницу в часах: =(B1-A1)*24.
  2. Определите количество полных рабочих дней: =ЧИСТРАБДНИ(A1; B1).
  3. Умножьте на рабочие часы: =ЧИСТРАБДНИ(A1; B1)*9 (для 9-часового рабочего дня).
  4. Добавьте часы за неполные рабочие дни (первый и последний день интервала).

Для точного расчета потребуется VBA-скрипт или разбивка интервала на дни с проверкой времени.