Работа с датами в Microsoft Excel — одна из самых востребованных задач при анализе данных, ведении отчётности или планировании. Однако даже опытные пользователи иногда сталкиваются с проблемами: программа не воспринимает введённую дату как дату, автоматически обновляет текущую дату при пересчёте или отображает значения в неудобном формате. В этой статье разберём все возможные сценарии замены дат — от элементарного ручного редактирования до сложных формул с динамическим обновлением.
Чаще всего необходимость изменить дату возникает при импорте данных из внешних источников (например, 1C или PDF), когда формат ячеек сбивается. Или когда нужно обновить сотни строк с прошедшими датами на актуальные — делать это вручную нерационально. Мы покажем, как автоматизировать процесс, избежать ошибок с форматами и даже создать "умные" даты, которые будут обновляться сами.
Перед тем как приступить, проверьте версию вашего Excel: некоторые функции (например, ДАТАМЕС или РАБДЕНЬ.МЕЖД) доступны только в Excel 2019 и новее, а также в Microsoft 365. Для старых версий (Excel 2010–2016) потребуются альтернативные решения.
1. Ручное изменение даты: когда формат "сходит с ума"
Самый очевидный способ — просто кликнуть по ячейке с датой и ввести новое значение. Но здесь кроется подвох: Excel может интерпретировать ваш ввод не как дату, а как текст или число. Например, если вы введёте 31.12.2026 в ячейку с текстовым форматом, программа не распознает это как дату, и дальнейшие вычисления (например, разница в днях) будут невозможны.
Чтобы избежать этого:
- Выделите ячейку или диапазон с датами.
- Нажмите
Ctrl+1(или правой кнопкой →Формат ячеек). - Вкладка
Число→ выберитеДатаи укажите нужный формат (например,14.03.2026или14 март 2026).
Если дата отображается как число (например, 45341), это значит, что Excel хранит её в внутреннем формате — количестве дней с 1 января 1900 года. Чтобы преобразовать обратно:
- 📅 Выделите ячейку →
Формат ячеек→Дата. - 🔄 Если не сработало, используйте формулу
=ДАТАЗНАЧ(A1)(гдеA1— ячейка с числом).
⚠️ Внимание: При копировании дат из веб-страниц или PDF они часто вставляются как текст. Проверяйте формат ячеек после импорта!
2. Замена даты с помощью функции "Найти и заменить"
Если нужно обновить одну и ту же дату во всём документе (например, заменить 31.12.2026 на 31.12.2026), используйте инструмент Найти и заменить:
- Нажмите
Ctrl+H(илиГлавная → Найти и выделить → Заменить). - В поле
Найтивведите старую дату, вЗаменить на— новую. - Нажмите
Заменить всё.
Но здесь есть нюанс: функция ищет точные совпадения текста, поэтому если даты хранятся в разных форматах (например, 31.12.2026 и 31-дек-24), придётся повторять замену для каждого варианта. Также инструмент не распознаёт даты как числовые значения — он работает только с текстом.
Для массовой замены дат с учётом форматов лучше использовать Power Query (доступен в Excel 2016+):
- 📊 Перейдите на вкладку
Данные→Получить данные → Из таблицы/диапазона. - 🔧 В редакторе
Power Queryвыберите столбец с датами →Преобразовать → Формат → Дата. - 🔄 Замените значения через
Главная → Заменить значения.
Выделить все ячейки с датами
Проверить текущий формат (дата/текст/число)
Создать резервную копию файла
Использовать "Найти и заменить" или Power Query-->
3. Автоматическое обновление дат формулами
Если даты должны динамически изменяться (например, всегда показывать "сегодня" или "через 30 дней"), используйте функции:
- 📅
=СЕГОДНЯ()— текущая дата (обновляется при каждом открытии файла). - 🔄
=СЕГОДНЯ()+30— дата через 30 дней от сегодняшнего. - 📆
=ДАТА(2026; 12; 31)— фиксированная дата (год; месяц; день).
Для более сложных расчётов подойдут:
=ДАТАМЕС(СЕГОДНЯ(); 3)— дата через 3 месяца (только в Excel 2019+).=РАБДЕНЬ(СЕГОДНЯ(); 10)— рабочий день через 10 дней (исключает выходные).
Пример: чтобы в ячейке B2 всегда отображалась дата через 2 недели от текущей, введите:
=СЕГОДНЯ()+14
⚠️ Внимание: ФункцияСЕГОДНЯ()пересчитывается при каждом открытии файла или изменении данных. Если нужно зафиксировать дату на момент создания, скопируйте ячейку с формулой и вставьте какЗначения(ПКМ → Специальная вставка → Значения).
| Функция | Пример | Результат | Примечание |
|---|---|---|---|
СЕГОДНЯ() |
=СЕГОДНЯ() |
15.03.2026 | Обновляется автоматически |
ДАТА() |
=ДАТА(2026; 5; 1) |
01.05.2026 | Фиксированная дата |
ДАТАЗНАЧ() |
=ДАТАЗНАЧ("31.12.2026") |
45678 | Преобразует текст в дату |
ДЕНЬНЕД() |
=ДЕНЬНЕД(СЕГОДНЯ()) |
6 | Возвращает день недели (1=воскресенье) |
4. Замена частей даты (день, месяц, год)
Иногда требуется изменить только один компонент даты — например, обновить год во всех датах с 2026 на 2026, оставив месяц и день без изменений. Для этого используйте комбинацию функций:
=ДАТА(2026; МЕСЯЦ(A1); ДЕНЬ(A1))
где A1 — ячейка с исходной датой.
Другие полезные функции для работы с частями даты:
- 📅
=ГОД(A1)— извлекает год. - 🔹
=МЕСЯЦ(A1)— извлекает месяц (число от 1 до 12). - 📆
=ДЕНЬ(A1)— извлекает день месяца.
Пример: чтобы заменить месяц во всех датах на июнь (6), используйте:
=ДАТА(ГОД(A1); 6; ДЕНЬ(A1))
5. Исправление ошибок формата даты
Одна из самых распространённых проблем — Excel воспринимает дату как текст (например, после импорта из CSV). Чтобы исправить это:
- Выделите проблемные ячейки.
- Перейдите в
Данные → Текст по столбцам. - На шаге 3 мастера выберите
Датаи укажите формат (например,ДМГ).
Если даты отображаются как ######, это значит, что ширина столбца недостаточна или ячейка содержит отрицательную дату (например, 30.02.2026). Растяните столбец или проверьте корректность данных.
Для исправления "битых" дат (например, 32.01.2026) используйте формулу с проверкой:
=ЕСЛИОШИБКА(ДАТАЗНАЧ(A1); "Некорректная дата")
⚠️ Внимание: В Excel для Mac и некоторых локализациях разделителем даты по умолчанию является/(например,12/31/2026), а не.. Это может привести к ошибкам при импорте данных. Проверяйте региональные настройки вФайл → Параметры → Язык.
Почему Excel показывает дату как ########?
Это происходит в трёх случаях:
1. Слишком узкий столбец — растяните его или измените формат ячейки на "Общий".
2. Отрицательная дата — Excel не поддерживает даты до 1900 года (исключение: Excel для Mac, где минимальная дата — 1904 год).
3. Некорректный формат — например, текст "31 февраля". Используйте ДАТАЗНАЧ для проверки.
6. Замена дат с учётом рабочих дней
Для планирования задач часто требуется пропускать выходные и праздники. В Excel есть специальные функции:
- 📅
=РАБДЕНЬ(нач_дата; дни; [праздники])— возвращает дату через указанное количество рабочих дней. - 🔄
=РАБДЕНЬ.МЕЖД(нач_дата; кон_дата; [праздники])— считает количество рабочих дней между двумя датами.
Пример: чтобы найти дату через 10 рабочих дней от сегодняшнего, исключив новогодние каникулы (с 1 по 8 января):
=РАБДЕНЬ(СЕГОДНЯ(); 10; {"01.01.2026"; "02.01.2026"; ...; "08.01.2026"})
Для старых версий Excel (до 2010) используйте пользовательскую функцию на
Dim i As Integer, TempDate As Date TempDate = StartDate For i = 1 To Abs(Days) TempDate = TempDate + Sgn(Days) Do While Weekday(TempDate, vbMonday) >= 6 Or Not IsEmpty(Holidays) And IsInArray(TempDate, Holidays) TempDate = TempDate + Sgn(Days) Loop Next i РАБДЕНЬ = TempDate End Function Function IsInArray(DateToCheck As Date, Arr As Variant) As Boolean Dim i As Integer For i = LBound(Arr) To UBound(Arr) If Arr(i) = DateToCheck Then IsInArray = True Exit Function End If Next i IsInArray = False End Function Чтобы использовать: 1. Нажмите 2. Вставьте код выше. 3. Вернитесь в Excel и используйте VBA:
Код VBA для функции РАБДЕНЬ в Excel 2007–2010
Function РАБДЕНЬ(StartDate As Date, Days As Integer, Optional Holidays As Variant) As Date
Alt+F11 → Вставка → Модуль.=РАБДЕНЬ(A1; 10) как обычно.
7. Динамические даты в сводных таблицах и фильтрах
Если вы работаете со сводными таблицами, даты можно обновлять через настройки фильтра:
- Добавьте поле с датой в область
ФильтрыилиСтроки. - Кликните по стрелке фильтра →
Фильтры по дате. - Выберите
Настраиваемый фильтри укажите диапазон (например, "больше чем 01.01.2026").
Для автоматического обновления диапазона дат в сводной таблице используйте вычисляемые поля:
- 📅 Перейдите в
Анализ → Поля, элементы и наборы → Вычисляемое поле. - 🔧 Введите формулу, например:
=ЕСЛИ(Дата>СЕГОДНЯ(); "Актуально"; "Просрочено").
Чтобы сводная таблица обновляла даты при открытии файла:
- Кликните по таблице →
Анализ → Параметры → Данные. - Поставьте галочку
Обновлять при открытии файла.
Частые вопросы (FAQ)
Как заменить дату в формате "31-дек-24" на "31.12.2026"?
Используйте функцию ДАТАЗНАЧ с подстановкой:
=ЕСЛИОШИБКА(ДАТАЗНАЧ(ПОДСТАВИТЬ(A1; "-"; ".") & ".20" & ПРАВСИМВ(A1; 2)); "")
Или преобразуйте через Текст по столбцам (указав формат ДМГ).
Почему после замены даты формулой результат отображается как число?
Это внутренний формат хранения дат в Excel. Чтобы исправить:
- Выделите ячейку с результатом.
- Нажмите
Ctrl+1→ выберите форматДата.
Или используйте =ТЕКСТ(ДАТАЗНАЧ(A1); "дд.мм.гггг") для приведения к текстовому виду.
Можно ли заменить дату в защищённом листе?
Да, но только если ячейка не заблокирована. Снимите защиту (Рецензирование → Снять защиту листа), измените дату и верните защиту. Для редактирования заблокированных ячеек потребуется пароль.
Как автоматически обновлять дату в шапке отчёта?
Вставьте в ячейку с заголовком формулу =ТЕКСТ(СЕГОДНЯ(); "дд ММММ гггг года"). Чтобы дата не обновлялась при пересчёте, скопируйте ячейку и вставьте как Значения (ПКМ → Специальная вставка → Значения).
Как заменить дату в нескольких файлах Excel одновременно?
Используйте Power Query для объединения файлов:
- Создайте новую книгу →
Данные → Получить данные → Из файла → Из папки. - Выберите папку с файлами и нажмите
Преобразовать данные. - В
Power Queryзамените даты во всех таблицах одновременно.
Или напишите макрос на VBA для пакетной обработки.