Разница между двумя датами в Microsoft Excel вычисляется неверно, если просто вычесть одну ячейку из другой — программа возвращает число с дробной частью (время суток), а не целое количество дней. Чтобы получить точный результат, нужно использовать специализированные функции: РАЗНДАТ, DATEDIF, или комбинацию ДАТА с арифметическими операциями. При этом ошибки возникают даже у опытных пользователей: Excel может игнорировать формат ячеек, учитывать 1900 год как високосный или неправильно обрабатывать отрицательные значения.
Если вам нужно посчитать рабочие дни (без выходных), календарные дни (включая субботу-воскресенье), или точный интервал в годах/месяцах, подходы будут разными. Например, формула =DATEDIF(A1;B1;"D") вернёт полные дни между датами в ячейках A1 и B1, но не учтёт праздники. А функция ЧИСТРАБДНИ исключит субботы-воскресенья, но потребует дополнительного списка официальных нерабочих дней.
Далее разберём все варианты расчётов — от базовых до продвинутых, с учётом особенностей разных версий Excel (2010, 2016, 2019, 365) и Google Таблиц.
1. Базовый метод: вычитание дат
Самый простой способ узнать количество дней между двумя датами — вычесть из поздней даты более раннюю. Excel хранит даты как последовательные числа (начиная с 1 января 1900 года = 1), поэтому арифметическая операция сработает корректно только если ячейки отформатированы как даты.
Пример:
=B1-A1
где B1 — конечная дата, A1 — начальная. Результат будет в формате числа с дробной частью (например, 15,25 — 15 дней и 6 часов). Чтобы отобразить только целые дни, примените формат ячейки «Общий» или «Числовой» без десятичных знаков.
⚠️ Внимание: Если результат отрицательный (например, -10), это означает, что начальная дата позже конечной. Исправьте порядок ячеек в формуле.
- ✅ Работает во всех версиях Excel и Google Таблицах.
- ✅ Не требует дополнительных функций.
- ❌ Не учитывает рабочие/выходные дни.
- ❌ Дробная часть (время) может мешать при дальнейших расчётах.
2. Функция РАЗНДАТ (DATEDIF): гибкий расчёт интервалов
Функция РАЗНДАТ (или DATEDIF в английской версии) позволяет вычислить разницу между датами не только в днях, но и в месяцах или годах. Её синтаксис:
=РАЗНДАТ(нач_дата; кон_дата; единица_измерения)
где единица_измерения — это код формата вывода:
"D"— количество полных дней;"M"— полные месяцы;"Y"— полные годы;"YM"— месяцы без учёта лет;"MD"— дни без учёта месяцев и лет;"YD"— дни без учёта годов (с начала года).
Пример для дней:
=РАЗНДАТ(A1; B1; "D")
Важно: Функция РАЗНДАТ не отображается в мастер функций Excel (её нужно вводить вручную), но работает во всех версиях, включая Excel 2007 и новее.
Почему РАЗНДАТ не видна в списке функций?
Эта функция осталась в Excel для совместимости с устаревшими программами (например, Lotus 1-2-3). Microsoft не рекомендует её использовать в новых проектах, но она по-прежнему работает стабильно.
3. Учёт рабочих дней: функция ЧИСТРАБДНИ
Если нужно посчитать только рабочие дни (исключая субботу-воскресенье), используйте функцию ЧИСТРАБДНИ (или NETWORKDAYS):
=ЧИСТРАБДНИ(нач_дата; кон_дата; [праздники])
Необязательный аргумент [праздники] — это диапазон ячеек с датами официальных нерабочих дней (например, D1:D10).
Пример:
=ЧИСТРАБДНИ(A1; B1; $D$1:$D$5)
где D1:D5 — список праздников (например, 1 января, 8 марта и т.д.).
⚠️ Внимание: Если не указать праздники, функция проигнорирует их. Например, 1 мая будет считаться рабочим днём, если его не добавить в список исключений.
| Функция | Синтаксис | Что учитывает | Пример результата |
|---|---|---|---|
ЧИСТРАБДНИ |
=ЧИСТРАБДНИ(A1;B1;D1:D5) |
Выходные + праздники | 18 (из 25 календарных дней) |
РАЗНДАТ |
=РАЗНДАТ(A1;B1;"D") |
Все календарные дни | 25 |
ДЕНЬНЕД |
=ДЕНЬНЕД(A1;2) |
День недели (1=воскресенье) | 3 (среда) |
4. Расчёт дней с учётом текущей даты
Чтобы посчитать дни от фиксированной даты до сегодняшнего дня, используйте функцию СЕГОДНЯ() (или TODAY()):
=СЕГОДНЯ()-A1
Эта формула вернёт количество дней между датой в ячейке A1 и текущей датой. Важно: Результат будет автоматически обновляться при каждом открытии файла.
Если нужно зафиксировать текущую дату (чтобы она не менялась), используйте сочетание клавиш Ctrl+; (вставляет статическую дату) или функцию:
=ДАТА(ГОД(СЕГОДНЯ()); МЕСЯЦ(СЕГОДНЯ()); ДЕНЬ(СЕГОДНЯ()))
но это избыточно — проще ввести дату вручную.
5. Ошибки и их исправление
Частые проблемы при расчёте дней между датами и способы их решения:
- 🔴 #ЗНАЧ! — одна из ячеек не распознаётся как дата. Проверьте формат ячейки (
Формат ячеек → Дата). - 🔴 Отрицательное число — порядок дат перепутан. Поменяйте местами
нач_датаикон_дата. - 🔴 Неверный результат в
РАЗНДАТ— убедитесь, что используете кавычки для аргумента единицы измерения (например,"D", а неD). - 🔴 Дробная часть в результате — примените функцию
ЦЕЛОЕ()или измените формат ячейки.
Если даты введены как текст (например, "01.01.2023"), Excel не сможет их корректно обработать. Преобразуйте текст в дату с помощью:
=ДАТАЗНАЧ(A1)
или через меню «Текст по столбцам» (на вкладке «Данные»).
Ячейки отформатированы как "Дата"|Порядок дат корректный (нач_дата ≤ кон_дата)|Нет текстовых значений вместо дат|Учтён регион (1900 vs 1904 система дат)-->
6. Продвинутые сценарии
Для сложных расчётов используйте комбинации функций:
- 📅 Дни между датами без учёта выходных и праздников:
=ЧИСТРАБДНИ.МЕЖД(A1; B1; 1; D1:D5)(аргумент
1исключает субботу-воскресенье). - 📊 Процент выполнения задачи по дням:
=РАЗНДАТ(A1; СЕГОДНЯ(); "D") / РАЗНДАТ(A1; B1; "D")(где
A1— начало,B1— дедлайн). - 🔄 Дни до следующего дня рождения:
=ДАТА(ГОД(СЕГОДНЯ()+1); МЕСЯЦ(C1); ДЕНЬ(C1))-СЕГОДНЯ()(где
C1— дата рождения).
Критичный нюанс: В Excel 2016 и новее функция ЧИСТРАБДНИ.МЕЖД (англ. NETWORKDAYS.INTL) позволяет гибко настраивать выходные дни. Например, для расчёта по 6-дневной рабочей неделе (выходной только воскресенье) используйте:
=ЧИСТРАБДНИ.МЕЖД(A1; B1; 11; D1:D5)
где 11 — код для выходного только в воскресенье.
1) Формат ячеек с датами.
2) Региональные настройки Excel (система дат 1900 или 1904).
3) Наличие скрытых символов в датах (например, пробелов).-->
FAQ: Частые вопросы
Как посчитать дни между датами в Google Таблицах?
В Google Sheets работают те же функции, но с английскими названиями:
=DATEDIF(A1, B1, "D")— аналогичноРАЗНДАТ;=NETWORKDAYS(A1, B1, D1:D5)— какЧИСТРАБДНИ;=TODAY()-A1— дни до сегодня.
Отличие: в Google Таблицах функция DATEDIF отображается в списке автозаполнения.
Почему Excel показывает ###### вместо результата?
Это означает, что ширина столбца недостаточна для отображения числа. Растяните столбец или измените формат ячейки на «Общий». Также ошибка может возникать, если результат расчёта — отрицательное число с большим количеством знаков.
Можно ли посчитать дни между датами в Power Query?
Да, в Power Query (на вкладке «Данные» → «Получить данные») используйте:
- Загрузите таблицу с датами.
- Добавьте пользовательский столбец с формулой
= [Конечная дата] - [Начальная дата]. - Измените тип данных столбца на «Целое число».
Преимущество: Power Query автоматически обновляет расчёты при изменении исходных данных.
Как учитывать только будние дни без праздников?
Используйте ЧИСТРАБДНИ без третьего аргумента:
=ЧИСТРАБДНИ(A1; B1)
Эта формула исключит субботы и воскресенья, но не официальные праздники. Для их учёта добавьте диапазон с датами праздников (например, D1:D10).
Почему РАЗНДАТ возвращает ошибку #ЧИСЛО!?
Ошибка возникает в трёх случаях:
- Начальная дата позже конечной (используйте
ЕСЛИОШИБКАдля обработки). - Одна из ячеек содержит некорректную дату (например,
31.02.2023). - Аргумент единицы измерения указан без кавычек (например,
Dвместо"D").