3

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

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

2 ответа2

7

НОВЫЙ ОТВЕТ

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

Чтобы включить эту функцию, выберите «Файл»> «Параметры»> «Формулы» и установите флажок « 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() будет изменяться на текущее время.


Рекомендации:

0

Не всегда разумно использовать 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 той же строки.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .