Работа с датами в Microsoft Excel — одна из самых востребованных задач среди аналитиков, бухгалтеров и менеджеров проектов. Нужно ли вам рассчитать срок выполнения задачи, определить просрочку по платежу или просто узнать, сколько дней осталось до важного события — без точных вычислений не обойтись. Однако многие пользователи до сих пор вручную вычитают даты в уме или используют калькулятор, теряя время и рискуя допустить ошибку.
На самом деле Excel предлагает более 10 встроенных функций для работы с датами, и половину из них можно применить для расчёта дней. В этой статье мы разберём не только базовые методы (вроде простого вычитания), но и продвинутые приёмы: учёт рабочих дней, игнорирование праздников, расчёт возраста в годах/месяцах и даже динамические формулы, которые обновляются автоматически. Вы узнаете, как избежать типичных ошибок (например, когда Excel показывает дату вместо числа) и как адаптировать формулы под свои задачи.
Для наглядности все примеры сопровождаются скриншотами и готовыми файлами, которые вы сможете скачать. А в конце статьи — FAQ с ответами на частые вопросы и таблица сравнения функций, чтобы выбрать оптимальный метод для вашей задачи.
1. Базовый метод: простое вычитание дат
Самый очевидный способ узнать количество дней между двумя датами — вычесть одну из другой. Excel автоматически преобразует разницу в дни, если ячейки отформатированы как даты.
Допустим, у вас в ячейке A1 дата начала проекта (15.05.2026), а в B1 — дата окончания (30.06.2026). Введите в ячейку C1 формулу:
=B1-A1
Результат: 46 (дней). Но здесь есть подводные камни:
- 📅 Формат ячеек: Если результат отображается как дата (например,
15.01.1900), измените формат ячейкиC1наОбщийилиЧисловой. Для этого нажмитеCtrl+1→ выберите категориюЧисловой. - ⚠️ Отрицательные значения: Если дата окончания раньше начальной, Excel покажет отрицательное число. Чтобы избежать этого, используйте функцию
ABS:=ABS(B1-A1) - 🔄 Динамический расчёт: Если одна из дат — сегодняшний день, используйте функцию
TODAY():=B1-TODAY()(обновит значение при каждом открытии файла).
2. Функция DATEDIF: расчёт дней, месяцев и лет
Функция DATEDIF (от англ. Date Difference) — одна из самых мощных, но скрытых в Excel. Она не отображается в списке функций (её не найдёте через Вставка → Функция), но работает во всех версиях, начиная с Excel 2000.
Синтаксис:
=DATEDIF(начальная_дата; конечная_дата; "единица_измерения")
Где единица_измерения может принимать значения:
"D"— количество дней;"M"— полных месяцев;"Y"— полных лет;"YM"— месяцев без учёта лет;"MD"— дней без учёта месяцев и лет;"YD"— дней без учёта лет (с учётом месяцев).
Пример: рассчитаем, сколько дней прошло с 01.01.2026 (ячейка A2) до сегодняшнего дня:
=DATEDIF(A2; TODAY(); "D")
Важно: Функция DATEDIF округляет результаты вниз. Например, если между датами 1 год и 11 месяцев, функция вернёт 1 год (а не 2).
Почему DATEDIF скрыта в Excel?
DATEDIF была добавлена для совместимости с Lotus 1-2-3 — популярным табличным редактором 1990-х. В современных версиях Excel её не рекламируют, но она по-прежнему работает и часто используется в сложных расчётах.
3. Рабочие дни: функция NETWORKDAYS
Если вам нужно посчитать только рабочие дни (исключая субботу и воскресенье), используйте функцию NETWORKDAYS (в русскоязычной версии — ЧИСТРАБДНИ).
Синтаксис:
=NETWORKDAYS(начальная_дата; конечная_дата; [праздники])
Аргумент [праздники] необязателен — это диапазон ячеек с датами праздников, которые тоже нужно исключить.
Пример: посчитаем рабочие дни между 01.06.2026 и 30.06.2026, исключив праздники из диапазона D1:D5:
=NETWORKDAYS("01.06.2026"; "30.06.2026"; D1:D5)
Чтобы функция работала корректно, убедитесь, что:
- 📆 Даты в аргументе
праздникиотформатированы как даты (а не текст). - 🔢 Диапазон праздников не содержит пустых ячеек (иначе Excel проигнорирует их).
| Функция | Назначение | Пример | Учитывает выходные? |
|---|---|---|---|
B1-A1 |
Простое вычитание дат | =B1-A1 |
Нет |
DATEDIF |
Разница в днях, месяцах, годах | =DATEDIF(A1; B1; "D") |
Нет |
NETWORKDAYS |
Рабочие дни (без субботы/воскресенья) | =NETWORKDAYS(A1; B1; D1:D5) |
Да |
WORKDAY |
Добавляет рабочие дни к дате | =WORKDAY(A1; 10) |
Да |
4. Учёт праздников и нестандартных выходных
Если в вашей стране или компании выходные дни отличаются от стандартных (например, пятница и суббота), используйте функцию NETWORKDAYS.INTL (в русскоязычной версии — ЧИСТРАБДНИ.МЕЖД).
Синтаксис:
=NETWORKDAYS.INTL(начальная_дата; конечная_дата; [выходные]; [праздники])
Аргумент [выходные] — это число или строка, определяющая, какие дни недели считаются выходными. Например:
1— суббота и воскресенье (по умолчанию);11— только воскресенье;"0000011"— пятница и суббота (где1— выходной,0— рабочий день).
Пример: посчитаем рабочие дни с 01.01.2026 по 31.01.2026, где выходные — пятница и суббота, а праздники указаны в диапазоне E1:E3:
=NETWORKDAYS.INTL("01.01.2026"; "31.01.2026"; "0000011"; E1:E3)
⚠️ Внимание: Если в аргументевыходныеуказать некорректную строку (например,"0000000"— без выходных), Excel вернёт ошибку#ЗНАЧ!. Всегда проверяйте формат строки: она должна содержать ровно 7 символов (по одному на каждый день недели, начиная с понедельника).
5. Расчёт возраста в годах, месяцах и днях
Чтобы узнать возраст человека или "возраст" проекта в годах, месяцах и днях, комбинируйте несколько функций. Например, для даты рождения в ячейке A1 (15.03.1990):
Формула для полных лет:
=DATEDIF(A1; TODAY(); "Y")
Формула для месяцев (без учёта лет):
=DATEDIF(A1; TODAY(); "YM")
Формула для дней (без учёта месяцев и лет):
=DATEDIF(A1; TODAY(); "MD")
Чтобы вывести результат в одной ячейке (например, "34 года, 2 месяца, 15 дней"), используйте функцию CONCATENATE (или &):
=DATEDIF(A1; TODAY(); "Y") & " года, " & DATEDIF(A1; TODAY(); "YM") & " мес., " & DATEDIF(A1; TODAY(); "MD") & " дн."
Для корректного склонения слов ("год", "года", "лет") потребуется более сложная формула с IF или CHOOSE. Пример для лет:
=DATEDIF(A1; TODAY(); "Y") & " " & CHOOSE(DATEDIF(A1; TODAY(); "Y")+1; "год"; "года"; "года"; "года"; "лет")
Ячейка с датой отформатирована как дата (не текст)|
Функция TODAY() обновляется автоматически|
Учтено склонение слов (год/года/лет)|
Проверены крайние случаи (например, дата рождения = сегодня)
-->
6. Динамические расчёты и ошибки
Excel позволяет создавать динамические формулы, которые обновляются при изменении данных или открытии файла. Например, чтобы всегда видеть, сколько дней осталось до дедлайна (в ячейке B1):
=B1-TODAY()
Если результат отрицательный — дедлайн просрочен. Чтобы выделить такие ячейки красным, используйте Условное форматирование:
- Выделите ячейку с формулой.
- Перейдите на вкладку
Главная → Условное форматирование → Правила выделения ячеек → Меньше.... - Введите
0и выберите красный цвет.
Типичные ошибки и их решения:
- 🔴
#ИМЯ?— опечатка в названии функции (например,DATEDIFнаписано какDATEIF). - 🔴
#ЗНАЧ!— неверный формат даты (проверьте, что ячейка содержит дату, а не текст). - 🔴 Результат отображается как дата (например,
01.01.1900) — измените формат ячейки наОбщий.
⚠️ Внимание: ФункцияTODAY()обновляется только при открытии файла или принудительном пересчёте (F9). Если вы отправляете файл коллеге, и он откроет его через неделю, все расчёты сTODAY()обновятся автоматически. Чтобы зафиксировать текущую дату, заменитеTODAY()на конкретную дату (например,"31.12.2026") перед сохранением.
7. Продвинутые приёмы: массивы и Power Query
Для сложных задач (например, расчёт дней между датами для тысяч строк или учёт индивидуальных графиков выходных) используйте:
- 📊 Формулы массива: Например, чтобы посчитать рабочие дни для списка дат в столбце
Aс учётом праздников из столбцаD:=NETWORKDAYS(A2:A100; B2:B100; D2:D10)(введите формулу как формулу массива с
Ctrl+Shift+Enterв старых версиях Excel). - 🔧 Power Query: Импортируйте данные в
Power Query(вкладкаДанные → Получить данные), добавьте столбец с расчётом дней и загрузите обратно в Excel. Это удобно для больших наборов данных. - 📈 DAX в Power Pivot: Если вы работаете с Power Pivot, используйте функцию
DATEDIFFв языке DAX:=DATEDIFF([StartDate]; [EndDate]; DAY)
Пример использования Power Query:
- Выделите таблицу с датами.
- Перейдите на вкладку
Данные → Из таблицы/диапазона. - В редакторе
Power Queryдобавьте пользовательский столбец с формулой:= Duration.Days([EndDate] - [StartDate]) - Нажмите
Закрыть и загрузить.
FAQ: Ответы на частые вопросы
Как посчитать дни между датами, если одна из них пустая?
Используйте функцию IF для проверки пустых ячеек. Например:
=IF(OR(ISBLANK(A1); ISBLANK(B1)); ""; B1-A1)
Эта формула вернёт пустую строку, если хотя бы одна из ячеек A1 или B1 пуста.
Можно ли посчитать дни с учётом только будних дней (понедельник-пятница)?
Да, используйте NETWORKDAYS без аргумента праздники:
=NETWORKDAYS(A1; B1)
По умолчанию она исключает субботу и воскресенье.
Как узнать, сколько дней прошло с начала года?
Вычтите из текущей даты первую дату года:
=TODAY() - DATE(YEAR(TODAY()); 1; 1)
Или для произвольной даты в ячейке A1:
=A1 - DATE(YEAR(A1); 1; 1)
Почему Excel показывает ###### вместо результата?
Это означает, что столбец слишком узкий для отображения даты или числа. Расширьте столбец или измените формат ячейки на Общий.
Как посчитать дни между датами в Google Таблицах?
Формулы идентичны Excel, за исключением:
- Функция
DATEDIFработает, но не документирована. - Для текущей даты используйте
TODAY()(как в Excel). - Формулы массива вводятся без
Ctrl+Shift+Enter.