Зачем считать дни в Excel и какие задачи это решает
Расчёт дней между датами в Microsoft Excel — одна из самых востребованных операций после арифметических вычислений. С её помощью решают задачи от бытовых до профессиональных: определяют сроки выполнения проектов, рассчитывают просрочки по платежам, анализируют временные интервалы в отчётах или даже планируют личные события. Например, бухгалтеру нужно узнать, сколько дней прошло с момента оплаты счета до его списания, а менеджеру проекта — оценить реальный срок выполнения задачи с учётом выходных.
Главная сложность заключается в том, что Excel хранит даты как числа (количество дней с 1 января 1900 года), а пользователю требуется преобразовать их в удобный формат. Без понимания этого принципа даже простая разница между двумя датами может вызвать ошибки — например, если не учитывать, что 01.01.2026 для программы это число 45292. К тому же, часто нужны не просто календарные дни, а рабочие — без выходных и праздников, что усложняет формулы.
В этой статье разберём 7 способов подсчёта дней — от элементарных до продвинутых, с учётом нюансов форматирования, типичных ошибок и оптимизации для больших массивов данных. Вы узнаете, как:
- 📅 Вычислить разницу между датами в днях, месяцах и годах;
- 🏢 Исключить выходные и праздники из расчётов;
- ⏳ Посчитать дни до конкретной даты (например, дедлайна);
- 🔄 Автоматизировать обновление дат при изменении исходных данных.
Способ 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-СЕГОДНЯ(); "Срок истёк")
Для визуального контроля добавьте условное форматирование:
- Выделите ячейку с результатом.
- Перейдите в
Главная → Условное форматирование → Создать правило. - Выберите
"Форматировать только ячейки, которые содержат". - Установите условие:
"Значение меньше" → 5и задайте красный цвет текста.
Как зафиксировать текущую дату (без обновлений)
Функция СЕГОДНЯ() динамическая — она меняется при каждом открытии файла. Если нужно сохранить дату "на момент создания отчёта", замените её на статическое значение:
- Введите в ячейку
=СЕГОДНЯ(). - Скопируйте ячейку (
Ctrl+C). - Выполните
Правка → Специальная вставка → Значения(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: Подсчёт дней в месяце или году (функции ДЕНЬНЕД, КОНМЕСЯЦА)
Иногда требуется узнать не разницу между датами, а количество дней в конкретном месяце или году. Для этого используйте комбинацию функций:
ДЕНЬНЕД— определяет день недели;КОНМЕСЯЦА— возвращает последний день месяца;ДАТА— создаёт дату из года, месяца и дня.
Примеры:
- Количество дней в текущем месяце:
=ДЕНЬ(КОНМЕСЯЦА(СЕГОДНЯ();0))Функция
КОНМЕСЯЦАвозвращает дату последнего дня месяца (например,31.05.2026), аДЕНЬизвлекает из неё число (31). - Количество рабочих дней в месяце:
=ЧИСТРАБДНИ(ДАТА(ГОД(СЕГОДНЯ());МЕСЯЦ(СЕГОДНЯ());1); КОНМЕСЯЦА(СЕГОДНЯ();0))Здесь
ДАТА(ГОД();МЕСЯЦ();1)создаёт первую дату месяца, аКОНМЕСЯЦА— последнюю.
Для подсчёта дней в году используйте простую проверку на високосность:
=ЕСЛИ(ИЛИ(ОСТАТ(GOD(дата);400)=0; И(ОСТАТ(GOD(дата);4)=0; ОСТАТ(GOD(дата);100)<>0)); 366; 365)
Способ 6: Автоматизация с помощью Power Query (для больших данных)
Если вам нужно обработать тысячи строк с датами (например, журнал посещаемости или лог транзакций), ручной подсчёт дней станет неэффективным. В таких случаях используйте Power Query — инструмент для преобразования и загрузки данных. Алгоритм действий:
- Выделите исходную таблицу и перейдите на вкладку
Данные → Получение данных → Из таблицы/диапазона. - В открывшемся редакторе Power Query добавьте столбец с разницей дат:
- Перейдите на вкладку
Добавить столбец → Настраиваемый столбец. - Введите формулу:
[Конечная дата] - [Начальная дата].
- Перейдите на вкладку
Duration.Days и учётом выходных.Закрыть и загрузить, чтобы вернуть данные в Excel.Преимущества Power Query:
- 🔄 Обработка миллионов строк без замедления;
- 🔄 Автоматическое обновление при изменении исходных данных;
- 📊 Возможность объединения с другими источниками (SQL, CSV).
⚠️ Внимание: При импорте дат из внешних источников (например, CSV) Excel может интерпретировать их как текст. Перед расчётами проверьте формат столбца и при необходимости преобразуйте данные с помощью Таблица → Преобразовать → Изменить тип → Дата.
Типичные ошибки и как их избежать
Даже опытные пользователи Excel сталкиваются с ошибками при работе с датами. Вот самые распространённые:
- Ошибка
#ЗНАЧ!:Причина: одна или обе даты введены как текст (например,
"15 мая"вместо15.05.2026).Решение: Используйте
ДАТАЗНАЧили измените формат ячейки наДата. - Неправильный результат в
ДАТАРАЗН:Причина: перепутан порядок аргументов (начальная и конечная даты).
Решение: Убедитесь, что первая дата меньше второй, или используйте
АБСдля абсолютного значения:=АБС(ДАТАРАЗН(A1;B1;"D")) - Отрицательные дни в
ЧИСТРАБДНИ:Причина: конечная дата раньше начальной.
Решение: Поменяйте даты местами или примените
АБС. - Некорректный учёт праздников:
Причина: в списке праздников указаны даты в текстовом формате.
Решение: Преобразуйте список в формат
Датаили используйтеДАТАЗНАЧ.
Важно: Excel хранит даты как числа, начиная с 1 января 1900 года (это день №1). Поэтому даты до 1900 года (например, 31.12.1899) не поддерживаются и приводят к ошибкам. Для исторических расчётов используйте специализированное ПО.
FAQ: Ответы на частые вопросы
Как посчитать дни между датами, если одна из них пустая?
Если одна из ячеек пустая, Excel вернёт ошибку. Чтобы избежать этого, используйте функцию ЕСЛИ для проверки:
=ЕСЛИ(И(NOT(ЕПУСТО(A1)); NOT(ЕПУСТО(B1))); B1-A1; "Данные неполные")
Либо замените пустые ячейки текущей датой:
=ЕСЛИ(ЕПУСТО(B1); СЕГОДНЯ()-A1; B1-A1)
Можно ли посчитать дни с учётом половинных рабочих дней (например, суббота — короткий день)?
Стандартные функции Excel не поддерживают дробные рабочие дни. Решение:
- Создайте вспомогательную таблицу с коэффициентами для каждого дня (например,
1для полного дня,0.5для половинного). - Используйте
ЧИСТРАБДНИ.МЕЖДдля подсчёта полных дней. - Добавьте корректировку через
СУММПРОИЗВ, умножая дни на коэффициенты.
Почему функция ДАТАРАЗН возвращает неверное количество месяцев?
Функция ДАТАРАЗН считает полные месяцы. Например, разница между 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)
Можно ли автоматически обновлять количество дней при изменении даты в другой книге?
Да, но для этого нужно:
- Сохранить обе книги в доверенном расположении (например, на жёстком диске).
- В основной книге создать ссылку на внешнюю дату:
=[Книга2.xlsx]Лист1!$A$1. - Настроить автоматическое обновление связей:
Данные → Обновить все.
Обратите внимание: Excel блокирует автоматическое обновление внешних ссылок в файлах из интернета или недоверенных источников.