Я хотел бы знать, как:
Автоматически иметь функцию =now()
в столбце B Excel, отображается только в каждой ячейке (B1, B2, .. Bν) всякий раз, когда я пишу что-то в столбце A в соответствующих ячейках (A1, A2, .. Aν).
Я хотел бы знать, как:
Автоматически иметь функцию =now()
в столбце B Excel, отображается только в каждой ячейке (B1, B2, .. Bν) всякий раз, когда я пишу что-то в столбце A в соответствующих ячейках (A1, A2, .. Aν).
НОВЫЙ ОТВЕТ
Если вы хотите, чтобы временная метка не пересчитывалась, вам нужно использовать технику, которая называется Круговые формулы. Это в основном позволяет ячейке выполнять функцию, основанную на ее собственном контенте.
Чтобы включить эту функцию, выберите «Файл»> «Параметры»> «Формулы» и установите флажок « 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()
будет изменяться на текущее время.
Рекомендации:
Не всегда разумно использовать 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 той же строки.