Функции и формулы
Функция СЕГОДНЯ в Excel: почему число в ячейке меняется само и как его зафиксировать
Функция СЕГОДНЯ в Excel — это формула текущей даты для тех, кто считает сроки, просрочки и возраст на сегодняшний день. По справке Microsoft её значение меняется только при пересчёте листа или выполнении макроса[1], а для неизменной даты служит сочетание Ctrl+;. Ниже — отличие от ТДАТА, расчёты сроков на примере и причины, по которым дата не обновляется.
Журнал заявок, график платежей и список сотрудников живут по одной логике: что-то нужно посчитать от текущего дня, а что-то — запомнить навсегда. Справка Microsoft описывает СЕГОДНЯ как функцию без аргументов, которая возвращает текущую дату порядковым номером[2]. Функция СЕГОДНЯ в Excel берёт дату из часов компьютера, поэтому отчёт, открытый завтра, сам пересчитается на новый день. Если перепутать формулу и статичное значение, история заявок однажды утром «переедет» на новую дату.
Функция СЕГОДНЯ в Excel решает это одной формулой, если её поставить в правильное место. Порядок работы такой: найти ячейку для даты, ввести формулу СЕГОДНЯ или нажать Ctrl+;, проверить формат и режим пересчёта, исправить формат или режим вычислений и протянуть расчёт срока на свои данные. Все результаты ниже посчитаны на 06.11.2026 в движке тренажёра.
Ключевые факты: функция СЕГОДНЯ в Excel
- СЕГОДНЯ возвращает текущую дату порядковым номером и не принимает аргументов.
- По умолчанию 1 января 1900 года — число 1, а 1 января 2008 года — 39448[2].
- Значение функции меняется только при пересчёте листа или выполнении макроса, непрерывно оно не обновляется[1].
- СЕГОДНЯ отличается от ТДАТА тем, что возвращает дату без времени.
- Справка Microsoft советует для неизменной даты сочетание Ctrl+;, а для времени — Ctrl+Shift+;[1].
Как вставить текущую дату функцией СЕГОДНЯ в Excel
Функция СЕГОДНЯ возвращает текущую дату и меняет её при каждом пересчёте листа, а Ctrl+; вставляет дату значением, которое уже не изменится. Справка Microsoft описывает оба способа и объясняет, когда какой нужен[1].
| Что нужно | Как вставить | Меняется ли потом |
|---|---|---|
| дата, которая не изменится | Ctrl+; | нет |
| время, которое не изменится | Ctrl+Shift+; | нет |
| дата и время одной записью | Ctrl+;, пробел, Ctrl+Shift+; | нет |
| всегда текущая дата | =СЕГОДНЯ() | да, при пересчёте |
| текущие дата и время | =ТДАТА() | да, при пересчёте |
- Выберите ячейку и введите
=СЕГОДНЯ()— скобки пустые, у функции СЕГОДНЯ в Excel нет аргументов. - Нажмите Enter: если у ячейки был общий формат, Excel сам поставит формат даты[2].
- Для отметки «когда принята заявка» вместо формулы нажмите Ctrl+;.
Статичное значение не изменяется ни при пересчёте, ни при открытии листа[1]. Функция СЕГОДНЯ в Excel нужна там, где дата участвует в расчёте: сколько дней до срока, просрочен ли платёж, сколько лет сотруднику. Если формулу уже ввели, а дату нужно заморозить, ячейку копируют и вставляют как значение. Функция СЕГОДНЯ и сочетание Ctrl+; дают одинаковую дату в момент ввода, но назавтра покажут разное: формула — новый день, значение — прежний.
Справка относит СЕГОДНЯ к Excel для Microsoft 365, Excel 2024, Excel 2021, Excel 2019 и Excel 2016, включая версии для Mac[2]. Сочетания клавиш в справке приведены для Windows.
Разобравшись со способами вставки, переходим к соседней функции — она тоже показывает «сейчас», но с часами и минутами.
Чем СЕГОДНЯ отличается от ТДАТА
СЕГОДНЯ отличается от ТДАТА тем, что возвращает дату без времени, а ТДАТА — дату вместе с текущим временем. Обе функции пишутся с пустыми скобками, и обе пересчитываются вместе с листом[3]. ТДАТА в отличие от СЕГОДНЯ меняет результат и в течение дня, поэтому для сроков в днях удобнее функция без времени.
| Признак | СЕГОДНЯ | ТДАТА |
|---|---|---|
| что возвращает | текущую дату | текущие дату и время |
| вид числа | целое | с дробной частью |
| пример из справки | =СЕГОДНЯ()+5 — через 5 дней | =ТДАТА()-0,5 — 12 часов назад |
| английское имя | TODAY | NOW |
Даты в Excel хранятся порядковыми номерами: по умолчанию 1 января 1900 года — число 1, а 1 января 2008 года — 39448[2]. Время — дробная часть числа: справка о ТДАТА поясняет, что 0,5 соответствует 12:00, полудню[3]. Поэтому =ТДАТА()+7 даёт тот же час через неделю, а =ТДАТА()-2,25 — момент 2 дня и 6 часов назад.
Связь функций видна в проверке =ЦЕЛОЕ(ТДАТА())=СЕГОДНЯ(): она возвращает ИСТИНА, потому что целая часть ТДАТА и есть текущая дата[4]. Функция СЕГОДНЯ на 06.11.2026 хранит число 46332 — это видно, если поставить ячейке общий формат. С таким числом функция СЕГОДНЯ в Excel участвует в арифметике напрямую: прибавление пяти даёт дату через пять дней.
В Google Таблицах TODAY тоже не имеет аргументов и показывает дату последнего пересчёта таблицы. Справка Google добавляет, что функция пересчитывается постоянно и может замедлять большие таблицы, а для времени есть NOW[5].
Однако на практике обе функции нужны не сами по себе, а в расчётах от текущего дня — там видно, зачем дата хранится числом.
Пример: сроки и просрочки от сегодняшней даты
Функция СЕГОДНЯ превращает таблицу сроков в живой отчёт: разность «срок минус сегодня» каждый день пересчитывается сама. Пример посчитан на 06.11.2026[4]:
| A | B | C | |
|---|---|---|---|
| 1 | Задача | Срок | Дней до срока |
| 2 | Отчёт | 20.11.2026 | =B2-СЕГОДНЯ() → 14 |
| 3 | Счёт | 01.11.2026 | =B3-СЕГОДНЯ() → -5 |
Отрицательное число означает просрочку, положительное — сколько дней осталось. Статус словами даёт =ЕСЛИ(B3<СЕГОДНЯ();"Просрочено";"В срок") — для счёта формула вернёт «Просрочено». Через день результаты станут на единицу меньше без вашего участия.
| Задача | Формула | Результат на 06.11.2026 |
|---|---|---|
| дата через 5 дней | =СЕГОДНЯ()+5 | 11.11.2026 |
| число месяца | =ДЕНЬ(СЕГОДНЯ()) | 6 |
| дней до 1 января 2030 года | =ДАТАЗНАЧ("1.01.2030")-СЕГОДНЯ() | 1152 |
| дней до конца года | =ДАТА(ГОД(СЕГОДНЯ());12;31)-СЕГОДНЯ() | 55 |
| первое число месяца | =ДАТА(ГОД(СЕГОДНЯ());МЕСЯЦ(СЕГОДНЯ());1) | 01.11.2026 |
Формулы с ДАТАЗНАЧ, ДЕНЬ и сдвигом на 5 дней приведены в справке Microsoft, а для числа дней ячейке нужен общий или числовой формат[2]. Если текст в ДАТАЗНАЧ означает дату вне диапазона от 1 января 1900 до 31 декабря 9999 года, функция вернёт #ЗНАЧ!, а пропущенный год возьмёт из часов компьютера[6]. Справка показывает и грубый возраст =ГОД(СЕГОДНЯ())-1963, но вычитание годов не знает, был ли день рождения: для 15.12.1990 оно даёт 36, а точный расчёт через РАЗНДАТ — 35[4].
Подсветку просрочек делают правилом условного форматирования по формуле с датой: правило =$B2<СЕГОДНЯ() сдвигается само каждый день. Посчитайте сроки в тренажёре: урок меняет дату «сегодня» и проверяет, что формула пересчитала остаток дней.
Именно поэтому пересчёт требует отдельного разбора: живой отчёт работает, только пока Excel действительно пересчитывает лист.
Почему не обновляется дата в формуле СЕГОДНЯ
СЕГОДНЯ не обновляется, если книга переведена в ручной режим вычислений или лист давно не пересчитывался. Ячейки с этой функцией не обновляются постоянно, а меняются только при пересчёте листа или выполнении макроса[1].
- Откройте «Файл» > «Параметры» > «Формулы».
- В разделе «Параметры вычислений» выберите «Автоматически»[2].
- Проверьте, что в ячейке формула, а не вставленное значение: строка формул должна показывать
=СЕГОДНЯ(). - Сверьте дату компьютера: функция берёт её из системных часов.
- Внесите любое изменение на листе и проверьте, что дата сменилась.
Вторая частая жалоба — вместо даты видно число, хотя формула верна. Если до формулы у ячейки стоял числовой формат, Excel покажет порядковый номер; формат меняют через «Формат ячеек» > «Число» > «Дата»[1].
Склейка с текстом ломает вид даты иначе: ="Сегодня "&СЕГОДНЯ() вернёт «Сегодня 46332»[4]. Справка Microsoft объясняет, что при склейке берётся базовое значение ячейки, а вид числа задаёт функция ТЕКСТ[7]. Правильная запись — ="Отчёт на "&ТЕКСТ(A1;"ДД.ММ.ГГГГ"), где в A1 стоит текущая дата: формула вернёт «Отчёт на 06.11.2026». Код «ДДДД» вместо даты выводит день недели — для 06.11.2026 это пятница. Склейка подробно разобрана на странице о склейке строк с датой через &.
Обратная ситуация — дата меняется, когда не должна, — почти всегда значит, что вместо Ctrl+; поставили формулу. Вернуть прежние даты можно только вручную, поэтому для журналов формулу текущей даты не используют.
Остаётся понять, в каких задачах формула текущей даты приносит больше вреда, чем пользы.
Когда функция СЕГОДНЯ не подойдёт
Функция СЕГОДНЯ не подойдёт, если дату нужно запомнить, а не пересчитывать: она всегда показывает день последнего пересчёта. Каждое условие ниже проверяется до того, как ставить формулу в таблицу. В живых отчётах о сроках, наоборот, ей нет замены: она избавляет от ручного обновления даты каждое утро.
- Если нужно зафиксировать дату события — заявки, оплаты, прихода товара, — формула через день покажет другую дату; используйте Ctrl+; или вставку значения.
- Если отчёт должен показывать состояние на конкретный день, например конец квартала, функция сдвинет расчёт — поставьте дату отчёта в отдельную ячейку вручную.
- При ручном режиме вычислений дата застынет на дне последнего пересчёта, и сроки окажутся неверными.
- Если формул с СЕГОДНЯ на листе много, вынесите текущую дату в одну ячейку и ссылайтесь на неё — так проще проверить расчёт.
- Для дат раньше 1 января 1900 года функции дат не работают: это нижний предел дат для вычислений[8].
Возраст в полных годах и стаж разобраны на странице о функции РАЗНДАТ для возраста и стажа, а дни между двумя датами — на странице о количестве дней между датами. Если файл открывают коллеги в другом часовом поясе, «сегодня» у них берётся из своих часов и может оказаться другим днём. Остальные группы формул собраны в навигаторе по формулам Excel для повседневных отчётов.
Частые вопросы
Как вставить текущую дату в Excel?
Текущую дату вставляют формулой =СЕГОДНЯ() или сочетанием Ctrl+;. Формула обновляется при пересчёте листа, а сочетание записывает значение, которое уже не изменится[1].
Чем СЕГОДНЯ отличается от ТДАТА?
СЕГОДНЯ отличается от ТДАТА тем, что возвращает только дату. ТДАТА добавляет текущее время дробной частью числа: 0,5 соответствует полудню[3].
Как посчитать, сколько дней осталось до срока?
Дни до срока считает разность срока и текущей даты, например =B2-A1, где в A1 стоит функция СЕГОДНЯ в Excel. Для 20.11.2026 на 06.11.2026 формула вернёт 14, а отрицательное число означает просрочку[4].
Почему не обновляется функция СЕГОДНЯ?
Функция СЕГОДНЯ не обновляется, если в книге включён ручной режим вычислений: формула ждёт пересчёта. Включите «Автоматически» в разделе «Параметры вычислений» на вкладке формул в параметрах Excel[2].
Можно ли зафиксировать дату, чтобы она не менялась?
Да: дату фиксирует сочетание Ctrl+; — оно записывает статичное значение[1]. Если формула уже стоит, скопируйте ячейку и вставьте её как значение.
Работает ли СЕГОДНЯ в Google Таблицах?
Да, в Google Таблицах есть TODAY без аргументов. Она показывает дату последнего пересчёта и, по справке Google, может замедлять таблицу[5].
Источники
- [1] Microsoft, справка «Вставка текущих даты и времени в ячейку», 2026
- [2] Microsoft, справка «Функция СЕГОДНЯ», 2026
- [3] Microsoft, справка «Функция ТДАТА», 2026
- [4] Редакция «Excel-тренажёра», проверка «расчёты от СЕГОДНЯ на 06.11.2026» в движке тренажёра, 2026
- [5] Google, справка «TODAY», 2026
- [6] Microsoft, справка «Функция ДАТАЗНАЧ», 2026
- [7] Microsoft, справка «Объединение текста и чисел», 2026
- [8] Microsoft, «Технические характеристики и ограничения Microsoft Excel», 2026