Как в Excel выставить дату: от ручного ввода до автоматического обновления

Работа с датами в Microsoft Excel — одна из самых востребованных задач, будь то ведение отчётности, планирование проектов или анализ временных рядов. Однако даже опытные пользователи иногда сталкиваются с вопросами: как вставить текущую дату так, чтобы она не обновлялась при пересчёте таблицы? Как автоматически проставлять сегодняшнее число в новых строках? Или почему Excel воспринимает введённую дату как число, а не как формат даты?

В этой статье мы разберём 5 основных способов работы с датами — от элементарного ручного ввода до динамических формул и макросов. Вы узнаете, как:

  • 📅 Вставлять статичную дату, которая не меняется при открытии файла
  • 🔄 Использовать функции TODAY() и NOW() для автоматического обновления
  • ⚙️ Настраивать формат отображения даты (с временем, без года, в текстовом виде)
  • 📊 Применять даты в формулах для расчёта разницы дней или рабочих часов
  • 🤖 Автоматизировать простановку дат с помощью VBA-макросов

Особое внимание уделим типичным ошибкам — например, почему после копирования ячейки с датой она отображается как пятизначное число (например, 44927 вместо 01.01.2023), и как это исправить. Все инструкции актуальны для Excel 2010–2023 и Microsoft 365, включая веб-версию.

📊 Как часто вы работаете с датами в Excel?
Ежедневно
Несколько раз в неделю
Редко
Никогда

1. Ручной ввод даты: простой, но не всегда удобный способ

Самый очевидный метод — ввести дату в ячейку вручную. Например, наберите 15.05.2026 или 15 мая 2026, и Excel автоматически распознает её как формат даты. Однако здесь есть нюансы:

Если после ввода дата отображается как число (например, 45456), значит, Excel интерпретировал её как количество дней с 1 января 1900 года (так называемая "система дат 1900"). Чтобы исправить:

  1. Выделите ячейку с "числом".
  2. Нажмите Ctrl+1 (или правой кнопкой → Формат ячеек).
  3. Вкладка Число → выберите Дата и укажите нужный формат (например, 14.03.2001).
⚠️ Внимание: Если вы скопируете ячейку с датой в формате числа (например, 44927) и вставите её в текстовый редактор, дата отобразится корректно только при условии, что программа поддерживает преобразование Excel-дат. В обычном блокноте вы увидите то же число.

Преимущество ручного ввода — дата остаётся статичной (не обновляется при открытии файла). Недостаток — придётся вводить её заново каждый день, если требуется актуальная дата.

2. Функция TODAY(): автоматическая текущая дата

Функция =TODAY() возвращает сегодняшнюю дату и обновляется каждый раз при пересчёте таблицы или открытии файла. Это удобно для отчётов, где всегда нужна актуальная дата. Синтаксис простой:

=TODAY()

Примеры использования:

  • 📌 =TODAY()-30 — вернёт дату, которая была 30 дней назад.
  • 📌 =TODAY()+7 — дата через неделю.
  • 📌 =IF(TODAY()>B2, "Срок истёк", "Актуально") — проверка просроченных задач.

Важно: TODAY() не учитывает время, только дату. Если вам нужно текущее время, используйте =NOW() (об этом ниже).

Функция Пример Результат (на 15.05.2026)
TODAY() =TODAY() 15.05.2026
TODAY()+10 =TODAY()+10 25.05.2026
YEAR(TODAY()) =YEAR(TODAY()) 2026
TEXT(TODAY(),"dddd") =TEXT(TODAY(),"dddd") Среда
⚠️ Внимание: Если файл с функцией TODAY() не открывали несколько дней, дата обновится до текущей только при следующем открытии. Excel не пересчитывает формулы в закрытых книгах!

3. Функция NOW(): дата + время с секундами

В отличие от TODAY(), функция =NOW() возвращает не только дату, но и текущее время (с точностью до секунды). Синтаксис:

=NOW()

Примеры:

  • 🕒 =NOW()-1/24 — время час назад (в Excel время хранится как доля дня: 1/24 = 1 час).
  • 📅 =INT(NOW()) — текущая дата без времени (аналог TODAY()).
  • 🔄 =IF(NOW()>C2, "Опаздываем!", "Время есть") — проверка дедлайнов.

Критическая особенность: NOW() обновляется при каждом изменении в книге (даже если вы просто нажали на ячейку и нажали Enter). Это может замедлить работу с большими файлами. Если вам нужно фиксировать время одноразово (например, момент создания записи), лучше использовать VBA или сочетание клавиш Ctrl+Shift+;.

Как отключить автоматическое обновление NOW()?

По умолчанию отключить нельзя, но можно:

1. Заменить формулу на значение: выделите ячейку → КопироватьСпециальная вставка → Значения.

2. Использовать VBA-макрос для одноразовой вставки времени.

4. Форматирование даты: от "15.05" до "15 мая 2026 г."

Excel позволяет гибко настраивать отображение дат через Формат ячеек (Ctrl+1). Рассмотрим основные варианты:

Формат Пример кода Отображение (для 15.05.2026)
Дата с месяцем словами д ммм гггг 15 мая 2026
Только день и месяц д.мм 15.05
День недели + дата dddd, д ммм Среда, 15 мая
ISO-формат (международный) гггг-мм-дд 2026-05-15
Дата + время д.мм.гггг ч:мм 15.05.2026 14:30

Чтобы применить пользовательский формат:

  1. Выделите ячейку с датой.
  2. Нажмите Ctrl+1 → вкладка ЧислоВсе форматы.
  3. В поле Тип введите код формата (например, "Дата: "д ммм гггг г.).

Лайфхак: Если нужно отобразить дату как текст (например, для конкатенации с другими строками), используйте функцию =TEXT():

=TEXT(TODAY(), "д ммм гггг года")  → "15 мая 2026 года"

5. Автоматическая простановка даты при добавлении строк

Частая задача — проставлять текущую дату в новой строке таблицы (например, в журнале звонков или списке задач). Решить это можно тремя способами:

Способ 1: Формула с проверкой пустой ячейки

Допустим, данные вводятся в столбец A, а дату нужно проставлять в столбце B. В ячейку B2 введите:

=IF(A2<>"", IF(B2="", TODAY(), B2), "")

Эта формула:

  • 🔹 Проверяет, есть ли данные в A2.
  • 🔹 Если да и ячейка B2 пустая — вставляет TODAY().
  • 🔹 Если в B2 уже есть дата — оставляет её (чтобы не обновлялась).

Способ 2: VBA-макрос для одноразовой вставки

Если формулы не подходят (например, дата не должна обновляться), используйте этот код:

Private Sub Worksheet_Change(ByVal Target As Range)

Dim KeyCells As Range

Set KeyCells = Range("A:A") ' Столбец, где вводятся данные

If Not Application.Intersect(KeyCells, Target) Is Nothing Then

If Target.Value <> "" And Target.Offset(0, 1).Value = "" Then

Target.Offset(0, 1).Value = Date ' Вставляет текущую дату в соседнюю ячейку

End If

End If

End Sub

Как установить:

  1. Нажмите Alt+F11 → откройте редактор VBA.
  2. Дважды кликните на лист, где нужна автоматическая дата.
  3. Вставьте код выше.
  4. Сохраните файл как .xlsm (с поддержкой макросов).
⚠️ Внимание: Макрос сработает только при ручном вводе данных в столбец A. Если вы импортируете данные или вставляете их через Специальную вставку, дата не проставится.

Сохранить файл как .xlsm (включить макросы)|Разрешить выполнение макросов в настройках Excel|Проверить, что данные вводятся в указанный столбец|Убедиться, что соседний столбец пуст-->

6. Расчёт разницы между датами: DATEDIF и не только

Excel позволяет вычислять разницу между датами в днях, месяцах или годах. Основные функции:

Задача Формула Пример (для 01.01.2026 и 15.05.2026)
Разница в днях =B2-A2 135
Разница в месяцах =DATEDIF(A2,B2,"m") 4
Разница в годах =DATEDIF(A2,B2,"y") 0
Рабочие дни (без выходных) =NETWORKDAYS(A2,B2) 95
Дни с учётом праздников =NETWORKDAYS(A2,B2,СписокПраздников) 90

Функция DATEDIF — самая универсальная, но она скрытая (не отображается в списке функций). Её синтаксис:

=DATEDIF(начальная_дата; конечная_дата; "единица_измерения")

Где единица_измерения может быть:

  • 📅 "d" — дни
  • 📅 "m" — полные месяцы
  • 📅 "y" — полные годы
  • 📅 "ym" — месяцы без учёта лет
  • 📅 "md" — дни без учёта месяцев и лет

Пример: Чтобы узнать, сколько лет, месяцев и дней прошло с 01.01.2020 до сегодня:

=DATEDIF("01.01.2020"; TODAY(); "y") & " лет, " & DATEDIF("01.01.2020"; TODAY(); "ym") & " мес., " & DATEDIF("01.01.2020"; TODAY(); "md") & " дн."

7. Типичные ошибки и как их избежать

Даже простые операции с датами могут приводить к неожиданным результатам. Разберём самые частые проблемы:

Ошибка 1: Дата отображается как число (например, 44927)

Причина: Ячейка имеет общий или числовой формат. Решение:

  • 🔧 Измените формат на Дата (Ctrl+1).
  • 🔧 Если дата введена как текст (например, '15.05.2026), используйте =ДАТАЗНАЧ(A1) для преобразования.

Ошибка 2: Формула TODAY()-30 возвращает дату в формате числа

Причина: Результат формулы не отформатирован как дата. Решение:

  • 🎨 Примените формат Дата к ячейке с формулой.
  • 🔄 Или оберните формулу в TEXT:
    =TEXT(TODAY()-30, "д.мм.гггг")

Ошибка 3: DATEDIF возвращает #ЧИСЛО!

Причины и решения:

  • 🔍 Неверный порядок дат: начальная дата позже конечной. Поменяйте их местами.
  • 🔍 Неправильный код единицы измерения: вместо "m" указано "month". Используйте только "d", "m", "y" и их комбинации.
  • 🔍 Ячейки содержат текст: проверьте формат ячеек с датами (Дата, а не Текст).
⚠️ Внимание: Функция NETWORKDAYS по умолчанию считает субботу и воскресенье выходными. Если у вас другой график (например, выходной — пятница), используйте NETWORKDAYS.INTL с параметром [weekend].

FAQ: Ответы на частые вопросы

Как в Excel вставить дату, которая не будет меняться при открытии файла?

Есть три способа:

  1. Введите дату вручную (например, 15.05.2026).
  2. Используйте сочетание клавиш Ctrl+; — это вставит статичную текущую дату.
  3. Преобразуйте формулу =TODAY() в значение: выделите ячейку → КопироватьСпециальная вставка → Значения.
Почему после копирования даты из Excel в Word она отображается как число?

Excel хранит даты как числа (количество дней с 1900 года). При копировании в текстовые редакторы это число может отобразиться "как есть". Решения:

  • 📋 Скопируйте дату как текст: выделите ячейку → Формат ячеек → Текстовый → скопируйте.
  • 📋 В Word вставьте как Специальная вставка → Текст.
  • 📋 Используйте функцию =TEXT(A1,"д.мм.гггг") в Excel перед копированием.
Как посчитать количество рабочих дней между двумя датами, исключая праздники?

Используйте функцию NETWORKDAYS с третьим аргументом — диапазоном праздников:

=NETWORKDAYS(A2; B2; D2:D10)

Где D2:D10 — список праздничных дат. Пример:

Ячейка Значение
A2 01.01.2026
B2 15.05.2026
D2:D5 01.01.2026
07.01.2026
08.03.2026
01.05.2026

Формула вернёт количество рабочих дней за вычетом выходных и указанных праздников.

Можно ли в Excel отобразить дату на русском языке (например, "15 мая")?

Да, для этого используйте пользовательский формат или функцию TEXT:

  1. Через формат ячеек:
    • Выделите ячейку → Ctrl+1Все форматы.
    • Введите код: д ммм (для "15 мая") или д мммм (для "15 мая 2026 года").
  • Через функцию TEXT:
    =TEXT(A1; "д мммм")
  • Для полного названия месяца в родительном падеже ("15 мая 2026 года") используйте:

    =TEXT(A1; "д мммм \"года\"")
    Как автоматически обновлять дату при изменении данных в таблице?

    Если вам нужно, чтобы дата обновлялась не только при открытии файла, но и при любых изменениях в книге, используйте одну из хитростей:

    • 🔄 Добавьте волшебную ячейку:
      • Создайте скрытую ячейку (например, Z1) с формулой =NOW().
      • В нужной ячейке используйте =Z1 и отформатируйте как дату.
      • Теперь при любом изменении в книге дата будет обновляться (так как NOW() пересчитывается).
    • 🤖 Используйте VBA-макрос:
      Private Sub Worksheet_Calculate()
      

      Range("A1").Value = Now ' Обновляет дату в A1 при любом пересчёте

      End Sub

    ⚠️ Внимание: Частые пересчёты NOW() могут замедлять работу с большими файлами. Отключите автоматический пересчёт в Формулы → Параметры вычислений → Вручную, если это критично.