Почему стандартное сложение не работает с датами
Вы когда-нибудь пытались просто сложить число 5 с датой в ячейке A1, надеясь получить дату через 5 лет? Если да, то наверняка получили ошибку или неожиданный результат. Дело в том, что Microsoft Excel хранит даты не как текст, а как последовательные числа — начиная с 1 января 1900 года (в Windows) или 1904 года (в Mac). Каждый новый день увеличивает это число на единицу.
Когда вы вводите в ячейку 15.05.2026, Excel воспринимает это как число 45415 (для системы 1900). Прибавление 5 к этой дате сдвинет её всего на 5 дней, а не лет. Вот почему прямая арифметика с датами требует специальных подходов.
В этой статье мы разберём 7 способов корректно прибавить 5 лет к дате — от элементарных формул до автоматизации через VBA. Вы узнаете, какой метод выбрать в зависимости от задачи, и как избежать типичных ошибок при работе с датами в разных версиях Excel.
Способ 1: Формула с функцией ДАТА
Самый надёжный и универсальный метод — использовать функцию ДАТА() (или DATE() в английской версии). Она позволяет создать новую дату на основе года, месяца и дня, извлечённых из исходной ячейки.
Формула для прибавления 5 лет:
=ДАТА(ГОД(A1)+5; МЕСЯЦ(A1); ДЕНЬ(A1))
Разберём, как это работает:
ГОД(A1)— извлекает год из даты в ячейкеA1.+5— прибавляет к году 5 лет.МЕСЯЦ(A1)иДЕНЬ(A1)— сохраняют исходные месяц и день.
✅ Плюсы: работает во всех версиях Excel, учитывает високосные годы, не ломается при переходе через месяцы с разным количеством дней (например, 31 января + 5 лет = 28/29 февраля).
⚠️ Внимание: Если в ячейкеA1не дата, а текст (например, "15.05.2026"), формула вернёт ошибку#ЗНАЧ!. Проверьте формат ячейки черезФормат ячеек → Числовые форматы → Дата.
Убедитесь, что ячейка с датой имеет формат "Дата"|
Проверьте отсутствие текста в ячейке (используйте =ЕТЕКСТ(A1))|
Если дата вводится вручную, используйте разделители, принятые в вашей системе (точка или косая черта)|
Для английской версии Excel замените "ДАТА" на "DATE"-->
Способ 2: Функция ДАТАМЕС (DATEADD в Power Query)
Функция ДАТАМЕС() (англ. EDATE()) специально создана для добавления месяцев к дате, но её можно адаптировать и для лет. Синтаксис:
=ДАТАМЕС(A1; 5*12)
Здесь 5*12 означает 60 месяцев (то есть 5 лет). Функция автоматически корректирует дату, если результат выходит за пределы месяца. Например, 31.01.2026 + 5 лет станет 28.02.2029 (или 29.02.2029 в високосный год).
🔹 Нюанс: В Excel для Mac до 2011 года функции ДАТАМЕС нет — используйте ДАТА из первого способа.
| Функция | Пример | Результат для 15.05.2026 | Поддержка Mac |
|---|---|---|---|
ДАТА(ГОД()+5;...) |
=ДАТА(ГОД(A1)+5; МЕСЯЦ(A1); ДЕНЬ(A1)) |
15.05.2029 | Да |
ДАТАМЕС(; 5*12) |
=ДАТАМЕС(A1; 60) |
15.05.2029 | Начиная с 2011 |
A1 + 5*365 |
=A1+1825 |
10.05.2029 (неточно!) | Да |
Обратите внимание на строку с A1 + 5*365 — этот метод некорректен, так как не учитывает високосные годы. Разница между реальной датой и расчётной может достигать 2 дней за 5 лет!
Формулу с ДАТА()|
Функцию ДАТАМЕС()|
Ручной ввод|
Макрос VBA|
Другой вариант-->
Способ 3: Прибавление лет через Power Query
Если вы работаете с большими наборами данных, удобнее использовать Power Query (в Excel 2016+ или через надстройку в 2010/2013). Этот метод позволяет добавить годы к столбцу дат без формул.
Пошаговая инструкция:
- Выделите таблицу с датами и нажмите
Данные → Из таблицы/диапазона(илиData → From Table/Range). - В редакторе Power Query выделите столбец с датами.
- Перейдите на вкладку
Добавить столбец(Add Column) →Настраиваемый столбец(Custom Column). - Введите формулу:
= Date.AddYears([ВашСтолбец], 5) - Нажмите
ОКи загрузите данные обратно в Excel.
⚡ Преимущество: Power Query обновляет результаты при изменении исходных данных (если использовать Обновить). Подходит для обработки тысяч строк.
⚠️ Внимание: В русскоязычной версии Power Query название функции — Date.AddYears, но в формуле нужно использовать английский синтаксис, даже если интерфейс на русском.
Способ 4: Макрос VBA для массового изменения
Для автоматизации добавления лет к сотням ячеек подойдёт макрос на VBA. Например, этот скрипт прибавляет 5 лет ко всем выделенным датам:
Sub AddFiveYears()
Dim cell As Range
For Each cell In Selection
If IsDate(cell.Value) Then
cell.Value = DateAdd("yyyy", 5, cell.Value)
End If
Next cell
End Sub
Как использовать:
- Нажмите
Alt + F11, чтобы открыть редактор VBA. - Вставьте код в новый модуль (
Insert → Module). - Выделите ячейки с датами в Excel и запустите макрос (
Alt + F8 → AddFiveYears → Выполнить).
🔧 Настройка: Чтобы прибавлять другое количество лет, замените 5 в строке DateAdd("yyyy", 5, cell.Value).
Что делать если макрос не работает?
Убедитесь, что в настройках Excel включена поддержка макросов (Файл → Параметры → Центр управления безопасностью → Параметры центра управления безопасностью → Включить все макросы).
Проверьте, что выделенные ячейки содержат именно даты, а не текст (используйте =ТИП(A1)=1 для проверки).
Если даты в текстовом формате, предварительно преобразуйте их через ДАТАЗНАЧ() или ТЕКСТ.В.ДАТУ() (в новых версиях).
Способ 5: Динамические массивы (Excel 365 и 2021)
В последних версиях Excel (365 и 2021) появились динамические массивы, позволяющие обрабатывать целые диапазоны одной формулой. Например, чтобы прибавить 5 лет ко всему столбцу A и вывести результат в B, достаточно ввести в B1:
=ДАТА(ГОД(A1:A100)+5; МЕСЯЦ(A1:A100); ДЕНЬ(A1:A100))
и нажать Enter. Формула автоматически "прольётся" на все ячейки B1:B100.
💡 Бонус: Если в столбце A есть пустые ячейки или текст, формула вернёт ошибку только для них, не ломая остальные расчёты.
Для фильтрации ошибок оберните формулу в ЕСЛИОШИБКА:
=ЕСЛИОШИБКА(ДАТА(ГОД(A1:A100)+5; МЕСЯЦ(A1:A100); ДЕНЬ(A1:A100)); "")
Способ 6: Прибавление лет с учётом рабочих дней
Если вам нужно прибавить 5 лет, но пропустить выходные и праздники (например, для расчёта сроков поставки), используйте функцию РАБДЕНЬ() (англ. WORKDAY()). Однако она работает только с днями, поэтому сначала рассчитайте количество дней в 5 годах, а затем добавьте их с учётом рабочего календаря.
Формула:
=РАБДЕНЬ(A1; 5*365; [ДиапазонПраздников])
Где:
- 📅
A1— исходная дата; - 🔢
5*365— приблизительное количество дней (уточните для вашего случая); - 🎉
[ДиапазонПраздников]— ссылка на ячейки с датами праздников (необязательно).
⚠️ Ограничение: Этот метод неточен, так как не учитывает високосные годы. Для точного расчёта сначала получите конечную дату через ДАТА(), а затем используйте РАБДЕНЬ() для корректировки на рабочие дни.
1. Сначала рассчитайте дату через 5 лет: =ДАТА(ГОД(A1)+5; МЕСЯЦ(A1); ДЕНЬ(A1)).
2. Затем найдите разницу в днях между исходной и конечной датой.
3. Примените РАБДЕНЬ() к исходной дате с этой разницей.-->
Типичные ошибки и как их избежать
Даже опытные пользователи Excel сталкиваются с проблемами при работе с датами. Вот 5 самых распространённых ошибок и их решения:
- Ошибка #ЗНАЧ! при использовании ДАТА():
🔹 Причина: Ячейка содержит текст, а не дату. Например, "Май 2026" вместо "15.05.2026".
🔧 Решение: Преобразуйте текст в дату с помощью
=ДАТАЗНАЧ(A1)или=ТЕКСТ.В.ДАТУ(A1)(в Excel 2016+). - Некорректный результат при сложении дней:
🔹 Причина: Прибавление
5*365не учитывает високосные годы.🔧 Решение: Используйте
ДАТА()илиДАТАМЕС(). - Дата отображается как число:
🔹 Причина: Ячейка имеет общий формат или числовой.
🔧 Решение: Примените формат "Дата" через
Ctrl+1. - Макрос не работает с некоторыми датами:
🔹 Причина: В ячейках текст, а не даты (например, "01.01.2026" как текст).
🔧 Решение: Добавьте в макрос проверку
If IsDate(cell.Value) Then. - Power Query не распознаёт даты:
🔹 Причина: Региональные настройки Excel (например, даты в формате "ММ/ДД/ГГГГ" вместо "ДД.ММ.ГГГГ").
🔧 Решение: В Power Query выделите столбец →
Преобразовать → Тип данных → Дата.
⚠️ Внимание: В Excel для Mac до 2011 года функцияДАТАМЕСотсутствует, а в версиях 2011–2016 может требовать установки надстройки Analysis ToolPak. Проверьте доступность функции черезФормулы → Вставить функцию.
FAQ: Частые вопросы о прибавлении лет в Excel
Можно ли прибавить 5 лет к дате без формул, просто перетаскивая маркер заполнения?
Да, но с оговорками. Если в ячейке A1 дата 15.05.2026, выделите её, потяните за правый нижний угол (маркер заполнения) вниз, а затем в контекстном меню выберите Заполнить → Ряд → Арифметическая прогрессия с шагом 1 и единицей Год. Однако этот метод добавляет по 1 году за шаг — для 5 лет придётся повторить действие 5 раз или вручную изменить шаг на 5.
Почему после прибавления 5 лет к 29.02.2026 получается 28.02.2029, а не 29.02.2029?
Excel автоматически корректирует даты, если результат выходит за пределы существующего календаря. 2029 год не високосный, поэтому 29 февраля в нём нет. Чтобы сохранить день, используйте формулу:
=ЕСЛИ(И(МЕСЯЦ(A1)=2; ДЕНЬ(A1)=29; НЕ(ВИСОКОС(ГОД(A1)+5))); ДАТА(ГОД(A1)+5; 3; 1); ДАТА(ГОД(A1)+5; МЕСЯЦ(A1); ДЕНЬ(A1)))
Она переносит дату на 1 марта, если 29 февраля не существует в целевом году.
Как прибавить 5 лет к дате в формате "Май 2026" (без дня)?
Excel воспринимает "Май 2026" как 1 мая 2026. Чтобы прибавить 5 лет к такому формату:
- Преобразуйте текст в дату:
=ДАТАЗНАЧ("1 " & A1)(гдеA1содержит "Май 2026"). - Прибавьте годы:
=ДАТА(ГОД(ДАТАЗНАЧ("1 " & A1))+5; МЕСЯЦ(ДАТАЗНАЧ("1 " & A1)); 1). - Отформатируйте результат как "ММММ ГГГГ" через
Формат ячеек.
Можно ли прибавить 5 лет к дате в Google Таблицах?
Да, в Google Sheets используйте те же формулы, что и в Excel:
- 📅
=DATE(YEAR(A1)+5; MONTH(A1); DAY(A1)) - 📅
=EDATE(A1; 5*12)
Отличие только в названиях функций на английском и поддержке динамических массивов во всех аккаунтах (в отличие от Excel, где они есть только в 365/2021).
Как прибавить 5 лет ко времени (например, 15:30:00)?
Время в Excel — это дробная часть даты (где 1 = 24 часа). Чтобы прибавить годы к метке времени:
- Сначала создайте полную дату+время:
=A1 + B1(гдеA1— дата,B1— время). - Прибавьте годы:
=ДАТА(ГОД(A1)+5; МЕСЯЦ(A1); ДЕНЬ(A1)) + B1. - Отформатируйте ячейку как
дд.мм.гггг чч:мм:сс.
⚠️ При прибавлении лет к чистому времени (без даты) Excel вернёт ошибку, так как не может определить исходный год.