- Применение функции СЕГОДНЯ в Excel
- Создаем собственную функцию для записи даты и времени
- Вставка текущей даты и времени
- Куда поместить этот код?
- Visual Basic автоматизация записи даты и времени
- Циклы для авто-вставки даты
- Как поставить неизменную отметку времени автоматически (формулами)
- Как автоматически заполнять даты в Excel
Применение функции СЕГОДНЯ в Excel
Давайте разберемся, как работает функция СЕГОДНЯ, что не должно составить труда даже начинающим пользователям Excel. Введите =TODAY() в пустую ячейку и нажмите Enter, чтобы применить. Вы увидите, что текущая дата отображается на экране в стандартном формате ячеек.
Если цифры не совпадают с датой, измените формат ячейки на «Дата» через раздел «Число» на главной вкладке программы.
Далее я рассмотрю несколько простых примеров того, как можно объединить СЕГОДНЯ с другими функциями Excel. Например, вы можете вычислить возраст человека, зная год его рождения, который вы вводите =ГОД(СЕГОДНЯ())-2000, где 2000 — тот же год. Вместо этого числа можно подставить номер ячейки, где находится год рождения. В результате вы увидите текущий возраст человека.
Замечу, что при этой и некоторых других комбинациях формат ячеек должен быть «Общий», иначе результат не будет соответствовать действительности.
Вы можете узнать, какое число будет через несколько дней, для чего нужно добавить указанное количество дней после + к СЕГОДНЯ, но в этом случае формат ячейки должен оставаться «Дата», потому что вас интересует точный результат, включая день, месяц и год. Вычитание указанного количества дней из текущей даты работает таким же образом.
Если вам нужно отобразить только текущий день, используйте строку =DAY(TODAY()), а для месяца =MONTH(TODAY()) оставьте формат ячейки простым, поскольку вам нужно отобразить только одно число.
Теперь хочу разобрать более сложный вариант объединения функций, например, сколько дней пройдет от сегодняшнего дня до указанной даты. В этом случае дату необходимо вводить в виде текста, поэтому совместить ее с другими значениями в ячейках не получится. Введите =DATE VALUE(«01.01.2000»)-TODAY(), заменив указанную дату своей собственной.
В результате расчета функции вы увидите, через сколько дней наступит указанная дата. Таким образом, вы можете вести свой собственный календарь или заполнять различные расписания.
Сообщество теперь в Telegram. Подпишитесь и будьте в курсе последних новостей ИТ. Подпишитесь
Создаем собственную функцию для записи даты и времени
создание собственной функции — очень хороший способ быстро записывать даты в Excel.
Создав эту функцию, вы можете использовать ее как любую другую функцию Excel.
Вот код, который создает пользовательскую функцию отметки времени в Excel:
Временная метка функции (ссылка как диапазон) If Reference.Value <> «» then Timestamp = Format(теперь «дд-мм-гггг чч:мм:сс») Else Timestamp = «» End If End Function
Читайте также: Web Companion — что это за программа?
Вставка текущей даты и времени
Существует два варианта вставки текущего времени и даты в Excel: статический и динамический. Первый служит отметкой времени. Второй вариант позволяет всегда сохранять в ячейке текущую дату и время.
Что можно сделать, чтобы метка времени всегда была актуальной? Для этого необходимо использовать те же формулы, что и ниже. Они всегда будут показывать текущую дату и время.
Если вам необходимо установить статическое время, вы можете воспользоваться специальными инструментами Excel, которые вызываются с помощью горячих клавиш:
- Ctrl + ; или Ctrl+Shift+4 — эти горячие клавиши автоматически вставляют в ячейку дату, которая актуальна на момент нажатия человеком этих кнопок.
- Ctrl + Shift + ; или Ctrl+Shift+6 – их можно использовать для записи текущего времени.
- Если вам нужно вставить одновременно текущее время и дату, сначала нажмите первую комбинацию клавиш, затем нажмите пробел и наберите вторую комбинацию.
Какие конкретно ключи мне следует использовать? Все зависит от активированной в данный момент настройки. Если раскладка теперь английская, используется первая комбинация, а если русская, то вторая (то есть та, что следует сразу за словом «или»).
Следует отметить, что использование этих горячих клавиш не всегда является идеальным. В некоторых случаях будет работать только одна из описанных выше комбинаций, независимо от того, какой язык выбран. Поэтому лучший способ узнать, какой из них использовать, — это проверить.
Как правило, закономерность следующая: все зависит от того, какой язык был установлен на момент открытия файла. Если он английский, то ситуация совершенно не изменится, даже если сменить раскладку на русскую. Если был установлен русский язык, необходимо использовать формулу, соответствующую русскому языку, даже если вы меняете его на английский.
Куда поместить этот код?
Этот код должен быть установлен как событие изменения таблицы, чтобы он запускался при каждом изменении.
Для этого:
- Щелкните правой кнопкой мыши имя листа и выберите «Показать код» (или используйте Alt+F11, а затем дважды щелкните имя листа);
- Скопируйте и вставьте этот код в окно;
- Закройте редактор VB.
Обязательно сохраните файл с расширением .XLS или .XLSM, так как он содержит макрос Excel.
Visual Basic автоматизация записи даты и времени
Если вы выбираете VBA, здесь вы найдете практичный способ записи времени в Excel.
VBA дает вам большую гибкость при назначении условий, при которых должна отображаться метка времени.
Ниже приведен код, который будет записывать дату в столбец B при изменении ячеек в столбце A.
Private Sub Worksheet_Change(ByVal Target As Range) При ошибке перейдите к обработчику, если Target.Column = 1 и Target.Value <> «» Тогда Application.EnableEvents = False Target.Offset(0, 1) = Format(Now(), » дд -мм-гггг чч:мм:сс») Application.EnableEvents = True End If Handler: End Sub
Код проверяет, были ли изменения в столбце А. Если да, дата записывается в столбец Б.
Обратите внимание, что этот код перезапишет все в столбце B. Вы можете добавить код, чтобы предотвратить возникновение такой ситуации.
Циклы для авто-вставки даты
Недавно мне задали такой вопрос:
«Как сделать так, чтобы дата перезаписывалась только при изменении файла? А если кто-то сохранил файл, но изменений не было, то необходимо, чтобы дата оставалась прежней. Я хочу, чтобы все это происходило автоматически.».
Есть вариант с сочетаниями клавиш (как показано выше в статье). Но это не «автоматически». При использовании сочетаний клавиш необходимо каждый раз вручную записывать дату.
Специально для автоматической записи существует метод, использующий «бесконечный цикл», также называемый «циклической связью».
Итак, что такое циклическая ссылка в Excel.
Допустим, у вас есть значение 5 в ячейке A1 и 10 в ячейке A2.
Теперь, если вы используете формулу =A1+A2+A3 в ячейке A3, это приведет к ошибке. Вы также можете увидеть подсказку, как показано ниже:
Это произошло потому, что вы использовали ячейку A3 в вычислениях, которые происходят в A3.
Возникает ошибка и начинается бесконечный цикл, что приводит к остановке Excel. Но разработчики Excel позаботились о том, чтобы при обнаружении циклической ссылки значение не вычислялось, и в этом случае не будет катастрофы бесконечных вычислений.
Однако есть альтернатива: мы можем попросить Excel запустить бесконечный цикл определенное количество раз, прежде чем он остановится.
Теперь я собираюсь продемонстрировать, как это можно сделать и получить автоматический ввод даты.
Обратите внимание: когда мы что-то пишем в столбце А, дата записывается в столбце Б. Но если меняется само значение, дата не записывается.
Вот шаги, которые вам нужно выполнить, чтобы сделать это:
- Зайдите в меню «Файл» -> «Параметры»;
- В диалоговом окне «Параметры Excel» выберите «Формулы»;
- В опциях «Параметры расчета» установите флажок «Включить итерационные вычисления»;
- Перейдите в ячейку B2 и введите следующую формулу:
=ЕСЛИ(A2<>»»,ЕСЛИ(B2<>»»,B2,TDATE()),»»)
Прозрачный!
Когда вы вводите значение в столбец А, все автоматически будет введено в столбец Б.
Теперь разберемся, как обеспечить перезапись временной метки каждый раз, когда происходят изменения в ячейках столбца А.
Для этого вам понадобится следующая функция:
=IF(A2<>»»,IF(AND(B2<>»»,CELL(«адрес»)=ADDRESS(СТРОКА(A2),СТОЛБЕЦ(A2))),TDATE(),IF(CELL(«адрес «)<>АДРЕС(СТРОКА(A2),СТОЛБЕЦ(A2)),B2,TDATE())),»»)
Эта формула использует функцию ЯЧЕЙКА, чтобы получить ссылку на последнюю отредактированную ячейку, и если она совпадает с ячейкой слева от нее, она обновляет метку времени.
Примечание. Когда вы включаете итеративные вычисления в Excel, они остаются активными, пока вы их не отключите.
Как поставить неизменную отметку времени автоматически (формулами)
Чтобы в ячейке всегда отображалось время, существуют специальные формулы. Но конкретная формула зависит от того, какие задачи преследует пользователь. Так что если обычного отображения времени в таблице достаточно, нужно использовать функцию TDATA(), не содержащую никаких аргументов. После того, как вставим его в ячейку, меняем формат на «Время», как описано выше.
Если потом на основе этих данных вы собираетесь сделать что-то еще и использовать полученный результат в формулах, лучше использовать одновременно две функции: =TDATE()-TODAY()
В результате количество дней будет равно нулю. Следовательно, в качестве результата, возвращаемого этой формулой, останется только время. Но здесь еще и формат времени придется использовать, чтобы все работало как часы. При использовании формул обратите внимание на следующие нюансы:
- Данные не обновляются постоянно. Чтобы дата и время сменились на текущие, необходимо закрыть окно, сначала сохранить его, а затем снова открыть. Обновление также происходит, если вы активируете макрос, настроенный для этой функции.
- Эта функция использует системные часы в качестве источника данных. Поэтому, если они настроены неправильно, формула также будет работать плохо. Поэтому рекомендуется настроить автоматическую регистрацию даты и времени из Интернета.
Теперь представим себе эту ситуацию. У нас есть таблица со списком товаров, расположенных в столбце А. Сразу после их отправки покупателю в специальную ячейку необходимо ввести значение «Да». Задача: автоматически зафиксировать время, когда человек написал слово «Да», и в то же время защитить его от изменения.
Какие меры можно предпринять для достижения этой цели? Например, вы можете попробовать использовать функцию ЕСЛИ, которая также содержит ту же функцию, но с данными, зависящими от значения другой ячейки. Гораздо проще продемонстрировать это на примере. Формула будет выглядеть так: =ЕСЛИ(B2=»Да»; ЕСЛИ(C2=»»;TDATE(); C2); «»)
Расшифруем эту формулу.
- B — столбец, в который мы должны записать подтверждение доставки.
- C2 — это ячейка, в которой появится отметка времени после того, как мы напишем слово «Да» в ячейке B2».
Описанная выше формула работает следующим образом. Он проверяет, есть ли слово «Да» в ячейке B2. В этом случае выполняется новая проверка, проверяющая, пуста ли ячейка C2. Если да, возвращаются текущие дата и время. Если ни одна из описанных выше функций ЕСЛИ не содержит других параметров, ничего не меняется.
Если вы хотите, чтобы критерием было «если оно содержит хотя бы одно значение», используйте в условии оператор «не равно» <>. В этом случае формула будет выглядеть так: =IF(B2<>»»; IF(C2=»»;TDATE(); C2); «»)
Эта формула работает следующим образом: сначала она проверяет, есть ли в ячейке какой-либо контент. Если да, начинается новая проверка. При этом порядок действий остается прежним.
Для полноценной работы этой формулы необходимо включить интерактивные вычисления на вкладке «Файл» и в разделе «Параметры – Формулы». В этом случае нежелательно, чтобы ячейка ссылалась на одну и ту же ячейку. Это ухудшит производительность, но функциональность не улучшится.
Как автоматически заполнять даты в Excel
Если вы хотите заполнить большую часть таблицы датами, вы можете использовать специальную функцию автозаполнение. Давайте рассмотрим некоторые частные случаи его использования.
Предположим, нам нужно заполнить список дат, каждая из которых на один день длиннее предыдущей. В этом случае вам нужно использовать автозаполнение, как и любое другое значение. Сначала введите исходную дату в ячейку, затем с помощью курсора автозаполнения переместите формулу вниз или вправо, в зависимости от порядка размещения информации в таблице конкретно в вашем случае. Маркер автозаполнения представляет собой небольшой квадрат, расположенный в правом нижнем углу ячейки, который, перетаскивая его, позволяет автоматически заполнить огромный объем информации. Программа автоматически определяет, как правильно его заполнить, и в большинстве случаев это правильно. На этом скриншоте мы заполнили дни в столбце. Был получен следующий результат.
Но на этом возможности автозаполнения не заканчиваются. Вы даже можете сделать это по дням недели, месяцам или годам. Есть два способа сделать это.
- Используйте стандартный маркер автозаполнения, как описано выше. После того, как программа автоматически все выполнит, вам нужно нажать на значок с опциями автозаполнения и выбрать правильный метод.
- Перетащите маркер автозаполнения с помощью правой кнопки мыши, и когда вы ее отпустите, автоматически появится меню настроек. Выбирайте нужный вам способ и оставайтесь довольными.
Вы также можете автоматически вносить депозит каждые N дней. Для этого добавьте значение в ячейку, щелкните правой кнопкой мыши по маркеру автозаполнения, удерживайте его и перетащите в то место, где вы хотите, чтобы последовательность чисел заканчивалась. После этого выберите вариант заливки «Прогрессия» и выберите значение шага.