Como inserir a função =now() em uma célula automaticamente quando escrevo em outra e pressiono enter

Como inserir a função =now() em uma célula automaticamente quando escrevo em outra e pressiono enter

Eu gostaria de saber como:

Ter automaticamente a =now()função na coluna B do Excel, exibida apenas em cada célula (B1, B2, .. Bν) sempre que escrevo algo na coluna A nas respectivas células (A1, A2, .. Aν).

insira a descrição da imagem aqui

Responder1

NOVA RESPOSTA

Se você quiser ter um timestamp que não recalcule você precisará usar uma técnica chamadaFórmulas Circulares. Basicamente, isso permite que uma célula execute uma função com base em seu próprio conteúdo.

Você precisa ativar essa funcionalidade acessando Arquivo > Opções > Fórmulas e marcando a opção Enable iterative calculation. Altere o número de iterações para 1. Pressione OK e salve sua planilha.

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

Explicação:

O primeiro IFé semelhante ao da resposta original. Ele verifica se A1está em branco. <>é o significado do operador lógico not equal to. O segundo IFverifica a si mesmo e é executado se o conteúdo for inserido A1. Se B1estiver vazio, ele insere a data e hora atuais, caso contrário, exibe o conteúdo existente (o carimbo de data/hora original).


RESPOSTA ORIGINAL

Você poderia tentar isso em B1:

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

Explicação:

ISBLANKé um teste lógico que testa se a célula alvo possui alguma entrada. Ele retorna TRUEou FALSE. O IFestá estruturado de forma que, se a célula de destino estiver em branco, ela gerará uma string vazia. Se houver alguma entrada inserida, A1a hora e a data atuais serão exibidas.

Deve-se observar que cada vez que a planilha for recalculada, o valor gerado por NOW()mudará para a hora atual.


Referências:

Responder2

Nem sempre é aconselhável usar VBA para tudo, mas este é um bom candidato, especialmente se você deseja acompanhar sempre que uma linha foi alterada, e não apenas quando ela foi inserida pela primeira vez. Insira o seguinte no código da planilha com a coluna timestamp:

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

Neste exemplo, as colunas A, C, D e E são observadas em busca de alterações e, quando ocorrem alterações, a data e a hora atuais são inseridas na coluna B da mesma linha.

informação relacionada