Как автоматически вставить функцию =now() в ячейку, когда я пишу в другой и нажимаю Enter

Как автоматически вставить функцию =now() в ячейку, когда я пишу в другой и нажимаю Enter

Я хотел бы узнать, как:

Функция автоматически =now()отображается в столбце B Excel только в каждой ячейке (B1, B2, .. Bν) всякий раз, когда я пишу что-либо в столбце A в соответствующих ячейках (A1, A2, .. Aν).

введите описание изображения здесь

решение1

НОВЫЙ ОТВЕТ

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

Вам необходимо включить эту функцию, перейдя в Файл > Параметры > Формулы, а затем отметив Enable iterative calculation. Измените Количество итераций на 1. Нажмите ОК и сохраните лист.

=IF(A1<>"",IF(B1="",NOW(),B1),"")

Объяснение:

Первый IFпохож на тот, что в исходном ответе. Он проверяет, A1пусто ли. <>— это логический оператор, означающий not equal to. Второй IFпроверяет себя и запускается, если содержимое введено в A1. Если B1пусто, он вводит текущую дату и время, в противном случае он выводит существующее содержимое (исходную временную метку).


ОРИГИНАЛЬНЫЙ ОТВЕТ

Вы можете попробовать это в B1:

=IF(ISBLANK(A1),"",NOW())

Объяснение:

ISBLANK— это логический тест, который проверяет, есть ли в целевой ячейке какие-либо входные данные. Он возвращает либо TRUEили FALSE. Он IFструктурирован таким образом, что если целевая ячейка пуста, он выведет пустую строку. Если в нее введены какие-либо входные данные, A1он выведет текущее время и дату.

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


Использованная литература:

решение2

Не всегда разумно использовать VBA для всего, но это хороший кандидат, особенно если вы хотите отслеживать, когда была изменена строка, а не только когда она была введена впервые. Вставьте следующее в код для листа со столбцом временной метки:

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    Dim intersection As Range
    ' Change A:A,C:E to whatever range you want to watch.
    Set intersection = Application.Intersect(Target, Me.Range("A:A,C:E"))
    If Not intersection Is Nothing Then
        Dim r As Range
        For Each r In intersection.Rows
            ' Change B1 to whichever column is the timestamp.
            r.EntireRow.Range("B1").Value = Now
        Next
    End If
    Application.EnableEvents = True
End Sub

В этом примере отслеживаются изменения в столбцах A, C, D и E, и когда изменения происходят, текущая дата и время вставляются в столбец B той же строки.

Связанный контент