%20em%20uma%20c%C3%A9lula%20automaticamente%20quando%20escrevo%20em%20outra%20e%20pressiono%20enter%20.png)
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 A1
está em branco. <>
é o significado do operador lógico not equal to
. O segundo IF
verifica a si mesmo e é executado se o conteúdo for inserido A1
. Se B1
estiver 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 TRUE
ou FALSE
. O IF
está estruturado de forma que, se a célula de destino estiver em branco, ela gerará uma string vazia. Se houver alguma entrada inserida, A1
a 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.