Работа с датами в Microsoft Excel — одна из самых востребованных задач, будь то расчёт срока выполнения проекта, возраста клиента или времени между заказами. Но как правильно вычесть одну дату из другой, чтобы получить корректный результат в днях, месяцах или даже годах? Ошибки здесь встречаются часто: то формула возвращает странное число, то результат отрицательный, то вместо дней отображаются месяцы.
На самом деле, в Excel есть несколько способов вычитания дат — от простейшей арифметической операции до специализированных функций вроде DATEDIF или РАЗНДАТ. Каждый метод подходит для своих целей: например, если вам нужна разница в полных годах с учётом календарных особенностей, обычное вычитание не сработает. А если даты записаны как текст? Тут уже потребуется предварительная обработка.
В этой статье мы разберём 5 проверенных способов вычитания дат — от базовых до продвинутых, с учётом нюансов форматирования и типичных ошибок. Вы узнаете, как получить разницу в днях, месяцах, годах, а также как избежать распространённых ловушек (например, когда Excel вдруг начинает считать даты как текст).
Почему простое вычитание дат не всегда работает
На первый взгляд, вычесть две даты в Excel проще простого: достаточно в ячейке написать =B2-A2, где A2 и B2 содержат даты. И действительно, в большинстве случаев это сработает — программа вернёт разницу в днях. Но что, если вам нужны месяцы или годы? Или если одна из дат записана как текст (например, после импорта из другой системы)?
Дело в том, что Excel хранит даты как последовательные числа, где 1 января 1900 года — это число 1, а каждая последующая дата увеличивает это значение на единицу. Когда вы вычитаете одну дату из другой, программа просто отнимает эти внутренние числа. Поэтому результат по умолчанию всегда в днях. Чтобы получить месяцы или годы, нужны специальные функции.
Ещё одна ловушка — формат ячеек. Если ячейка с результатом отформатирована как "Общий" или "Текст", вы увидите просто число (например, 456 вместо "12 месяцев"). А если даты введены как текст (например, "01.01.2023" с кавычками), Excel вообще не сможет их вычесть — получите ошибку #ЗНАЧ!.
⚠️ Внимание: Если после вычитания дат вы видите число вроде 44927 вместо ожидаемой разницы, проверьте формат ячейки с результатом. Скорее всего, он установлен как "Общий". Измените его на "Числовой" или "Дата", чтобы увидеть корректный вывод.
Способ 1: Простое вычитание для разницы в днях
Самый быстрый способ узнать, сколько дней прошло между двумя датами — вычесть их напрямую. Допустим, в ячейке A2 у вас дата начала проекта (15.05.2026), а в B2 — дата окончания (30.06.2026). Формула будет такой:
=B2-A2
Результат — 46 (дней). Но здесь есть несколько нюансов:
- 📅 Формат ячейки с результатом должен быть "Общий" или "Числовой". Если установить "Дата", Excel попытается интерпретировать число как дату (например,
46станет16.02.1900). - ⚠️ Отрицательный результат означает, что вторая дата раньше первой. Чтобы избежать этого, используйте функцию
ABS:
=ABS(B2-A2)
A2 и B2 изменятся, результат пересчитается автоматически.Этот метод подходит для большинства задач, где нужна разница в днях: расчёт времени выполнения задачи, сроков доставки или возраста в днях. Но если требуется точность до месяцев или лет, читайте дальше.
Способ 2: Функция DATEDIF (или РАЗНДАТ в русской версии)
Функция DATEDIF (в русской версии Excel — РАЗНДАТ) специально создана для вычисления разницы между датами в днях, месяцах или годах. Её главный плюс — гибкость: можно получить результат в любом временном формате. Синтаксис:
=DATEDIF(начальная_дата; конечная_дата; единица_измерения)
Аргумент единица_измерения определяет, что вернёт функция:
| Единица измерения | Описание | Пример результата |
|---|---|---|
"D" |
Разница в днях | 46 (дней между 15.05.2026 и 30.06.2026) |
"M" |
Разница в полных месяцах | 1 (месяц между 15.05.2026 и 15.06.2026) |
"Y" |
Разница в полных годах | 2 (года между 15.05.2022 и 15.05.2026) |
"YM" |
Разница в месяцах без учёта лет | 3 (месяца между 15.02.2026 и 15.05.2026) |
"MD" |
Разница в днях без учёта месяцев и лет | 10 (дней между 20.05.2026 и 30.05.2026) |
Пример использования для расчёта возраста в годах:
=DATEDIF("12.03.1990"; TODAY(); "Y")
Эта формула вернёт количество полных лет от даты рождения (12.03.1990) до сегодняшнего дня (TODAY()). Обратите внимание: DATEDIF учитывает календарные особенности. Например, разница между 31.01.2026 и 01.02.2026 в месяцах будет 1, даже если дней прошло всего 1.
⚠️ Внимание: ФункцияDATEDIFне документирована в официальной справке Microsoft, но работает во всех версиях Excel. В некоторых локализациях (например, немецкой) её название может отличаться. В русской версии используйтеРАЗНДАТ.
Убедитесь, что обе даты введены как даты (не текст)
Проверьте порядок дат (начальная дата должна быть раньше конечной)
Выберите правильную единицу измерения ("D", "M", "Y" и т.д.)
Форматируйте ячейку с результатом как "Общий" или "Числовой"-->
Способ 3: Функции YEAR, MONTH, DAY для детализированного расчёта
Если вам нужна не просто разница в годах или месяцах, а подробный разбор (например, "2 года, 3 месяца и 15 дней"), придётся комбинировать несколько функций. Вот универсальная формула:
=DATEDIF(A2; B2; "Y") & " лет, " & DATEDIF(A2; B2; "YM") & " месяцев, " & DATEDIF(A2; B2; "MD") & " дней"
Но что, если вам нужны отдельные значения для дальнейших вычислений? Тогда лучше разделить расчёт на три ячейки:
- 📅 Годы:
=YEAR(B2)-YEAR(A2)-IF(OR(MONTH(B2) - 📆 Месяцы:
=MONTH(B2)-MONTH(A2)+IF(DAY(B2) - 📌 Дни:
=B2-DATE(YEAR(B2); MONTH(B2)-IF(DAY(B2)
Эти формулы учитывают переходы через границы месяцев и лет. Например, разница между 31.12.2023 и 01.01.2026 будет корректно отображена как 0 лет, 0 месяцев, 1 день, а не 0 лет, 1 месяц, -30 дней.
Критическая особенность: если вы используете такие формулы для расчёта стажа или возраста, обязательно проверяйте результат на граничных датах (например, 28.02 → 01.03 или 31.12 → 01.01). В этих случаях Excel может давать неочевидные ошибки.
Почему формулы для месяцев и дней такие сложные?
Дело в том, что простое вычитание месяцев (=MONTH(B2)-MONTH(A2)) не учитывает переход через год. Например, разница между 15.12.2023 и 10.01.2026 должна быть 0 месяцев (так как прошёл всего 1 месяц, но не полный), а не -11 месяцев. Поэтому в формуле добавлена проверка на день (IF(DAY(B2)
Способ 4: Вычитание даты из сегодняшнего дня (TODAY)
Часто требуется узнать, сколько времени прошло с определённой даты до сегодняшнего дня. Например, для расчёта возраста, срока хранения документа или времени с последнего обновления. Здесь пригодится функция TODAY(), которая всегда возвращает текущую дату.
Примеры:
- 🗓️ Дни с даты рождения:
=TODAY()-A2(гдеA2— дата рождения). - 📦 Срок годности продукта:
=A2-TODAY()(гдеA2— дата истечения). Если результат отрицательный, продукт просрочен. - 📈 Возраст в годах:
=DATEDIF(A2; TODAY(); "Y").
Важный нюанс: функция TODAY() пересчитывается при каждом открытии файла. Это значит, что если вы сохраните документ сегодня, а откроете через неделю, результат изменится. Чтобы зафиксировать дату "сегодня" на момент сохранения, используйте комбинацию Ctrl + ; (это вставит статическую текущую дату).
⚠️ Внимание: Если вы делитесь файлом с коллегами, учитывайте, что у них функция TODAY() будет показывать их текущую дату, а не вашу. Для отчётности лучше использовать статические даты или указывать дату генерации отчёта в отдельной ячейке.
Способ 5: Обработка дат в текстовом формате
Одна из самых распространённых проблем — даты, записанные как текст (например, после импорта из CSV или базы данных). В этом случае простое вычитание не сработает: Excel вернёт ошибку #ЗНАЧ!. Чтобы исправить это, нужно сначала преобразовать текст в дату.
Способы конвертации:
- Ручной метод:
- Выделите столбец с датами.
- Перейдите в
Данные → Текст по столбцам. - Выберите "С разделителями" → "Далее" → "Далее".
- На шаге формата столбца выберите "Дата" и укажите формат (например,
ДМГилиГМД).
- Формула: Используйте функцию
ДАТАЗНАЧ(в английской версии —DATEVALUE):=ДАТАЗНАЧ(A2)Где
A2— ячейка с текстовой датой (например,"15.05.2026"). - Power Query: Если данных много, импортируйте их через
Данные → Получить данные → Из текстового/CSV-файлаи настройте преобразование столбца в дату на этапе загрузки.
После конвертации можно применять любые методы вычитания из предыдущих разделов. Например:
=ДАТАЗНАЧ(B2)-ДАТАЗНАЧ(A2)
Если дата записана в нестандартном формате (например, "May 15, 2026"), ДАТАЗНАЧ может не сработать. В этом случае используйте комбинацию функций ДАТА, НАЙТИ и ПСТР для парсинга строки.
Типичные ошибки и как их избежать
Даже опытные пользователи Excel иногда сталкиваются с неожиданными результатами при работе с датами. Вот самые частые ошибки и способы их решения:
| Ошибка | Причина | Решение |
|---|---|---|
#ЗНАЧ! |
Одна или обе даты записаны как текст. | Преобразуйте текст в дату с помощью ДАТАЗНАЧ или инструмента "Текст по столбцам". |
| Отрицательное число дней | Конечная дата раньше начальной. | Используйте ABS или поменяйте даты местами. |
| Некорректный результат в месяцах/годах | Функция DATEDIF с параметром "M" или "Y" не учитывает дни. |
Для точного расчёта комбинируйте несколько параметров (например, "Y" + "YM"). |
Результат в виде даты (например, 46.01.1900) |
Ячейка с результатом отформатирована как "Дата". | Измените формат на "Общий" или "Числовой". |
Ошибка #ЧИСЛО! |
Даты выходят за пределы поддерживаемого диапазона (01.01.1900 — 31.12.9999). |
Проверьте корректность введённых дат. |
Ещё одна распространённая проблема — разные форматы дат в одном столбце. Например, часть дат в формате ДД.ММ.ГГГГ, а часть — ММ/ДД/ГГГГ. В этом случае Excel может неправильно интерпретировать месяцы и дни. Чтобы избежать путаницы, используйте функцию ДАТА для явного указания порядка:
=ДАТА(ГОД; МЕСЯЦ; ДЕНЬ)
Например, если в ячейке A2 записано "05/06/2026", и вы не уверены, это 5 июня или 6 мая, разбейте строку на компоненты:
=ДАТА(ПРАВСИМВ(A2;4); ПСТР(A2;4;2); ЛЕВСИМВ(A2;2))
Продвинутые приёмы: условное форматирование и динамические диапазоны
Вычитание дат становится ещё мощнее, если комбинировать его с другими инструментами Excel. Например, можно автоматически выделять просроченные задачи или подсвечивать ячейки, где разница между датами превышает норму.
Пример 1: Подсветка просроченных задач
- Выделите столбец с датами завершения.
- Перейдите в
Главная → Условное форматирование → Правила выделения ячеек → Меньше.... - В поле введите
=TODAY()и выберите цвет (например, красный).
Пример 2: Динамический расчёт рабочих дней
Если нужно узнать разницу в рабочих днях (исключая выходные), используйте функцию ЧИСТРАБДНИ:
=ЧИСТРАБДНИ(A2; B2)
Чтобы исключить ещё и праздники, добавьте их в отдельный диапазон (например, D2:D10) и используйте:
=ЧИСТРАБДНИ(A2; B2; D2:D10)
Пример 3: Автоматическое обновление статуса
Создайте формулу, которая будет возвращать текстовый статус в зависимости от разницы дат:
=ЕСЛИ(B2
FAQ: Ответы на частые вопросы
Можно ли вычесть время из даты в Excel?
Да, Excel поддерживает вычитание времени. Например, формула =B2-A2 вернёт разницу в днях и часах, если в ячейках указаны дата и время (например, 15.05.2026 14:30). Чтобы получить результат только в часах, умножьте разницу на 24: =(B2-A2)*24.
Почему функция DATEDIF возвращает неверный результат для месяцев?
Функция DATEDIF с параметром "M" считает полные месяцы, игнорируя дни. Например, разница между 31.01.2026 и 28.02.2026 будет 0 месяцев, так как 28.02 не является полным месяцем после 31.01. Для точного расчёта комбинируйте параметры "Y", "YM" и "MD".
Как вычесть даты в Google Таблицах?
В Google Таблицах используются те же принципы, что и в Excel:
- Простое вычитание:
=B2-A2. - Аналог
DATEDIF:=DATEDIF(A2; B2; "D"). - Текущая дата:
=TODAY().
Основное отличие — в Google Таблицах нет функции ЧИСТРАБДНИ, но есть =NETWORKDAYS с аналогичным синтаксисом.
Можно ли вычесть даты в формате "год-месяц" (например, "май 2026")?
Да, но для этого нужно сначала преобразовать текст в дату. Например, если в ячейке A2 записано "май 2026", используйте:
=ДАТА(ПРАВСИМВ(A2;4); ПОИСКПОЗ(ЛЕВСИМВ(A2;3); {"янв";"фев";"мар";...;" дек"}); 1)
Здесь ПОИСКПОЗ преобразует название месяца в его номер, а ДАТА создаёт полноценную дату (первое число месяца). После этого можно вычитать как обычно.
Как посчитать количество кварталов между двумя датами?
Используйте комбинацию функций ГОД и МЕСЯЦ:
= (ГОД(B2)-ГОД(A2))*4 + ОКРУГЛВНИЗ((МЕСЯЦ(B2)-1)/3;0) - ОКРУГЛВНИЗ((МЕСЯЦ(A2)-1)/3;0)
Эта формула сначала считает разницу в годах (умноженную на 4 квартала), а затем добавляет разницу в кварталах внутри года.