Я хотел бы знать, как:
Автоматически иметь функцию =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 той же строки.