Работа с датами в Microsoft Excel — одна из самых востребованных задач, особенно когда нужно рассчитать временные интервалы. Według статистики, 8 из 10 бухгалтеров и менеджеров проектов ежедневно сталкиваются с необходимостью подсчитать дни между двумя датами — будь то сроки выполнения задач, продолжительность командировок или периоды действия договоров. Но даже опытные пользователи иногда путаются: как учитывать выходные? Как исключить праздники? Или почему формула выдаёт ошибку #ЗНАЧ! вместо числа?
На первый взгляд, задача кажется элементарной: вычесть одну дату из другой. Однако Excel хранит даты как последовательные числа (начиная с 1 января 1900 года), и это открывает широкие возможности для анализа — от базового подсчёта до сложных календарных расчётов с учётом рабочих дней. В этой статье разберём 5 проверенных способов, как посчитать количество дней в Excel, — от простейших до профессиональных, — а также раскроем типичные ошибки и лайфхаки для ускорения работы.
Если вы никогда не работали с датами в таблицах, не переживайте: мы начнём с азов. А для опытных пользователей подготовлены продвинутые приёмы — например, как автоматически подсвечивать просроченные задачи или строить графики по временным интервалам. Готовы? Тогда приступим!
1. Базовый метод: простая разность дат
Самый очевидный способ — вычесть одну дату из другой. Excel воспринимает даты как числа, поэтому операция работает так же, как и с обычными цифрами.
Пример: У вас есть две ячейки — A1 с датой начала проекта (01.01.2026) и B1 с датой окончания (15.01.2026). Чтобы узнать продолжительность, введите в ячейку C1 формулу:
=B1-A1
Результат — 14 дней. Но здесь есть нюанс: если ячейки отформатированы как текст, формула вернёт ошибку.
Чтобы избежать проблем:
- 📅 Убедитесь, что обе ячейки имеют формат Дата (выделите их → правая кнопка →
Формат ячеек → Дата). - ⚡ Если даты введены как текст (например, "01-01-2026"), используйте функцию
=ДАТАЗНАЧ()для преобразования:=ДАТАЗНАЧ("15.01.2026")-ДАТАЗНАЧ("01.01.2026") - 🔄 Для отображения результата в днях (а не в формате даты) установите для ячейки с формулой формат
ОбщийилиЧисловой.
Этот метод подходит для 90% задач, но не учитывает рабочие/выходные дни. Если вам нужно исключить субботы и воскресенья, читайте следующий раздел.
2. Подсчёт только рабочих дней (исключаем выходные)
Для расчёта рабочих дней без учёта суббот и воскресений в Excel есть специальная функция — =ЧИСТРАБДНИ(). Она принимает три аргумента:
=ЧИСТРАБДНИ(дата_начала; дата_окончания; [праздники])
где [праздники] — необязательный диапазон с датами, которые тоже нужно исключить (например, государственные праздники).
Пример: Подсчитаем рабочие дни между 1 и 15 января 2026 года, исключив Новогодние каникулы (с 1 по 8 января). Для этого:
- В ячейке
A1укажите дату начала:01.01.2026. - В
B1— дату окончания:15.01.2026. - В диапазоне
D1:D8перечислите праздничные дни (1–8 января). - В ячейке
C1введите формулу:=ЧИСТРАБДНИ(A1; B1; D1:D8)Результат — 5 рабочих дней (с 9 по 15 января, без учёта выходных).
Если праздников нет, третий аргумент можно опустить:
=ЧИСТРАБДНИ(A1; B1)
Что делать, если функция ЧИСТРАБДНИ отсутствует?
В старых версиях Excel (до 2007 года) этой функции нет. Альтернатива — использовать комбинацию =ДЕНЬНЕД() и условное форматирование, но это сложнее. Обновите Excel или используйте Google Таблицы, где =NETWORKDAYS() работает стабильно.
Обратите внимание: функция ЧИСТРАБДНИ считает полные рабочие дни. Если дата начала или окончания попадает на выходной, она автоматически исключается. Например, для интервала с 06.01.2026 (суббота) по 10.01.2026 (среда) результат будет 2 дня (понедельник и вторник), а не 4.
3. Учёт праздников и нерабочих дней
В реальной работе часто приходится исключать не только выходные, но и праздники. Например, в России 1 мая — нерабочий день, даже если он выпадает на вторник. Для этого в функцию ЧИСТРАБДНИ добавляют третий аргумент — диапазон с датами праздников.
Пошаговая инструкция:
- Создайте на листе отдельный столбец (например,
E) и перечислите там все праздничные даты за год. - В формуле укажите этот диапазон:
=ЧИСТРАБДНИ(A1; B1; E1:E10)где
E1:E10— ячейки с праздничными датами. - Если праздников много, можно вынести их на отдельный лист (например,
Праздники!A1:A20).
Пример расчёта с учётом российских праздников в 2026 году:
| Дата начала | Дата окончания | Праздники (диапазон E1:E5) |
Формула | Результат |
|---|---|---|---|---|
| 01.01.2026 | 10.01.2026 | 01.01–08.01 | =ЧИСТРАБДНИ(A1; B1; E1:E5) |
0 |
| 09.01.2026 | 19.01.2026 | 01.01–08.01 | =ЧИСТРАБДНИ(A2; B2; E1:E5) |
7 |
| 23.02.2026 | 01.03.2026 | 23.02 | =ЧИСТРАБДНИ(A3; B3; E6) |
4 |
Создать отдельный лист "Праздники"|Перечислить все нерабочие даты за год|Проверить формат ячеек (должен быть "Дата")|Обновить список при смене года-->
Если праздники повторяются ежегодно (например, 8 Марта), можно автоматизировать их заполнение с помощью функции =ДАТА():
=ДАТА(2026; 3; 8)
где 2026 — год, 3 — март, 8 — число.
Вручную ввожу даты|Использую функцию ЧИСТРАБДНИ с диапазоном|Пользуюсь шаблонами из интернета|Не учитываю праздники-->
4. Расчёт дней между сегодняшней датой и заданной
Часто нужно посчитать, сколько дней осталось до дедлайна или прошло с определённой даты. Для этого используйте функцию =СЕГОДНЯ(), которая всегда возвращает текущую дату.
Примеры:
- 📅 Дней до события:
=A1-СЕГОДНЯ()где
A1— дата будущего события. Если результат отрицательный, событие уже прошло. - ⏳ Дней с момента события:
=СЕГОДНЯ()-A1 - ⚠️ Автоматическое обновление: функция
СЕГОДНЯ()пересчитывается при каждом открытии файла или изменении данных. Чтобы зафиксировать дату, используйтеCTRL + ;(горячие клавиши для вставки статической даты).
Практический кейс: Допустим, у вас есть таблица с сроками оплаты счетов. Чтобы выделить просроченные платежи красным цветом:
- Выделите столбец с датами оплаты.
- Перейдите в
Главная → Условное форматирование → Правила выделения ячеек → Меньше. - В поле введите
=СЕГОДНЯ()и выберите красный цвет.
Если вам нужно зафиксировать дату "на сегодня" (например, для отчёта), используйте комбинацию клавиш CTRL + ; — это вставит текущую дату как статическое значение.
5. Продвинутые приёмы: дни между датами с учётом времени
Иногда важно учитывать не только даты, но и время. Например, если проект начался в 14:00 10 января и закончился в 10:00 12 января, то фактическая продолжительность — 1 день и 20 часов, а не 2 дня.
Для таких расчётов используйте функцию =РАЗНДАТ() (англ. DATEDIF), но с осторожностью: она скрытая и не отображается в списке функций. Синтаксис:
=РАЗНДАТ(дата_начала; дата_окончания; "параметр")
Где параметр может быть:
"d"— полное количество дней (включая часы)."m"— полное количество месяцев."y"— полное количество лет."yd"— дни без учёта годов."md"— дни без учёта месяцев и годов.
Пример: Подсчитаем дни и часы между 10.01.2026 14:00 и 12.01.2026 10:00.
- В ячейке
A1укажите дату и время начала:10.01.2026 14:00. - В
B1— дату и время окончания:12.01.2026 10:00. - В
C1введите:=РАЗНДАТ(A1; B1; "d") & " дней, " & ТЕКСТ(B1-A1; "[ч] часов")Результат: "2 дней, 20 часов".
Важно: функция РАЗНДАТ не учитывает выходные и праздники. Для точных расчётов рабочего времени комбинируйте её с ЧИСТРАБДНИ.
6. Типичные ошибки и как их избежать
Даже в простых расчётах с датами пользователи допускают ошибки, которые ведут к некорректным результатам. Вот самые распространённые из них:
Ошибка 1: Текст вместо даты
⚠️ Внимание: Если ячейка содержит текст (например, "01-01-2026" вместо01.01.2026), Excel не сможет выполнить вычитание. Используйте=ДАТАЗНАЧ()для преобразования:=ДАТАЗНАЧ("01-01-2026")
Ошибка 2: Неправильный региональный формат
В России даты принято записывать как дд.мм.гггг, а в США — мм/дд/гггг. Если Excel неправильно интерпретирует дату (например, 01.02.2026 воспринимается как 1 февраля, а не 2 января), проверьте региональные настройки:
- Перейдите в
Файл → Параметры → Язык. - Убедитесь, что в разделе
Региональные параметрывыбраноРусский (Россия).
Ошибка 3: Отрицательное количество дней
Если формула возвращает отрицательное число (например, -5), это означает, что дата окончания раньше даты начала. Проверьте порядок ячеек в формуле:
=КОНЕЦ_ДАТЫ - НАЧАЛО_ДАТЫ // Правильно
=НАЧАЛО_ДАТЫ - КОНЕЦ_ДАТЫ // Ошибка (результат отрицательный)
Ошибка 4: Функция ЧИСТРАБДНИ игнорирует праздники
Если вы указали диапазон с праздничными датами, но они не исключаются, проверьте:
- 🔍 Формат ячеек с праздниками (должен быть
Дата, а неТекст). - 📌 Диапазон в формуле указан корректно (например,
E1:E10, а неE1;E10). - 🔄 Праздничные даты попадают в интервал между
дата_началаидата_окончания.
7. Визуализация результатов: графики и условное форматирование
Подсчёт дней — это только половина дела. Часто нужно наглядно показать данные: например, построить график выполнения задач или выделить просроченные сроки. Вот несколько приёмов:
Способ 1: Гистограмма сроков выполнения
- Создайте таблицу с датами начала и окончания задач, а также столбец с количеством дней (используйте формулу из раздела 1).
- Выделите данные и перейдите на вкладку
Вставка → Гистограмма. - Настройте оси: по горизонтали — названия задач, по вертикали — количество дней.
Способ 2: Условное форматирование для дедлайнов
Чтобы автоматически подсвечивать просроченные задачи:
- Выделите столбец с датами окончания.
- Перейдите в
Главная → Условное форматирование → Правила выделения ячеек → Дата → Прошлая неделя(или настройте своё правило). - Выберите красный цвет для ячеек с просроченными датами.
Способ 3: Диаграмма Ганта
Для управления проектами удобно использовать диаграмму Ганта. В Excel её можно создать вручную:
- Создайте таблицу с задачами, датами начала и продолжительностью в днях.
- Постройте
Ступенчатую диаграмму(Вставка → Диаграммы → Ступенчатая). - Настройте оси и добавьте линии для визуализации сроков.
Пример таблицы для диаграммы Ганта:
| Задача | Дата начала | Длительность (дни) |
|---|---|---|
| Анализ требований | 01.01.2026 | 5 |
| Проектирование | 06.01.2026 | 7 |
| Разработка | 13.01.2026 | 10 |
8. Автоматизация: макросы и Power Query
Если вам регулярно приходится считать дни в больших таблицах, имеет смысл автоматизировать процесс с помощью макросов или Power Query. Это сэкономит часы ручной работы.
Макрос для подсчёта рабочих дней
Создайте простой макрос, который будет считать рабочие дни между выделенными ячейками:
- Нажмите
ALT + F11, чтобы открыть редактор VBA. - Вставьте новый модуль (
Insert → Module). - Скопируйте следующий код:
Sub CountWorkDays()Dim StartDate As Date, EndDate As Date
StartDate = Selection.Cells(1).Value
EndDate = Selection.Cells(2).Value
MsgBox "Рабочих дней: " & Application.WorksheetFunction.NetWorkdays(StartDate, EndDate)
End Sub
- Вернитесь в Excel, выделите две ячейки с датами и запустите макрос (
ALT + F8 → CountWorkDays → Выполнить).
Power Query для обработки больших данных
Если у вас тысячи строк с датами, используйте Power Query:
- Перейдите на вкладку
Данные → Получить данные → Из таблицы/диапазона. - В редакторе Power Query добавьте новый столбец с формулой:
= Duration.Days([ДатаОкончания] - [ДатаНачала]) - Загрузите данные обратно в Excel.
Преимущества автоматизации:
- ⚡ Скорость: Обработка тысяч строк за секунды.
- 🔄 Гибкость: Легко добавлять новые правила (например, исключать дополнительные праздники).
- 📊 Интеграция: Результаты можно сразу визуализировать в Power BI.
Что такое Power Query?
Power Query — это инструмент в Excel для импорта, преобразования и загрузки данных из разных источников. Он позволяет очищать данные, объединять таблицы и создавать пользовательские столбцы с формулами на языке M. Доступен в версиях Excel 2016 и новее.
FAQ: Ответы на частые вопросы
Можно ли посчитать дни между датами в Google Таблицах?
Да, в Google Таблицах используются аналогичные функции:
=DATEDIF(A1; B1; "D")— полное количество дней.=NETWORKDAYS(A1; B1; C1:C5)— рабочие дни с учётом праздников (аналогЧИСТРАБДНИ).
Отличие: в Google Таблицах функция DATEDIF документирована и доступна в списке автозаполнения.
Как посчитать количество полных недель между датами?
Используйте функцию =ЦЕЛОЕ() для округления в меньшую сторону:
=ЦЕЛОЕ((B1-A1)/7)
Если нужно округлить до ближайшей недели (например, 8 дней = 2 недели), используйте =ОКРУГЛВВЕРХ():
=ОКРУГЛВВЕРХ((B1-A1)/7; 0)
Почему функция ЧИСТРАБДНИ возвращает ошибку #ИМЯ?
Ошибка #ИМЯ! означает, что Excel не распознаёт имя функции. Возможные причины:
- Опечатка в названии (правильно:
ЧИСТРАБДНИ, а неЧИСЛОРАБДНЕЙ). - Используется нерусская версия Excel (в английской версии функция называется
NETWORKDAYS). - Устаревшая версия Excel (до 2007 года). Обновите программу или используйте альтернативу:
=СУММПРОИЗВ(--(ДЕНЬНЕД(СТРОКА(НЕПРАВИЛЬНО(A1:B1));2)<6);--(A1:B1<>""))(это сложная формула, лучше обновить Excel).
Как посчитать дни с учётом полурабочих дней (например, суббота — короткий день)?summary>
Excel не имеет встроенной функции для учёта полурабочих дней, но можно использовать комбинацию формул:
- Создайте столбец с коэффициентами для каждого дня недели (например, 1 для полного рабочего дня, 0.5 для полурабочего).
- Используйте функцию
=ДЕНЬНЕД(), чтобы определить день недели для каждой даты.
- Примените
=СУММПРОИЗВ() для подсчёта с учётом коэффициентов.
Пример формулы для диапазона дат в A1:A10:
=СУММПРОИЗВ(--(ДЕНЬНЕД(A1:A10;2)<6); --(A1:A10<>""); ЕСЛИ(ДЕНЬНЕД(A1:A10;2)=6; 0,5; 1))
Здесь суббота (день недели = 6) считается как 0.5 дня.
=ДЕНЬНЕД(), чтобы определить день недели для каждой даты.=СУММПРОИЗВ() для подсчёта с учётом коэффициентов.A1:A10:
=СУММПРОИЗВ(--(ДЕНЬНЕД(A1:A10;2)<6); --(A1:A10<>""); ЕСЛИ(ДЕНЬНЕД(A1:A10;2)=6; 0,5; 1))Можно ли посчитать дни между датами в Excel Online?
Да, Excel Online поддерживает все основные функции для работы с датами:
=B1-A1— разность дат.=NETWORKDAYS(A1; B1)— рабочие дни (аналогЧИСТРАБДНИ, но на английском).=TODAY()— текущая дата (аналогСЕГОДНЯ()).
Ограничение: в Excel Online нет поддержки макросов (VBA), но все остальные функции работают так же, как в десктопной версии.