Расчет количества дней между двумя датами — одна из самых востребованных задач в Microsoft Excel и Google Таблицах. Будь то сроки выполнения проектов, возраст сотрудников, продолжительность аренды или анализ временных интервалов — без этого инструмента не обойтись. К сожалению, многие пользователи до сих пор вручную вычитают даты или используют калькулятор, теряя время и рискуя допустить ошибку.
На самом деле Excel предлагает несколько способов автоматизировать этот процесс: от простейшей арифметики до сложных формул с учетом выходных и праздников. В этой статье мы разберем все методы — от базовых до продвинутых, — а также покажем, как избежать типичных ошибок при работе с датами. Вы узнаете, как рассчитать не только календарные дни, но и рабочие, как учитывать праздники, и даже как визуализировать результаты на графиках.
1. Базовый метод: простое вычитание дат
Самый простой способ определить разницу в днях — вычесть одну дату из другой. Excel автоматически распознает формат дат и вернет результат в днях. Например, если в ячейке A1 у вас дата начала события, а в B1 — дата окончания, достаточно ввести формулу:
=B1-A1
Формат ячеек с датами имеет значение! Если Excel воспринимает ваши данные как текст (например, "01.01.2023" отображается выровненным по левому краю), формула вернет ошибку. Чтобы исправить это:
- 📅 Выделите ячейки с датами → перейдите на вкладку
Главная→ в выпадающем менюФормат ячееквыберитеДата. - 🔄 Если даты введены как текст (например, через точку или дефис), используйте функцию
=ДАТАЗНАЧ()для преобразования:=ДАТАЗНАЧ("01.01.2023") - ⚠️ Проверьте региональные настройки: в российской версии 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. Удалите легенду и добавьте подписи данных для наглядности.
Пример условного форматирования для отслеживания дедлайнов:
- Выделите столбец с разницей дней до завершения задачи.
- Перейдите в
Условное форматирование → Создать правило → Форматировать только ячейки, которые содержат. - Установите правило: "Значение меньше или равно 0" → красный фон.
- Добавьте второе правило: "Значение меньше или равно 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:
- Нажмите
Alt + F11, чтобы открыть редактор VBA. - Вставьте новый модуль:
Insert → Module. - Добавьте код функции (пример ниже).
- Сохраните файл как
.xlsm(с поддержкой макросов).
Пример VBA-функции для подсчета рабочих дней с кастомными выходными
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 FunctionFunction CustomWorkDays(start_date As Date, end_date As Date, Optional weekend_days As String = "17") As Long
Использование в 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 года. Чтобы преобразовать число в дату:
- Выделите ячейку →
Главная → Формат ячеек → Дата. - Или используйте формулу
=ДАТА(1900;1;1)+A1-2(гдеA1— ячейка с числом).
Минус 2 в формуле связан с исторической ошибкой в Excel, где 1900 год считался високосным (на самом деле он не високосный).
Как посчитать дни между сегодняшней датой и другой датой?
Используйте функцию =СЕГОДНЯ():
- Календарные дни:
=A1-СЕГОДНЯ()(еслиA1— будущая дата) или=СЕГОДНЯ()-A1(еслиA1— прошедшая дата). - Рабочие дни:
=ЧИСТРАБДНИ(СЕГОДНЯ(); A1).
Функция СЕГОДНЯ() обновляется автоматически при каждом пересчете листа.
Можно ли посчитать дни с учетом только рабочих часов (например, с 9:00 до 18:00)?
Стандартных функций для этого нет, но можно использовать комбинацию:
- Рассчитайте полную разницу в часах:
=(B1-A1)*24. - Определите количество полных рабочих дней:
=ЧИСТРАБДНИ(A1; B1). - Умножьте на рабочие часы:
=ЧИСТРАБДНИ(A1; B1)*9(для 9-часового рабочего дня). - Добавьте часы за неполные рабочие дни (первый и последний день интервала).
Для точного расчета потребуется VBA-скрипт или разбивка интервала на дни с проверкой времени.