Работа с датами в Microsoft Excel — одна из самых востребованных задач для аналитиков, бухгалтеров и менеджеров проектов. Нужно ли рассчитать срок выполнения задачи, определить просрочку платежа или просто узнать, сколько дней прошло между двумя событиями? Всё это можно сделать за считанные секунды, если знать правильные формулы.
Многие пользователи ошибочно думают, что для вычисления разницы между датами требуются сложные функции или макросы. На самом деле, даже новичок справится с этой задачей, используя базовые инструменты программы. Главное — понимать, как Excel хранит даты (в виде последовательных чисел, где 1 января 1900 года = 1) и какие функции лучше применять в конкретных ситуациях.
В этой статье мы разберём не только стандартный способ вычитания дат, но и научимся учитывать рабочие/выходные дни, исключать праздники, а также автоматизировать расчёты для больших массивов данных. Вы узнаете, как избежать типичных ошибок и почему иногда Excel показывает неверный результат.
Базовый метод: простое вычитание дат
Самый простой способ узнать количество дней между двумя датами — вычесть одну из другой. Это работает потому, что Excel интерпретирует даты как числовые значения. Например, 15.05.2026 для программы — это число 45415 (количество дней с 1 января 1900 года).
Формула выглядит так:
=КОНДАТА-НАЧДАТА
где КОНДАТА и НАЧДАТА — ячейки с конечной и начальной датами соответственно.
Пример: если в ячейке A2 указана дата начала проекта 01.01.2026, а в B2 — дата окончания 31.01.2026, формула =B2-A2 вернёт 30 (количество дней в январе).
⚠️ Внимание: Если результат отображается в формате даты (например,31.12.1899), измените формат ячейки на Общий или Числовой. Для этого выделите ячейку с результатом и нажмитеCtrl+1, затем выберите нужный формат.
Этот метод универсален, но не учитывает рабочие/выходные дни. Если вам нужно исключить субботы, воскресенья или праздники — читайте дальше.
Функция РАЗНДАТ: расширенные возможности
Для более гибких расчётов используйте функцию =РАЗНДАТ() (англ. DATEDIF). Она позволяет вычислять разницу не только в днях, но и в месяцах или годах. Синтаксис:
=РАЗНДАТ(нач_дата; кон_дата; единица)
где единица — это код возвращаемого значения:
- 📅
"d"— разница в днях - 📆
"m"— разница в полных месяцах - 📅
"y"— разница в полных годах - 📅
"ym"— разница в месяцах без учёта лет - 📅
"yd"— разница в днях без учёта лет
Пример: формула =РАЗНДАТ("01.01.2026"; "15.03.2026"; "d") вернёт 74 (дни между датами), а =РАЗНДАТ("01.01.2026"; "15.03.2026"; "m") — 2 (полных месяца).
Особенность РАЗНДАТ: её нет в списке функций Excel (она унаследована от Lotus 1-2-3), поэтому вводите её вручную. Также функция не работает с датами до 01.01.1900.
Учёт рабочих дней: функция ЧИСТРАБДНИ
Чтобы исключить субботы, воскресенья и праздники из расчёта, используйте =ЧИСТРАБДНИ() (англ. NETWORKDAYS). Синтаксис:
=ЧИСТРАБДНИ(нач_дата; кон_дата; [праздники])
где [праздники] — необязательный диапазон ячеек с датами праздничных дней.
Пример: если в ячейках A2:A10 перечислены государственные праздники, формула будет такой:
=ЧИСТРАБДНИ(B2; C2; A2:A10)
Важно: по умолчанию функция считает субботу и воскресенье выходными. Если у вас другой график (например, выходной — пятница), используйте =ЧИСТРАБДНИ.МЕЖД() (англ. NETWORKDAYS.INTL), где можно задать свои выходные дни.
| Функция | Назначение | Пример |
|---|---|---|
ЧИСТРАБДНИ |
Рабочие дни (без субботы/воскресенья) | =ЧИСТРАБДНИ(A2; B2) |
ЧИСТРАБДНИ.МЕЖД |
Рабочие дни с кастомными выходными | =ЧИСТРАБДНИ.МЕЖД(A2; B2; 11) (выходной — воскресенье) |
РАБДЕНЬ |
Добавляет рабочие дни к дате | =РАБДЕНЬ(A2; 10) (прибавляет 10 рабочих дней) |
⚠️ Внимание: Если в диапазоне[праздники]указаны даты, которые попадают на выходные, функцияЧИСТРАБДНИих проигнорирует. Например, если 8 марта выпадает на субботу, включать его в список праздников не нужно.
Расчёт дней с учётом текущей даты
Чтобы посчитать дни между фиксированной датой и сегодняшним днём, используйте функцию =СЕГОДНЯ(). Она автоматически подставляет текущую дату с учётом системных настроек компьютера.
Примеры формул:
- 📅
=СЕГОДНЯ()-A2— сколько дней прошло с даты в ячейкеA2 - 📅
=A2-СЕГОДНЯ()— сколько дней осталось до даты вA2(если результат отрицательный, дата уже прошла) - 📅
=РАЗНДАТ(A2; СЕГОДНЯ(); "d")— альтернативный вариант для разницы в днях
Важно: функция СЕГОДНЯ() пересчитывается автоматически при каждом открытии файла или изменении данных. Если вам нужно зафиксировать текущую дату (например, для отчёта), используйте комбинацию Ctrl+; (вставляет статическую дату).
Убедитесь, что формат ячейки с результатом — "Общий" или "Числовой"|Проверьте системную дату на компьютере (она должна быть актуальной)|Если используете СЕГОДНЯ() в фильтруемой таблице, закрепите строку с формулой ($A$1)|Для архивных отчётов замените СЕГОДНЯ() на фиксированную дату-->
Ошибки и их решения
Даже в простых расчётах с датами могут возникать ошибки. Вот самые распространённые проблемы и способы их исправления:
1. Результат в формате даты (например, 31.12.1899)
Причина: ячейка с результатом имеет формат Дата. Решение: выделите ячейку → Ctrl+1 → выберите формат Общий.
2. Ошибка #ЗНАЧ! (недопустимый тип аргумента)
Причины:
- 🔴 Одна из ячеек содержит текст вместо даты (например, "01.01.2026г.")
- 🔴 Дата введена в некорректном формате (например,
01-01-2026вместо01.01.2026) - 🔴 Ячейка пустая
Решение: проверьте формат ячеек с датами (должен быть Дата) и удалите лишние символы.
3. Отрицательное значение
Причина: конечная дата раньше начальной. Решение: поменяйте местами аргументы в формуле или используйте =АБС(КОНДАТА-НАЧДАТА), чтобы получить модуль разницы.
⚠️ Внимание: Если вы копируете формулы с датами из интернета, убедитесь, что разделитель даты в них соответствует вашим региональным настройкам. В русскоязычном Excel разделитель — точка (.), а в англоязычном — косая черта (/). Например,=DATEDIF("01/01/2026", TODAY(), "d")не сработает в русской версии.
Продвинутые приёмы: динамические диапазоны и условное форматирование
Для работы с большими массивами данных полезно автоматизировать расчёты. Вот несколько продвинутых техник:
1. Автоматическое подсчёт дней для списка дат
Если у вас таблица с колонками Дата начала и Дата окончания, протяните формулу =ЧИСТРАБДНИ(B2; C2) вниз, и Excel сам посчитает разницу для каждой строки.
2. Подсветка просроченных задач
Используйте условное форматирование, чтобы выделить ячейки, где разница между датами отрицательная (просрочка):
- Выделите диапазон с результатами (например,
D2:D100). - Перейдите на вкладку
Главная → Условное форматирование → Создать правило. - Выберите
Форматировать ячейки, которые содержат. - Установите условие
Значение меньше 0и задайте цвет (например, красный).
3. Динамический расчёт с учётом праздников из другого листа
Если праздники хранятся на отдельном листе (например, Лист2!A2:A20), используйте формулу:
=ЧИСТРАБДНИ(B2; C2; Лист2!A$2:A$20)
Знак
Если вам лень вводить праздники вручную, можно скачать готовый список (например, с сайта КонсультантПлюс) и импортировать его в Excel через $ фиксирует столбец при копировании формулы вниз.
Как импортировать праздники автоматически?
Данные → Из текста/CSV. Главное — убедитесь, что даты распознаны корректно (Excel иногда ошибается с форматом при импорте).
FAQ: Ответы на частые вопросы
Можно ли посчитать дни между датами в Excel Online?
Да, все описанные функции (РАЗНДАТ, ЧИСТРАБДНИ, СЕГОДНЯ) работают и в веб-версии Excel. Однако некоторые продвинутые возможности (например, условное форматирование с формулами) могут быть ограничены.
Как посчитать дни между датами с учётом только рабочих часов?
Excel не имеет встроенной функции для расчёта разницы в часах с учётом рабочего времени. Но вы можете:
- Посчитать количество рабочих дней (
ЧИСТРАБДНИ). - Умножить результат на количество рабочих часов в день (например,
=ЧИСТРАБДНИ(A2; B2)*8для 8-часового дня).
Для точного расчёта (например, с 9:00 до 18:00) потребуется VBA-скрипт.
Почему функция РАЗНДАТ возвращает ошибку #ИМЯ?
Это происходит, если:
- 🔴 Функция введена с опечаткой (например,
РАЗНДАТАвместоРАЗНДАТ). - 🔴 Используются русские названия аргументов в англоязычной версии Excel (напишите
DATEDIFвместоРАЗНДАТ). - 🔴 Даты указаны в некорректном формате (например, текст вместо даты).
Проверьте синтаксис и формат ячеек.
Как посчитать дни между датами в Google Таблицах?
В Google Sheets используются те же функции, но с англоязычным синтаксисом:
- 📌
=DATEDIF(A2, B2, "D")— разница в днях. - 📌
=NETWORKDAYS(A2, B2, C2:C10)— рабочие дни с учётом праздников из диапазонаC2:C10. - 📌
=TODAY()-A2— дни с указанной даты до сегодня.
Отличие: в Google Таблицах функция DATEDIF есть в списке автозаполнения (в отличие от Excel).
Можно ли посчитать дни между датами с точностью до минут?
Да, если даты включают время. Например:
= (B2-A2)*1440
где A2 и B2 содержат дату и время (например, 01.01.2026 14:30). Формула вернёт разницу в минутах. Для часов используйте множитель 24 вместо 1440.