Зачем считать дни в Excel и какие задачи это решает
Расчёт количества дней между датами — одна из самых востребованных операций в Microsoft Excel и Google Таблицах. Без этого не обойтись при планировании проектов, расчёте рабочего времени, анализе временных интервалов или даже в бытовых задачах, например, при подсчёте дней до отпуска. Но далеко не все пользователи знают, что в Excel есть несколько способов посчитать дни — от элементарного вычитания до сложных формул с учётом выходных, праздников и рабочих смен.
Самая простая ситуация — когда нужно узнать, сколько дней прошло между двумя датами. Например, срок выполнения задачи или продолжительность акции. Но что если требуется исключить выходные? Или посчитать только рабочие дни в нестандартном графике? А как быть с ошибками вроде #ЗНАЧ!, когда Excel не распознаёт формат даты? В этой статье разберём все нюансы — от базовых формул до продвинутых приёмов, которые экономят часы ручной работы.
Особое внимание уделим типичным ошибкам, которые допускают даже опытные пользователи. Например, многие не знают, что Excel хранит даты как числа (где 1 — это 1 января 1900 года), и это может привести к неожиданным результатам при некорректном форматировании. Или что функция ДАТА может "сломаться", если передать в неё неверные аргументы. Мы покажем, как избежать таких ловушек и получить точный результат с первого раза.
Способ 1: Простое вычитание дат (базовый метод)
Самый очевидный и универсальный способ — вычесть одну дату из другой. Excel автоматически преобразует разницу в количество дней, так как внутренне хранит даты в числовом формате. Например, если в ячейке A1 у вас дата начала проекта (10.05.2026), а в B1 — дата окончания (20.05.2026), достаточно ввести формулу:
=B1-A1
Результат — 10 дней. Но здесь есть подводные камни:
- 📅 Формат ячеек: Если Excel показывает вместо числа дату вроде
01.01.1900, значит, результат отформатирован как дата. Исправьте формат наОбщийилиЧисловой. - ⚠️ Отрицательные значения: Если дата окончания раньше начальной, результат будет отрицательным. Это нормально, но иногда требуется модуль (используйте
=ABS(B1-A1)). - 🔄 Время в датах: Если в ячейках указано не только число, но и время (например,
10.05.2026 14:30), разница будет включать дробную часть (часы). Чтобы оставить только дни, используйте=ЦЕЛОЕ(B1-A1).
⚠️ Внимание: Если при вычитании вы получаете ошибку#ЗНАЧ!, проверьте, что обе ячейки содержат именно даты, а не текст. Например, дата в формате10-май-2026может восприниматься как строка, если ячейка отформатирована как текст.
Способ 2: Функция РАЗНДАТ для гибких расчётов
Функция РАЗНДАТ (или DATEDIF в английской версии) — более мощный инструмент, чем простое вычитание. Она позволяет рассчитывать разницу не только в днях, но и в месяцах или годах, а также игнорировать годы/месяцы при подсчёте. Синтаксис:
=РАЗНДАТ(начальная_дата; конечная_дата; единица_измерения)
Где единица_измерения может принимать значения:
| Аргумент | Описание | Пример результата |
|---|---|---|
"d" |
Количество дней между датами | =РАЗНДАТ("10.05.2026"; "20.05.2026"; "d") → 10 |
"m" |
Количество полных месяцев | =РАЗНДАТ("10.05.2026"; "20.06.2026"; "m") → 1 |
"y" |
Количество полных лет | =РАЗНДАТ("10.05.2023"; "20.05.2026"; "y") → 1 |
"yd" |
Дни без учёта лет | =РАЗНДАТ("10.05.2023"; "15.05.2026"; "yd") → 5 |
Важно: функция РАЗНДАТ не dokumentирована в официальной справке Excel, но работает во всех версиях, включая Excel 365 и Excel 2019. Однако в Google Таблицах её нет — там используйте =DATEDIF.
Пример: чтобы посчитать, сколько дней осталось до Нового года с сегодняшнего дня (если сегодня 10.12.2026):
=РАЗНДАТ(СЕГОДНЯ(); "31.12.2026"; "d")
Способ 3: Подсчёт только рабочих дней (исключаем выходные)
Если вам нужно посчитать только рабочие дни, исключив субботы и воскресенья, используйте функцию ЧИСТРАБДНИ (или NETWORKDAYS в английской версии). Она учитывает стандартный 5-дневный график и автоматически пропускает выходные.
Синтаксис:
=ЧИСТРАБДНИ(начальная_дата; конечная_дата; [праздники])
Необязательный аргумент [праздники] позволяет указать диапазон ячеек с датами праздников, которые также нужно исключить. Например:
- 📊 Простой расчёт:
=ЧИСТРАБДНИ("10.05.2026"; "20.05.2026")→ вернёт9дней (из 10 исключены 1 суббота и 1 воскресенье). - 🎉 С учётом праздников: Если в ячейках
D1:D3указаны даты праздников (например,01.05.2026,09.05.2026), формула будет:=ЧИСТРАБДНИ("10.05.2026"; "20.05.2026"; D1:D3).
⚠️ Внимание: ФункцияЧИСТРАБДНИсчитает субботу и воскресенье выходными по умолчанию. Если у вас другой график (например, рабочие субботы), используйте функциюЧИСТРАБДНИ.МЕЖД(доступна с Excel 2010), где можно задать свои выходные дни.
Убедитесь, что даты в ячейках имеют формат "Дата"|Проверьте, что праздники указаны в отдельном диапазоне|Используйте абсолютные ссылки (например, $D$1:$D$3) для праздников, если формула копируется|Если нужно учесть полупраздничные дни, добавьте их в список праздников-->
Способ 4: Расчёт дней с учётом нестандартного графика (ЧИСТРАБДНИ.МЕЖД)
Если ваша организация работает по нестандартному графику (например, 2 через 2, или рабочие субботы), функция ЧИСТРАБДНИ.МЕЖД (NETWORKDAYS.INTL) придёт на помощь. Она позволяет задать произвольные выходные дни через числовой код или строку.
Синтаксис:
=ЧИСТРАБДНИ.МЕЖД(начальная_дата; конечная_дата; [выходные]; [праздники])
Аргумент [выходные] может быть:
- 🔢 Числом: Например,
1— суббота и воскресенье (стандарт),11— только воскресенье. - 📜 Строкой: Например,
"0000011", где1— выходной,0— рабочий день (начиная с понедельника). Пример:"0000011"— выходные пятница и суббота.
Пример: посчитаем рабочие дни для графика "2 через 2" (2 рабочих дня, 2 выходных) между 01.06.2026 и 15.06.2026:
=ЧИСТРАБДНИ.МЕЖД("01.06.2026"; "15.06.2026"; "1010101")
Здесь строка "1010101" означает:
- Понедельник (
1) — выходной - Вторник (
0) — рабочий - Среда (
1) — выходной - Четверг (
0) — рабочий - Пятница (
1) — выходной - Суббота (
0) — рабочий - Воскресенье (
1) — выходной
Как быстро создать строку для нестандартных выходных?
Если вам сложно запомнить порядок дней в строке (начиная с понедельника), используйте этот приём:
1. Напишите дни недели в строке: Пн Вт Ср Чт Пт Сб Вс.
2. Под каждым днём укажите 1 (выходной) или 0 (рабочий).
3. Объедините цифры в строку без пробелов.
Пример для выходных "среда и воскресенье": 0 0 1 0 0 0 1 → "0010001".
Способ 5: Посчитать дни между датами с условиями (ЕСЛИ + РАЗНДАТ)
Иногда нужно посчитать дни только при выполнении определённого условия. Например, сколько дней прошло с момента последней покупки клиента, но только если сумма покупки превышала 10 000 рублей. Для этого комбинируем РАЗНДАТ с функцией ЕСЛИ.
Допустим, у вас есть таблица:
| Дата покупки (A) | Сумма (B) | Дней с покупки (C) |
|---|---|---|
10.05.2026 |
12 500 |
=ЕСЛИ(B2>10000; РАЗНДАТ(A2; СЕГОДНЯ(); "d"); "") |
05.05.2026 |
8 000 |
(пусто) |
Формула в ячейке C2 проверяет, превышает ли сумма 10 000. Если да — считает дни с покупки до сегодняшнего дня. Если нет — оставляет ячейку пустой.
Другой пример: подсчёт дней просрочки по задачам, где дата выполнения уже прошла:
=ЕСЛИ(B2<СЕГОДНЯ(); РАЗНДАТ(B2; СЕГОДНЯ(); "d"); 0)
Здесь B2 — дата дедлайна. Если она раньше сегодняшней, формула возвращает количество дней просрочки; иначе — 0.
Типичные ошибки и как их избежать
Даже опытные пользователи Excel иногда сталкиваются с ошибками при работе с датами. Вот самые распространённые проблемы и их решения:
- 🗓️ Текст вместо даты: Если ячейка отформатирована как текст, Excel не распознаёт её как дату. Исправляйте формат через
Формат ячеек → Датаили используйте функциюДАТАЗНАЧдля преобразования текста в дату. - ❌ Ошибка #ИМЯ?: Возникает, если название функции написано с ошибкой (например,
РАЗНДАТАвместоРАЗНДАТ). Проверьте синтаксис. - 🔙 Отрицательные дни: Если начальная дата позже конечной, результат будет отрицательным. Используйте
=ABS(РАЗНДАТ(...)), если нужна всегда положительная разница. - 📅 Неправильный регион: В некоторых локалях Excel использует точку как разделитель даты (
10.05.2026), в других — косую черту (10/05/2026). Если формула не работает, проверьте региональные настройки вФайл → Параметры → Язык.
⚠️ Внимание: ФункцияСЕГОДНЯ()обновляется при каждом пересчёте листа. Если вам нужно зафиксировать текущую дату (например, для отчёта), используйтеCTRL + ;(сочетание клавиш для вставки статической даты) или скопируйте значениеСЕГОДНЯ()черезСпециальная вставка → Значения.
FAQ: Ответы на частые вопросы
Как посчитать дни между датами, если одна из них пустая?
Если в ячейке нет даты, формула вернёт ошибку. Используйте ЕСЛИ для проверки:
=ЕСЛИ(И(A2<>""; B2<>""); B2-A2; "")
Эта формула считает разницу только если обе ячейки (A2 и B2) не пустые.
Можно ли посчитать дни с учётом только рабочих часов?
Excel не имеет встроенной функции для подсчёта рабочих часов, но можно обойтись комбинацией формул. Например, если рабочий день — 8 часов:
=ЧИСТРАБДНИ(A2; B2) * 8
Это вернёт количество рабочих часов между датами (без учёта праздников).
Почему РАЗНДАТ возвращает неверное количество месяцев?
Функция РАЗНДАТ с аргументом "m" считает полные месяцы. Например, между 31.01.2026 и 28.02.2026 будет 0 месяцев, так как 28 февраля — это не полный месяц с 31 января. Для точного подсчёта используйте:
=РАЗНДАТ(A2; B2; "m") + ЕСЛИ(ДЕНЬ(B2)>=ДЕНЬ(A2); 0; 1)
Как посчитать дни до конкретной даты в будущем?
Используйте комбинацию РАЗНДАТ с СЕГОДНЯ():
=РАЗНДАТ(СЕГОДНЯ(); "31.12.2026"; "d")
Если дата уже прошла, результат будет отрицательным. Чтобы показывать только будущие дни:
=ЕСЛИ(СЕГОДНЯ()<"31.12.2026"; РАЗНДАТ(СЕГОДНЯ(); "31.12.2026"; "d"); 0)
Можно ли посчитать дни между датами в разных временных зонах?
Excel не поддерживает временные зоны напрямую. Если у вас даты с указанием времени (например, 10.05.2026 10:00), сначала приведите их к одной временной зоне вручную, а затем используйте стандартные функции. Например, для перевода из UTC в московское время добавьте 3 часа:
=A2 + ВРЕМЯ(3; 0; 0)
Где A2 — ячейка с датой в UTC.