Работа с датами в Microsoft Excel — одна из самых востребованных задач среди пользователей. Нужно ли посчитать количество дней между двумя событиями, определить возраст клиента или рассчитать срок выполнения проекта — без вычитания дат не обойтись. Но что делать, если Excel вместо корректного результата выдает странные числа или ошибки? Почему иногда разница отображается в неправильном формате?
Многие ошибочно думают, что для работы с датами нужны сложные формулы или макросы. На самом деле, даже базовых функций Excel достаточно для 90% задач. Главное — понимать, как программа хранит даты (подсказка: это просто числа!) и какие инструменты использовать в конкретных ситуациях. В этой статье мы разберем все способы вычитания дат — от элементарных до продвинутых, с учетом рабочих дней, выходных и даже праздников.
Вы научитесь не только получать разницу в днях, но и конвертировать её в месяцы, годы или часы. А еще мы раскроем секреты, как избежать типичных ошибок при работе с датами разных форматов (например, когда одна дата введена как текст). Готовы превратить хаос в таблицах в четкую систему? Тогда приступим!
Почему Excel показывает числа вместо дат?
Прежде чем вычитать даты, важно понять, как Excel их хранит. Программа воспринимает каждую дату как порядковый номер, где 1 соответствует 1 января 1900 года (в Windows) или 1 января 1904 года (в Mac по умолчанию). Например:
- 📅
01.01.2023=44927(прошло 44 926 дней с 1900 года) - 📅
31.12.2023=45291 - 🕒
15:30:00=0.64583(доля суток)
Когда вы вводите дату в ячейку, Excel автоматически преобразует её в этот числовой формат, но отображает в привычном виде благодаря формату ячейки. Если же вы увидели вместо 10.05.2026 число 45416 — не пугайтесь! Это нормально. Просто измените формат ячейки на Дата через контекстное меню или сочетание Ctrl+1.
Этот принцип объясняет, почему вычитание дат работает как арифметическая операция: 45291 - 44927 = 364 (количество дней между 1 января и 31 декабря 2023 года). Но что делать, если Excel упорно показывает даты как текст? Об этом — в следующем разделе.
Базовый способ: простое вычитание ячеек
Самый простой метод — вычесть одну дату из другой напрямую. Предположим, у вас в ячейке A1 дата начала проекта (15.03.2026), а в B1 — дата завершения (30.04.2026). Введите в C1 формулу:
=B1-A1
Excel автоматически вернет разницу в днях — 46. Если результат отображается как дата (например, 16.01.1900), измените формат ячейки C1 на Общий или Числовой.
Этот метод работает и для вычитания текущей даты. Используйте функцию СЕГОДНЯ() (или TODAY() в английской версии):
=СЕГОДНЯ()-A1
Такая формула вернет количество дней от даты в A1 до сегодняшнего дня. Обратите внимание: функция СЕГОДНЯ() пересчитывается автоматически при каждом открытии файла или изменении данных.
Убедитесь, что обе даты в формате "Дата" (не текст!)
Проверьте, что в ячейках нет скрытых символов (пробелов, апострофов)
Используйте функцию ДАТАЗНАЧ() для преобразования текста в дату
Сравните системы дат (1900 vs 1904) в Файл → Параметры → Дополнительно-->
Функция ДАТАРАЗН() для точного расчета
Если нужно вычесть даты с учетом лет, месяцев и дней по отдельности, используйте функцию ДАТАРАЗН() (или DATEDIF в английской версии). Её синтаксис:
=ДАТАРАЗН(начальная_дата; конечная_дата; единица_измерения)
Аргумент единица_измерения определяет, в чем будет измерена разница:
- 📅
"y"— полные годы - 📆
"m"— полные месяцы - 🕒
"d"— дни (игнорируя годы и месяцы) - 📅📆
"ym"— месяцы без учета лет - 📅🕒
"yd"— дни без учета лет - 📆🕒
"md"— дни без учета месяцев и лет
Пример: чтобы узнать, сколько полных лет прошло с 10.06.1995 (ячейка A1) до сегодняшнего дня:
=ДАТАРАЗН(A1; СЕГОДНЯ(); "y")
Важный нюанс: функция ДАТАРАЗН() не документирована в официальной справке Excel, но работает во всех версиях программы. Она особенно полезна для расчета возраста, стажа или сроков действия договоров.
Функция ДАТАРАЗН() была добавлена в Excel для совместимости с программой Lotus 1-2-3, но так и не получила официального описания. Несмотря на это, Microsoft гарантирует её поддержку в будущих версиях.Почему ДАТАРАЗН() не документирована?
Учет рабочих дней: функция ЧИСТРАБДНИ()
Часто требуется посчитать не календарные, а рабочие дни (исключая выходные и праздники). Для этого используйте функцию ЧИСТРАБДНИ():
=ЧИСТРАБДНИ(начальная_дата; конечная_дата; [праздники])
Необязательный аргумент [праздники] — это диапазон ячеек с датами праздничных дней. Например, если в D1:D5 перечислены праздники, формула примет вид:
=ЧИСТРАБДНИ(A1; B1; D1:D5)
По умолчанию функция считает выходными субботу и воскресенье. Если у вас другой график (например, пятница и суббота), используйте ЧИСТРАБДНИ.МЕЖД() с указанием выходных дней:
=ЧИСТРАБДНИ.МЕЖД(A1; B1; 5; D1:D5)
где 5 — код выходного дня (1=понедельник, 7=воскресенье).
Ошибки при вычитании дат и как их исправить
Даже опытные пользователи сталкиваются с ошибками при работе с датами. Вот самые распространенные проблемы и их решения:
⚠️ Внимание: Если формула возвращает ######, проверьте ширину столбца — Excel не может отобразить длинное число. Растяните столбец или измените формат ячейки.
| Ошибка | Причина | Решение |
|---|---|---|
#ЗНАЧ! |
Даты введены как текст | Используйте ДАТАЗНАЧ() или измените формат ячейки |
| Неправильная разница (например, 1 вместо 365) | Даты в разных системах (1900 vs 1904) | Проверьте настройки в Файл → Параметры → Дополнительно |
#ЧИСЛО! |
Отрицательная разница дат | Поменяйте местами начальную и конечную даты |
| Результат в формате даты (например, 01.01.1900) | Неверный формат ячейки | Измените формат на Общий или Числовой |
Еще одна типичная ошибка — неучет времени. Если ваши даты содержат часы и минуты (например, 10.05.2026 14:30), простое вычитание вернет дробное число, где целая часть — дни, а дробная — время. Чтобы получить только дни, используйте функцию ЦЕЛОЕ():
=ЦЕЛОЕ(B1-A1)
Продвинутые приемы: вычитание с учетом времени
Когда точность важна до часа или минуты, используйте комбинацию функций для работы с датой и временем. Например, чтобы посчитать разницу в часах между двумя метками времени:
=(B1-A1)*24
Аналогично для минут и секунд:
- ⏱️
=(B1-A1)*1440— разница в минутах - ⏲️
=(B1-A1)*86400— разница в секундах
Если нужно разделить результат на составляющие (дни, часы, минуты), используйте:
=ЦЕЛОЕ(B1-A1) & " дн. " & ТЕКСТ(ОСТАТ((B1-A1);1)*24; "0") & " ч."
Для автоматизации таких расчетов создайте пользовательский формат ячейки. Выделите ячейку с разницей, нажмите Ctrl+1 и введите формат:
[ч]:мм:сс — для отображения времени свыше 24 часов.
Автоматизация: динамические даты и условное форматирование
Чтобы визуализировать разницу между датами, применяйте условное форматирование. Например, чтобы выделить красным ячейки, где разница превышает 30 дней:
- Выделите диапазон с разницей дат.
- Перейдите в
Главная → Условное форматирование → Правила выделения ячеек → Больше... - Введите формулу
=A1>30(гдеA1— первая ячейка диапазона). - Выберите красный цвет заливки.
Для создания динамических дат (например, "через 5 дней от сегодня") используйте:
=СЕГОДНЯ()+5
А чтобы получить дату через определенное количество рабочих дней (учитывая выходные), примените:
=РАБДЕНЬ(СЕГОДНЯ(); 10)
где 10 — количество рабочих дней.
FAQ: ответы на частые вопросы
Можно ли вычесть даты в разных форматах (например, DD.MM.YYYY и MM/DD/YYYY)?
Да, но сначала приведите их к единому формату с помощью функции ДАТАЗНАЧ() или инструмента Текст по столбцам на вкладке Данные. Excel воспринимает даты одинаково независимо от формата отображения, если они корректно распознаны как даты.
Как вычесть дату из сегодняшнего дня, если файл будет открыт завтра?
Используйте функцию СЕГОДНЯ() — она всегда возвращает текущую дату на момент пересчета. Формула =СЕГОДНЯ()-A1 будет автоматически обновляться при каждом открытии файла.
Почему при вычитании дат получается отрицательное число?
Это означает, что начальная дата позже конечной. Поменяйте их местами в формуле или используйте функцию АБС(), чтобы получить абсолютное значение: =АБС(B1-A1).
Как посчитать количество полных недель между датами?
Разделите разницу в днях на 7 и округлите в меньшую сторону: =ЦЕЛОЕ((B1-A1)/7). Для округления в большую сторону используйте =ОКРУГЛВВЕРХ((B1-A1)/7; 0).
Можно ли вычесть даты в Excel Online или Google Sheets?
Да, все описанные функции работают и в веб-версиях. В Google Sheets также доступна функция DATEDIF, но для рабочих дней используйте NETWORKDAYS вместо ЧИСТРАБДНИ.