Расчёт сроков в Microsoft Excel — одна из самых востребованных задач при работе с проектными планами, графиками поставок или личными финансами. Даже если вы никогда не использовали функции даты и времени, освоить их проще, чем кажется: достаточно знать 3-4 базовые формулы и принципы их комбинирования. В этой статье разберём, как вычислять разницу между датами, учитывать только рабочие дни, добавлять месяцы к дате без ошибок с концами месяцев, и даже создавать динамические графики выполнения задач.
Особенность работы с датами в Excel в том, что программа хранит их как последовательные числа (начиная с 1 января 1900 года = 1). Это позволяет выполнять арифметические операции: складывать дни, вычитать периоды или делить сроки на этапы. Но без знания нюансов легко получить некорректные результаты — например, при расчёте возраста в годах или количества рабочих дней с учётом праздников. Мы покажем, как избежать типичных ошибок и автоматизировать рутинные вычисления.
1. Базовый расчёт: разница между двумя датами
Самая простая задача — узнать, сколько дней прошло между двумя датами. Для этого достаточно вычесть одну дату из другой. Например, если в ячейке A1 указана дата начала проекта (15.05.2026), а в B1 — дата окончания (30.06.2026), формула будет:
=B1-A1
Результат отобразится в формате даты, но если выделить ячейку и применить формат «Общий» или «Числовой», Excel покажет количество дней (в нашем примере — 46). Этот метод работает и для расчёта возраста, срока действия договора или времени выполнения задачи.
- 📅 Формат ячейки: Убедитесь, что обе ячейки имеют формат
Дата(выделите →Главная → Формат → Формат ячеек → Дата). Иначе Excel воспримет значения как текст. - ⚠️ Отрицательные значения: Если дата окончания раньше начальной, результат будет отрицательным. Используйте
=ABS(B1-A1), чтобы получить модуль разницы. - 🔄 Дробные дни: Excel учитывает и время. Если в ячейках указаны дата и время (например,
15.05.2026 14:30), результат будет дробным (например,46,25дня = 46 дней и 6 часов).
⚠️ Внимание: Если при вычитании дат вы получаете странное число вроде45389, проверьте формат ячеек. Скорее всего, Excel интерпретирует введённые данные как текст, а не как дату. Используйте функцию=ДАТАЗНАЧ()для преобразования, например:=ДАТАЗНАЧ("30.06.2026")-ДАТАЗНАЧ("15.05.2026").
2. Функция ДНИ: простой способ без вычитания
Для тех, кто предпочитает готовые функции, в Excel есть =ДНИ() (англ. DAYS). Она возвращает количество дней между двумя датами и имеет синтаксис:
=ДНИ(дата_окончания; дата_начала)
Например, =ДНИ("30.06.2026"; "15.05.2026") вернёт 46. Преимущество функции в том, что она автоматически игнорирует формат ячеек и всегда возвращает целое число. Это удобно, если исходные даты хранятся в текстовом формате или подтягиваются из внешних источников.
Аналогично работает функция =ДНИ360() (англ. DAYS360), но она использует упрощённую схему расчёта, где каждый месяц считается как 30 дней. Это актуально для финансовых расчётов, где важна стандартизация (например, при начислении процентов по кредитам). Синтаксис:
=ДНИ360(дата_начала; дата_окончания; [метод])
- 💰 Метод расчёта: Необязательный третий аргумент определяет, как обрабатывается последний день месяца. По умолчанию (
ЛОЖЬ) используется европейский метод, где 31-е число приравнивается к 30-му. - 📊 Пример:
=ДНИ360("15.05.2026"; "30.06.2026")вернёт45(а не 46, как в реальном календаре).
3. Рабочие дни: исключаем выходные и праздники
Для расчёта сроков выполнения задач часто требуется учитывать только рабочие дни, исключая субботу, воскресенье и праздники. В Excel для этого есть функция =ЧИСТРАБДНИ() (англ. NETWORKDAYS). Её синтаксис:
=ЧИСТРАБДНИ(дата_начала; дата_окончания; [праздники])
Третий аргумент — необязательный диапазон ячеек с датами праздников. Например, если в ячейках D1:D5 перечислены праздники (каждый в отдельной ячейке), формула примет вид:
=ЧИСТРАБДНИ(A1; B1; D1:D5)
Для России в 2026 году праздничными днями являются: 1-8 января, 23 февраля, 8 марта, 1-2 мая, 9 мая, 12 июня, 4 ноября. Их можно заранее внести в отдельный лист или диапазон.
| Функция | Пример | Результат | Пояснение |
|---|---|---|---|
=ЧИСТРАБДНИ("15.05.2026"; "30.06.2026") | — | 33 | Без учёта праздников |
=ЧИСТРАБДНИ("15.05.2026"; "30.06.2026"; D1:D5) | В D1:D5 указаны 9 мая и 12 июня | 31 | Исключены 2 праздничных дня |
=РАБДЕНЬ() | =РАБДЕНЬ("15.05.2026"; 10) | 29.05.2026 | Добавляет 10 рабочих дней к дате |
⚠️ Внимание: Функция=ЧИСТРАБДНИ()считает субботу и воскресенье выходными по умолчанию. Если у вас нестандартный график (например, рабочая суббота), используйте функцию=ЧИСТРАБДНИ.МЕЖД()(англ.NETWORKDAYS.INTL), где можно указать свои выходные дни через числовой код.
4. Добавление дней, месяцев или лет к дате
Часто требуется не только посчитать разницу, но и сдвинуть дату на определённый период. Для этого есть несколько функций:
- 📅
=ДАТА()— создаёт дату из года, месяца и дня. Полезна для динамических расчётов. Пример:=ДАТА(2026; 5; 15)вернёт15.05.2026. - ➕
=ДАТАМЕС()(англ.EDATE) — добавляет указанное количество месяцев к дате. Пример:=ДАТАМЕС("15.05.2026"; 3)вернёт15.08.2026. Автоматически корректирует дату, если месяц короче (например,31.01.2026 + 1 месяц = 29.02.2026). - 🔢
=ДАТА + число— простой способ добавить дни. Пример:=A1 + 10сдвинет дату на 10 дней вперёд.
Для добавления лет нет отдельной функции, но можно комбинировать =ДАТА() с =ГОД():
=ДАТА(ГОД(A1)+5; МЕСЯЦ(A1); ДЕНЬ(A1))
Эта формула добавит 5 лет к дате в ячейке A1, сохраняя месяц и день. Если дата выпадает на 29 февраля в невисокосный год, Excel автоматически перенесёт её на 28.02.
Сравните результат с календарём|Учтите переход на зимнее/летнее время (если актуально)|Проверьте формат ячеек с датами|Используйте условное форматирование для выделения просроченных сроков-->
5. Расчёт возраста: сколько полных лет, месяцев и дней
Вычисление возраста — классическая задача, где важно учитывать не только годы, но и месяцы с днями. Например, человек родился 15.05.1990, а сегодня 10.06.2026. Сколько ему полных лет?
Простая разница =ГОД(СЕГОДНЯ())-ГОД("15.05.1990") даст 34, но это неверно, потому что день рождения ещё не наступил. Правильная формула:
=ЕСЛИ(ИЛИ(МЕСЯЦ(СЕГОДНЯ())>МЕСЯЦ("15.05.1990"); И(МЕСЯЦ(СЕГОДНЯ())=МЕСЯЦ("15.05.1990"); ДЕНЬ(СЕГОДНЯ())>=ДЕНЬ("15.05.1990"))); ГОД(СЕГОДНЯ())-ГОД("15.05.1990"); ГОД(СЕГОДНЯ())-ГОД("15.05.1990")-1)
Для вывода полных лет, месяцев и дней в одной ячейке используйте:
=ДОЛЯГОДА("15.05.1990"; СЕГОДНЯ(); 1) & " лет (" & ЦЕЛОЕ(ДОЛЯГОДА("15.05.1990"; СЕГОДНЯ(); 1)*12) & " мес., " & ОСТАТ(ДЕНЬ(СЕГОДНЯ()-"15.05.1990"); 30) & " дн.)"
Важно: функция =ДОЛЯГОДА() может давать погрешности при расчёте возраста из-за разных методов округления. Для точности лучше разделять годы, месяцы и дни на отдельные ячейки.
6. Динамические графики выполнения задач
Если вам нужно визуализировать сроки (например, для диаграммы Ганта), используйте линейчатую диаграмму с накоплением. Для этого:
- Создайте таблицу с датами начала и окончания задач.
- Добавьте столбец с количеством дней для каждой задачи (например,
=B2-A2). - Выделите данные и вставьте
Линейчатую диаграмму с накоплением(Вставка → Диаграммы → Линейчатая → С накоплением). - Настройте оси: по горизонтали — дни, по вертикали — задачи.
Для автоматического обновления графика при изменении дат используйте именованные диапазоны или таблицы Excel (Вставка → Таблица). Это позволит добавлять новые задачи без ручной правки диаграммы.
Как добавить линию текущей даты?
Создайте дополнительный ряд данных с формулой =СЕГОДНЯ()-$A$1 (где A1 — дата начала проекта). Добавьте этот ряд на диаграмму и настройте для него отдельную ось или измените цвет линии на красный.
7. Типичные ошибки и как их избежать
Даже опытные пользователи Excel сталкиваются с ошибками при работе с датами. Вот самые распространённые:
- 🗓️ Текст вместо даты: Если дата введена как текст (например,
"15.05.2026"без форматирования), формулы не будут работать. Используйте=ДАТАЗНАЧ()для преобразования. - 🌍 Региональные настройки: В американском формате даты месяц идёт первым (
MM/DD/YYYY). Если ваш Excel настроен так,05.06.2026будет интерпретировано как 5 июня, а не 6 мая. Проверьте настройки вФайл → Параметры → Язык → Региональные параметры. - ⏳ 1900 vs 1904: Excel для Windows по умолчанию использует систему дат с
1900 года, а для Mac — с1904 года. Это может сбивать расчёты при переносе файлов между платформами. Чтобы проверить, введите=ДАТА(1900;1;1)— если результат2, у вас система 1900.
⚠️ Внимание: Если при копировании формулы с датами вы получаете ошибку#ЗНАЧ!, проверьте, не содержат ли ячейки пустые значения или текст. Используйте функцию=ЕЧИСЛО()для проверки:=ЕСЛИ(ЕЧИСЛО(A1); A1; "").
FAQ: Ответы на частые вопросы
Как посчитать количество недель между датами?
Разделите разницу в днях на 7 и округлите вверх: =ОКРВВЕРХ(B1-A1; 7). Для точного количества полных недель используйте =ЦЕЛОЕ((B1-A1)/7).
Можно ли учитывать только будние дни без праздников?
Да, используйте =ЧИСТРАБДНИ() без третьего аргумента. Она автоматически исключает субботу и воскресенье, но не праздники.
Как вычесть 3 месяца из даты, если результат выпадает на несуществующий день (например, 31 апреля)?
Функция =ДАТАМЕС() автоматически корректирует дату. Например, =ДАТАМЕС("31.03.2026"; -1) вернёт 29.02.2026 (если год високосный) или 28.02.2026.
Почему функция =ДНИ() возвращает ошибку #ИМЯ?
Скорее всего, у вас английская версия Excel, где функция называется DAYS. Замените на =DAYS() или используйте русскоязычную версию.
Как посчитать срок в часах и минутах?
Умножьте разницу на 24 (для часов) или на 1440 (для минут): =(B1-A1)*24 и =(B1-A1)*1440. Примените формат «Время» к ячейке.