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

3

Eu gostaria de saber como:

Automaticamente tem a função =now() 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, .. AVI ).

    
por stagml 10.12.2015 / 12:43

2 respostas

7

RESPOSTA NOVA

Se você deseja ter um registro de data e hora que não seja recalculado, será necessário usar uma técnica chamada Fórmulas circulares . Isso basicamente permite que uma célula execute uma função com base em seu próprio conteúdo.

Você precisa ativar essa funcionalidade indo até Arquivo > Opções > Fórmulas, em seguida, marcando o Enable iterative calculation . Altere o Número de iterações para 1 . Pressione OK e salve sua folha.

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

Explicação:

O primeiro IF é semelhante ao da resposta original. Ele verifica se A1 está em branco. <> é o operador lógico que significa not equal to . O segundo IF verifica a si mesmo e é executado se o conteúdo for inserido em A1 . Se B1 estiver vazio, ele insere a data e a hora atuais, caso contrário, ele exibe o conteúdo existente (o registro de data e 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 de destino possui alguma entrada. Ele retorna TRUE ou FALSE . O IF é estruturado de forma que, se a célula de destino estiver em branco, ela exibirá uma cadeia vazia. Se houver alguma entrada inserida em A1 , ela exibirá a hora e a data atuais.

Deve-se notar que cada vez que a folha é recalculada, o valor gerado por NOW() mudará para a hora atual.

Referências:

por 10.12.2015 / 12:47
0

Nem sempre é aconselhável usar o VBA para tudo, mas esse é um bom candidato, especialmente se você quiser 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 quanto a alterações e, quando ocorrem alterações, a data e a hora atuais são inseridas na coluna B da mesma linha.

    
por 10.12.2015 / 15:55