Работа с датами в Microsoft Excel — одна из самых востребованных задач, будь то расчёт стажа сотрудников, сроков выполнения проектов или анализ временных интервалов в финансовых отчётах. Однако даже опытные пользователи часто сталкиваются с ошибками при вычислении разницы между датами: то формула возвращает неверный формат, то учитывает выходные, когда это не нужно. Эта статья поможет разобраться, как правильно задать период между датами в Excel — от простых арифметических операций до сложных расчётов с учётом рабочих дней и праздников.
Мы рассмотрим не только стандартные функции вроде DATEDIF, но и малоизвестные приёмы для нетипичных задач: например, как посчитать количество полных месяцев между двумя датами или исключить из расчёта конкретные дни недели. Особое внимание уделим распространённым ошибкам, из-за которых Excel выдаёт некорректные результаты, и покажем, как их избежать. Если вы когда-либо получали вместо разницы между датами странное число вроде 44197 — эта инструкция для вас.
Для наглядности все примеры сопровождаются скриншотами (в текстовом формате) и готовыми формулами, которые можно скопировать в свою таблицу. А в конце статьи вы найдёте FAQ с ответами на самые частые вопросы — от форматирования ячеек до расчёта возраста по дате рождения.
Почему Excel показывает даты как числа и как это исправить
Перед тем как приступать к расчётам, важно понять, как Excel хранит даты. Внутри программы любая дата — это просто число, где 1 соответствует 1 января 1900 года (в Windows) или 1904 года (в Mac). Например, дата 10.05.2026 в числовом формате будет выглядеть как 45412. Этот нюанс объясняет, почему при вычитании одной даты из другой вы получаете целое число — количество дней между ними.
Если вместо привычной даты в ячейке отображается число (например, 44197), это означает, что у ячейки установлен общий формат (Общий). Чтобы исправить:
- 📅 Выделите ячейку или диапазон с датами.
- 🖱️ Нажмите правой кнопкой мыши и выберите
Формат ячеек(или используйте сочетаниеCtrl+1). - 📊 В открывшемся окне перейдите на вкладку
Числои выберите форматДата(например,14.03.2001).
Критическая ошибка: если вы введёте дату в ячейку с текстовым форматом (например, 10/05/2026), Excel воспримет её как текст, и формулы не будут работать. Всегда проверяйте формат ячейки перед расчётами!
Чтобы быстро проверить, распознаёт ли Excel вашу запись как дату, попробуйте изменить ширину столбца: если значение выравнивается по правому краю — это число (дату можно форматировать), если по левому — текст (нужно исправить ввод).
Способ 1: Простое вычитание дат (разница в днях)
Самый базовый метод — вычесть одну дату из другой. Excel автоматически вернёт разницу в днях. Например, если в ячейке A1 указана дата начала проекта (01.01.2026), а в B1 — дата окончания (31.01.2026), формула будет такой:
=B1-A1
Результат: 30 (количество дней между датами). Этот способ подходит для большинства задач, где нужна календарная разница, например:
- 📦 Сроки доставки товара.
- 📅 Продолжительность акций или распродаж.
- ⏳ Время выполнения задачи в трекере.
Однако у метода есть ограничения:
⚠️ Внимание: Если результат отрицательный (например,-15), это означает, что дата в первой ячейке позже, чем во второй. Чтобы избежать путаницы, используйте функциюABSдля получения абсолютного значения:=ABS(B1-A1).
Для удобства можно добавить к результату поясняющий текст. Например, чтобы вывести не просто 30, а 30 дней, используйте функцию CONCATENATE (или оператор &):
=B1-A1 & " дней"
☑️ Подготовка к расчёту разницы дат
Способ 2: Функция DATEDIF — расчёт лет, месяцев и дней
Функция DATEDIF (от англ. Date Difference) — самый мощный инструмент для работы с временными интервалами в Excel. Она позволяет вычислить разницу не только в днях, но и в полных годах, месяцах или комбинациях. Синтаксис функции:
=DATEDIF(начальная_дата; конечная_дата; единица_измерения)
Аргумент единица_измерения определяет, что именно вы хотите посчитать:
"D"— разница в днях."M"— разница в полных месяцах."Y"— разница в полных годах."YM"— разница в месяцах без учёта лет (например, между01.01.2023и15.03.2023вернёт2)."MD"— разница в днях без учёта месяцев и лет."YD"— разница в днях без учёта годов (используется редко).
Примеры использования:
| Задача | Формула | Результат для дат01.01.2020 и 15.03.2023 |
|---|---|---|
| Полных лет | =DATEDIF(A1; B1; "Y") |
3 |
| Полных месяцев | =DATEDIF(A1; B1; "M") |
38 |
| Дней без учёта лет | =DATEDIF(A1; B1; "MD") |
14 (разница между 1 и 15 марта) |
| Общий стаж (лет и месяцев) | =DATEDIF(A1; B1; "Y") & " лет, " & DATEDIF(A1; B1; "YM") & " мес." |
3 лет, 2 мес. |
⚠️ Внимание: ФункцияDATEDIFне документирована в официальной справке Excel, но работает во всех версиях программы. Однако она может выдавать ошибку#ЧИСЛО!, если начальная дата позже конечной. Всегда проверяйте порядок аргументов!
Для расчёта возраста по дате рождения часто используют комбинацию DATEDIF с функцией TODAY (текущая дата):
=DATEDIF(дата_рождения; TODAY(); "Y")
Эта формула автоматически обновляется при открытии файла, показывая актуальный возраст.
Способ 3: Функция DAYS — альтернатива простому вычитанию
В Excel 2013 и новее появилась функция DAYS, которая упрощает расчёт разницы в днях. Её синтаксис:
=DAYS(конечная_дата; начальная_дата)
Преимущества DAYS перед простым вычитанием:
- 🔍 Более читаемый код (ясно, что формула возвращает дни).
- 🛡️ Меньше риск ошибок при копировании формул (порядок аргументов интуитивен).
- 📊 Работает с датами в текстовом формате (например,
="10.05.2026"), если они корректно распознаются.
Пример:
=DAYS("31.12.2026"; "01.01.2026")
Результат: 365 (количество дней в 2026 году).
Обратите внимание, что Если конечная дата раньше начальной, функция вернёт отрицательное число дней. Это нормальное поведение, но если вам нужны только положительные значения, оберните формулу в ABS: DAYS не учитывает время — если в ячейках указаны дата и время (например, 10.05.2026 14:30), функция проигнорирует временную часть. Для расчёта разницы с учётом часов и минут используйте простое вычитание (=B1-A1) и настройте формат ячейки как [ч]:мм.
Почему функция DAYS может возвращать отрицательное значение?
=ABS(DAYS(B1; A1)).
Способ 4: Расчёт рабочих дней (исключая выходные и праздники)
Для бизнес-задач часто требуется посчитать только рабочие дни, исключив субботу, воскресенье и праздники. В Excel для этого есть две функции:
NETWORKDAYS— учитывает только выходные (по умолчанию суббота и воскресенье).NETWORKDAYS.INTL— позволяет задать свои выходные дни (например, пятница и суббота для стран Ближнего Востока).
Синтаксис NETWORKDAYS:
=NETWORKDAYS(начальная_дата; конечная_дата; [праздники])
Аргумент [праздники] — необязательный диапазон с датами праздников.
Пример: посчитаем рабочие дни между 01.01.2026 и 31.01.2026, исключив Новогодние каникулы (01.01.2026–08.01.2026):
=NETWORKDAYS("01.01.2026"; "31.01.2026"; {"01.01.2026"; "02.01.2026"; "03.01.2026"; "04.01.2026"; "05.01.2026"; "06.01.2026"; "07.01.2026"; "08.01.2026"})
Результат: 17 (из 31 дня в январе 2026 года только 17 рабочих).
Для NETWORKDAYS.INTL добавлен параметр выходные, где можно указать:
1— суббота и воскресенье (по умолчанию).11— только воскресенье.12— суббота и воскресенье (аналогNETWORKDAYS).17— пятница и суббота (для стран с выходными в эти дни).
⚠️ Внимание: Если в аргументе [праздники] указана дата, которая и так является выходным (например, суббота), она не будет учтена повторно. Функция сначала исключает выходные, а затем праздники из оставшихся дней.
Для автоматизации можно создать отдельный лист с праздничными датами и ссылаться на него в формуле. Например, если праздники перечислены в диапазоне Праздники!A2:A10, формула примет вид:
=NETWORKDAYS(A1; B1; Праздники!A2:A10)
Способ 5: Расчёт периодов с учётом времени (часы, минуты, секунды)
Если в ваших данных указаны не только даты, но и время (например, 10.05.2026 09:30), простое вычитание вернёт разницу в днях с дробной частью, где дробь — это доля суток. Чтобы преобразовать её в часы, минуты или секунды, используйте:
- 🕒 Часы:
=(B1-A1)*24 - ⏱️ Минуты:
=(B1-A1)*1440 - ⏲️ Секунды:
=(B1-A1)*86400
Пример: если в A1 указано 10.05.2026 09:00, а в B1 — 10.05.2026 17:30, формула =(B1-A1)*24 вернёт 8,5 (8 часов 30 минут).
Чтобы отобразить результат в формате чч:мм:сс, установите для ячейки с формулой пользовательский формат:
- Выделите ячейку →
Формат ячеек(Ctrl+1). - Выберите категорию
Все форматы. - В поле
Типвведите:[ч]:мм:сс(квадратные скобки вокругчпозволяют отображать значения более 24 часов).
Для расчёта ночных смен или интервалов, пересекающих полночь, этот метод незаменим. Например, если смена началась в 22:00 10.05.2026 и закончилась в 06:00 11.05.2026, формула вернёт 8:00, а не ошибочные -16:00.
Типичные ошибки и как их избежать
Даже в простых расчётах с датами пользователи допускают ошибки, которые искажают результаты. Вот самые распространённые:
- Текст вместо даты: Если дата введена как текст (например,
'10.05.2026с апострофом), Excel не распознаёт её как дату. Решение: Используйте функциюДАТАЗНАЧдля преобразования:=ДАТАЗНАЧ("10.05.2026") - Неправильный порядок дат: Формулы вроде
DATEDIFилиDAYSвозвращают ошибку, если начальная дата позже конечной. Решение: Проверяйте порядок аргументов или используйтеABS. - Формат ячейки: Результат вычитания дат отображается как дата (например,
30.01.1900вместо30). Решение: Установите для ячейки форматОбщийилиЧисловой. - Високосные годы: Функции вроде
DATEDIFкорректно учитывают високосные годы (например, 2026), но при ручных расчётах их легко упустить. Решение: Полностью полагайтесь на встроенные функции.
Ещё одна частая проблема — разные системы дат в Excel для Windows и Mac. В Windows отсчёт идёт с 01.01.1900 (система 1900), а в Mac по умолчанию может использоваться система 1904. Чтобы проверить:
- Перейдите в
Файл → Параметры → Дополнительно. - Посмотрите параметр
При переходе на другую книгу→Использовать систему дат 1904. Если галочка стоит, снимите её для совместимости.
⚠️ Внимание: Если вы работаете с файлом, созданным на Mac, в Windows даты могут сдвинуться на 4 года (1462 дня). Всегда уточняйте систему дат при совместной работе!
Практические примеры: от стажа до сроков годности
Разберём реальные задачи, где расчёт периодов между датами критически важен.
1. Расчёт стажа сотрудника:
Допустим, в A2 указана дата приёма на работу (15.06.2018), а в B2 — текущая дата (=TODAY()). Формула для стажа в формате "X лет Y месяцев":
=DATEDIF(A2; B2; "Y") & " лет, " & DATEDIF(A2; B2; "YM") & " мес."
Результат: 5 лет, 10 мес. (для мая 2026 года).
2. Срок годности продукта:
Если в A1 указана дата производства (01.03.2026), а в B1 — срок годности в днях (90), формула для даты истечения:
=A1+B1
Формат ячейки установите как Дата. Результат: 29.05.2026.
3. Анализ времени выполнения задач:
В проекте указаны даты начала (C2) и окончания (D2) задач. Чтобы посчитать среднее время выполнения для 10 задач:
=AVERAGE(D2:D11 - C2:C11)
Установите для ячейки с формулой формат Числовой (среднее в днях).
4. Контроль дедлайнов:
Если в E2 указана дата дедлайна (30.06.2026), а в F2 — текущая дата (=TODAY()), формула для отображения оставшихся дней с предупреждением:
=IF(E2-F2<=3; "Срочно! Осталось " & E2-F2 & " дней"; E2-F2 & " дней")
Если до дедлайна 3 дня или меньше, ячейка отобразит "Срочно! Осталось 2 дней".
FAQ: Ответы на частые вопросы
Как посчитать количество полных недель между датами?
Используйте функцию DATEDIF с делением на 7:
=ЦЕЛОЕ(DATEDIF(A1; B1; "D")/7)
Или для точного результата (с учётом остатка дней):
=DATEDIF(A1; B1; "D")/7
Установите для ячейки формат с 2 десятичными знаками.
Почему функция DATEDIF возвращает #ЧИСЛО!?
Ошибка #ЧИСЛО! возникает в трёх случаях:
- Начальная дата позже конечной.
- Один из аргументов не является датой (например, текст).
- Неправильный третий аргумент (например, опечатка в
"YM").
Проверьте порядок дат и формат ячеек.
Как исключить из расчёта конкретные дни недели (например, среду)?
Для этого придётся использовать массив формул. Пример для исключения сред (3 — среда в функции WEEKDAY):
=SUMPRODUCT(--(WEEKDAY(ROW(INDIRECT(A1&":"&B1)))<>3))
Где A1 и B1 — начальная и конечная даты. Функция вернёт количество дней, кроме сред.
Можно ли посчитать разницу между датами в кварталах?
Да, с помощью комбинации функций YEAR и MONTH:
= (ГОД(B1) - ГОД(A1)) * 4 + ЦЕЛОЕ((МЕСЯЦ(B1) - 1) / 3) - ЦЕЛОЕ((МЕСЯЦ(A1) - 1) / 3)
Формула вернёт разницу в кварталах (например, между 01.01.2023 и 15.05.2023 будет 1 квартал).
Как посчитать возраст с учётом месяца (например, 2 года и 3 месяца)?
Используйте вложенные функции DATEDIF:
=DATEDIF(дата_рождения; TODAY(); "Y") & " г. " & DATEDIF(дата_рождения; TODAY(); "YM") & " мес."
Для точности можно добавить дни:
=DATEDIF(A1; TODAY(); "Y") & " г. " & DATEDIF(A1; TODAY(); "YM") & " мес. " & DATEDIF(A1; TODAY(); "MD") & " дн."