Работа с датами в Microsoft Excel — одна из самых частых задач, с которыми сталкиваются пользователи. Некорректный формат, ошибки при импорте данных или необходимость массового изменения дат (например, сдвиг на несколько дней) могут отнять часы времени, если делать всё вручную. Но есть способы автоматизировать процесс — от элементарной функции "Найти и заменить" до сложных формул и скриптов на VBA.
В этой статье разберём 5 проверенных методов, как поменять дату во всём столбце Excel — с учётом разных версий программы (включая Excel Online) и типов исходных данных. Вы узнаете, как исправить форматы типа "31.12.1899" вместо "31.12.2023", прибавить/убавить дни ко всем датам сразу, а также как избежать типичных ошибок при конвертации текста в даты.
Особое внимание уделим двум критичным моментам: почему иногда после замены даты превращаются в числа (например, 45678), и как правильно работать с датами в формате ДД.ММ.ГГГГ и ММ/ДД/ГГГГ, чтобы не перепутать месяцы с днями. Эти нюансы часто становятся причиной сбоев в отчётах и анализах.
Если вам нужно срочно поправить столбец с 500 строками или настроить автоматическое обновление дат в шаблоне, вы найдёте здесь готовые решения — от базовых до продвинутых. А для тех, кто предпочитает визуальные инструменты, мы покажем, как использовать Power Query (доступен в Excel 2016+) для преобразования дат без формул.
1. Быстрая замена дат через "Найти и заменить"
Самый простой способ изменить даты в столбце — воспользоваться стандартной функцией Ctrl + H (или Найти и заменить в меню Главная). Этот метод подходит, если вам нужно заменить конкретную дату на другую (например, 01.01.2023 → 01.01.2026) или исправить опечатку в формате.
Однако у способа есть ограничения:
- 🔹 Не работает для массового сдвига дат (например, "+3 дня ко всем датам").
- 🔹 Может неправильно обработать даты в текстовом формате (например,
"31 декабря"). - 🔹 Не подходит для изменения формата отображения (например, с
ДД.ММ.ГГГГнаМММ ГГГГ).
Пошаговая инструкция:
- Выделите столбец с датами (кликните по букве столбца, например
A). - Нажмите
Ctrl + Hили перейдите вГлавная → Найти и выделить → Заменить. - В поле
Найтивведите исходную дату (например,15.05.2023). - В поле
Заменить навведите новую дату (например,20.05.2023). - Нажмите
Заменить всё.
⚠️ Внимание: Если даты в столбце хранятся как текст (выровнены по левому краю), Excel может не распознать их при замене. Предварительно преобразуйте данные в формат даты: выделите столбец → Главная → Формат → Формат ячеек → Дата.
Для замены формата отображения (например, с 15.05.2023 на 15 мая 2023) используйте не "Найти и заменить", а настройку формата ячеек. Выделите столбец → правая кнопка мыши → Формат ячеек → выберите нужный формат в категории Дата.
2. Изменение дат с помощью формул
Формулы в Excel позволяют гибко управлять датами: прибавлять/убавлять дни, месяцы или годы, извлекать отдельные компоненты (день, месяц), а также конвертировать текст в даты. Это универсальный метод, который работает даже с большими массивами данных.
Рассмотрим три самых полезных формулы для работы с датами в столбце:
| Задача | Формула | Пример |
|---|---|---|
Прибавить N дней к дате |
=A1 + N |
=A1 + 5 → к дате в A1 добавит 5 дней |
Убавить N месяцев |
=ДАТА(ГОД(A1); МЕСЯЦ(A1) - N; ДЕНЬ(A1)) |
=ДАТА(ГОД(A1); МЕСЯЦ(A1) - 2; ДЕНЬ(A1)) → уберёт 2 месяца |
| Конвертировать текст в дату | =ДАТАЗНАЧ(A1) или =--ТЕКСТ(A1; "дд.мм.гггг") |
=ДАТАЗНАЧ("15.05.2023") → вернёт 15.05.2023 как дату |
| Заменить год в дате | =ДАТА(2026; МЕСЯЦ(A1); ДЕНЬ(A1)) |
=ДАТА(2026; МЕСЯЦ(A1); ДЕНЬ(A1)) → заменит год на 2026 |
Пример: Допустим, у вас в столбце A даты в формате ДД.ММ.ГГГГ, и вам нужно сдвинуть все даты на 10 дней вперёд. В ячейке B1 введите формулу:
=A1 + 10
Затем протяните формулу вниз за маркер автозаполнения (маленький квадратик в правом нижнем углу ячейки). Excel автоматически скорректирует ссылки на A2, A3 и т. д.
Если исходные данные хранятся как текст (например, результат экспорта из 1С), сначала преобразуйте их в даты с помощью =ДАТАЗНАЧ(A1), а затем применяйте арифметические операции.
Выделите столбец для результатов|Проверьте формат исходных данных (дата/текст)|Используйте абсолютные ссылки ($A$1) для фиксированных значений|Протестируйте формулу на 2-3 строках перед массовым применением-->
3. Массовое изменение дат через Power Query
Power Query (в Excel 2016+ и Office 365) — это мощный инструмент для преобразования данных, который позволяет автоматизировать замену дат без формул. Его преимущество в том, что все шаги сохраняются, и вы можете обновить данные одним кликом, если исходный файл изменился.
Когда использовать Power Query?
- 📊 Нужно регулярно обновлять даты в отчётах (например, сдвигать на текущий месяц).
- 🔄 Исходные данные импортируются из внешних источников (CSV, базы данных, веб).
- 📅 Даты хранятся в нестандартном формате (например,
"2023-05-15T00:00:00").
Пошаговая инструкция:
- Выделите столбец с датами → перейдите в
Данные → Получение данных → Из таблицы/диапазона(в Excel 2016+). - В открывшемся окне Power Query выделите столбец с датами → кликните по иконке
ABC123(изменить тип) → выберитеДата. - Чтобы прибавить дни: выделите столбец →
Преобразовать → Стандартный → Добавить дни→ укажите количество дней. - Чтобы изменить формат: выделите столбец →
Преобразовать → Формат → Дата→ выберите нужный формат. - Нажмите
Готово→ выберите, куда загрузить результат (например, на новый лист).
Важно: Power Query сохраняет все шаги преобразования. Если исходные данные обновились, кликните правой кнопкой по таблице с результатом →
Ошибка возникает, если Power Query не может распознать текст как дату. Решение: 1. Выделите столбец → 2. Используйте формулу 3. Убедитесь, что региональные настройки Excel соответствуют формату даты (например, для Обновить, и все даты пересчитаются автоматически.
Как исправить ошибку "Недопустимый тип данных" в Power Query?
Преобразовать → Заменить значения → удалите лишние символы (например, кавычки или буквы).= Date.FromText([Column1]) в редакторе Power Query (вкладка Добавить столбец → Настраиваемый столбец).ДД.ММ.ГГГГ выберите русский язык в настройках системы).
4. Автоматическая замена дат с помощью макросов (VBA)
Если вам нужно регулярно применять одни и те же изменения к датам (например, ежемесячно сдвигать все даты на 30 дней), стоит автоматизировать процесс с помощью макроса на VBA. Этот метод требует базовых знаний программирования, но экономит время при работе с большими файлами.
Пример макроса для прибавления 7 дней ко всем датам в столбце A:
Sub AddDaysToDates()
Dim rng As Range
Dim cell As Range
Set rng = Range("A1:A" & Cells(Rows.Count, "A").End(xlUp).Row) ' Выбираем диапазон с датами
For Each cell In rng
If IsDate(cell.Value) Then ' Проверяем, что в ячейке дата
cell.Value = cell.Value + 7 ' Прибавляем 7 дней
End If
Next cell
End Sub
Как запустить макрос:
- Нажмите
Alt + F11, чтобы открыть редактор VBA. - Вставьте код выше в новый модуль (
Вставка → Модуль). - Закройте редактор и вернитесь в Excel.
- Нажмите
Alt + F8, выберите макросAddDaysToDates→Выполнить.
Модификации макроса для других задач:
- 🔹 Чтобы убавить дни, замените
+7на-7. - 🔹 Чтобы изменить год, используйте:
cell.Value = DateSerial(2026, Month(cell.Value), Day(cell.Value)) - 🔹 Чтобы преобразовать текст в дату, добавьте строку:
cell.Value = CDate(cell.Value)
⚠️ Внимание: Перед запуском макроса сохраните файл в формате.xlsm(с поддержкой макросов), иначе код не будет работать. Также отключите защиту от макросов в настройках Excel (Файл → Параметры → Центр управления безопасностью → Параметры центра управления безопасностью → Включить все макросы).
Application.ScreenUpdating = False
и включите в конце:
Application.ScreenUpdating = True
Это ускорит выполнение в 5–10 раз.-->
5. Исправление некорректных форматов дат
Частая проблема при импорте данных — даты отображаются как числа (например, 45000) или в неверном формате (например, 05/15/2023 вместо 15.05.2023). Это происходит из-за того, что Excel хранит даты как количество дней с 01.01.1900, а формат ячейки определяет, как это число будет выглядеть на экране.
Как исправить:
- Если дата отображается как число (например,
45678):- Выделите столбец → правая кнопка →
Формат ячеек→ выберите категориюДата. - Если число не преобразовалось, используйте формулу
=ДАТАЗНАЧ(A1).
- Выделите столбец → правая кнопка →
- Если даты в формате
ММ/ДД/ГГГГ(американский стиль):- Используйте формулу
=ДАТА(ПРАВСИМВ(A1;4); ЛЕВСИМВ(A1;2); ПСТР(A1;4;2))для преобразования вДД.ММ.ГГГГ. - Или замените разделитель через
Найти и заменить:/→..
- Используйте формулу
"15 мая"):
- Используйте
=ДАТАЗНАЧ(A1 & " " & ГОД(СЕГОДНЯ())), чтобы добавить текущий год.
Пример: Если в ячейке A1 текст "31.12.1899", но реальная дата — 31.12.2023, используйте:
=ДАТА(2023; МЕСЯЦ(ДАТАЗНАЧ(A1)); ДЕНЬ(ДАТАЗНАЧ(A1)))
| Проблема | Причина | Решение |
|---|---|---|
Дата отображается как ##### |
Столбец слишком узкий или отрицательная дата | Расширьте столбец или проверьте корректность данных |
Дата сбилась на 4 года (например, 1905 вместо 2021) |
Excel воспринял двухзначный год как 19XX |
Используйте формулу =ДАТА(ГОД(A1)+100; МЕСЯЦ(A1); ДЕНЬ(A1)) |
Дата стала 00.01.1900 после замены |
Исходные данные были текстом, а не датой | Преобразуйте в дату через =ДАТАЗНАЧ(A1) |
6. Продвинутые приёмы: условное изменение дат
Иногда требуется изменить даты в столбце выборочно — например, сдвинуть только те, что попадают на выходные, или заменить даты в определённом диапазоне. Для этого используйте условные формулы или Power Query с фильтрацией.
Пример 1: Сдвинуть даты на 1 день, если они приходятся на субботу или воскресенье
=ЕСЛИ(ИЛИ(ДЕНЬНЕД(A1;2)>5); A1+1; A1)
Формула проверяет день недели (функция ДЕНЬНЕД с параметром 2 возвращает 1 для понедельника, 7 для воскресенья). Если день выходной (>5), прибавляем 1 день.
Пример 2: Заменить все даты до 01.01.2023 на 01.01.2026
=ЕСЛИ(A1 < ДАТА(2023;1;1); ДАТА(2026;1;1); A1)
Пример 3: В Power Query сдвинуть даты только для определённого условия
Пример 4: Замена дат с учётом праздников (продвинутый уровень)
Если нужно исключить из расчётов праздничные дни, создайте отдельную таблицу с датами праздников и используйте функцию Где Даже опытные пользователи Excel сталкиваются с проблемами при работе с датами. Вот TOP-5 ошибок и способы их решения:
1. Даты превращаются в числа (например, Причина: Excel хранит даты как количество дней с Решение: Выделите столбец → 2. Месяцы и дни перепутаны (например, Причина: Региональные настройки Excel или системы интерпретируют формат как Решение:
3. Формулы возвращают ошибку Причина: Ячейка содержит текст, который Excel не может распознать как дату.
Решение: Очистите данные от лишних символов (пробелов, кавычек) с помощью 4. Даты сбиваются при копировании между файлами
Причина: Разные региональные настройки в исходном и целевом файлах.
Решение: Копируйте даты как значения ( 5. Макрос не работает с датами
Причина: В коде не учтён формат ячеек или данные хранятся как текст.
Решение: Добавьте в макрос проверку:
Выделите столбец → правая кнопка → Альтернативно используйте формулу:
Но помните, что результат будет текстом, а не датой.
Данные → Получение данных → Из таблицы/диапазона).Добавить столбец → Настраиваемый столбец) с формулой:
if [DateColumn] < #date(2023, 1, 1) then Date.AddDays([DateColumn], 30) else [DateColumn]РАБДЕНЬ:
=РАБДЕНЬ(A1; 5; $Prazdniki$A$1:$Prazdniki$A$10)$Prazdniki$A$1:$Prazdniki$A$10 — диапазон с датами праздников.
7. Типичные ошибки и как их избежать
45678)
01.01.1900, но формат ячейки сбился.
Формат ячеек → Дата. Если не помогает, используйте =ДАТАЗНАЧ(A1).
05.06.2023 стало 06.05.2023)
ММ.ДД.ГГГГ вместо ДД.ММ.ГГГГ.
Пуск → Параметры → Время и язык → Регион → Дополнительные параметры даты и времени → Изменить форматы даты и времени → выберите дд.MM.yyyy.=ДАТА(ПРАВСИМВ(A1;4); ПСТР(A1;4;2); ЛЕВСИМВ(A1;2)).#ЗНАЧ!
=ПОДСТАВИТЬ(A1; """"; "") или =СЖПРОБЕЛЫ(A1).
Специальная вставка → Значения) или используйте ТЕКСТ(A1; "дд.мм.гггг") для преобразования в текст.
If Not IsDate(cell.Value) Then cell.Value = CDate(cell.Value)⚠️ Внимание: Если вы работаете с датами до
01.01.1900 (например, исторические данные), Excel не поддерживает их корректно. Используйте текстовый формат или специализированные надстройки, например Extended Date Functions.FAQ: Ответы на частые вопросы
Как поменять формат даты с
ДД.ММ.ГГГГ на МММ ГГГГ (например, "Май 2023")?Формат ячеек → Дата → выберите формат мар-YY или март YYYY. Если нужного формата нет, создайте свой: в категории Все форматы введите ММММ ГГГГ.=ТЕКСТ(A1; "ММММ ГГГГ")
Можно ли изменить даты в защищённом листе?
Нет, если ячейки заблокированы. Сначала снимите защиту: Рецензирование → Снять защиту листа (потребуется пароль, если он установлен).
Если у вас нет прав на редактирование, скопируйте данные на новый лист (Специальная вставка → Значения) и работайте с копией.
Как прибавить к датам рабочие дни, исключая выходные?
Используйте функцию РАБДЕНЬ:
=РАБДЕНЬ(A1; 5)
где 5 — количество рабочих дней. Чтобы исключить также праздники, укажите их диапазон третьим аргументом:
=РАБДЕНЬ(A1; 5; $Prazdniki$A$1:$A$10)
Почему после замены даты стали на 4 года раньше?
Это типичная ошибка при работе с двухзначными годами (например, 23 вместо 2023). Excel интерпретирует 23 как 1923.
Решение: используйте формулу для корректировки года:
=ДАТА(ГОД(A1)+100; МЕСЯЦ(A1); ДЕНЬ(A1))
или замените год вручную через Найти и заменить (1923 → 2023).
Как изменить даты в сводной таблице?
Сводные таблицы не позволяют напрямую редактировать исходные данные. Вам нужно:
- Изменить даты в исходном диапазоне (на листе с данными).
- Обновить сводную таблицу: кликните по ней правой кнопкой →
Обновить.
Если исходные данные подключены к внешнему источнику, измените их там и обновите соединение в Excel (Данные → Обновить все).