Precisa da data de hoje para preencher automaticamente uma célula quando os dados são inseridos em outra célula

1

Gostaria que as células C5-C39 preenchessem automaticamente a data de hoje sempre que os dados fossem inseridos nas células B5-B39.

Eu tentei fazer isso funcionar usando =TODAY() , mas não sei como estruturar a fórmula.

    
por Kyle Hinkebein 23.03.2015 / 16:29

3 respostas

0

Eu diria que a maneira mais simples de fazer isso seria com uma função definida pelo usuário. Essa função será atualizada quando qualquer célula referenciada mudar, assim você não terá que amarrá-la em nenhum evento.

Uma função para o seu problema seria:

Function Updating_Date(dependent_cell as Range) As Date
  Updating_Date = Date
End Function

Depois de colocar esse código em um módulo em sua pasta de trabalho, você pode simplesmente inserir =Updating_Date(B5) em C5 e copiá-lo para baixo. Isso deve fazer com que a data em C5 seja atualizada sempre que os valores na coluna C forem alterados.

Para que a data apareça somente se a célula na coluna B não estiver em branco, você poderia aplicar uma fórmula if na célula na coluna C, conforme eu toquei em a outra pergunta que você fez . Simplesmente digite o mesmo condicional que mostrei lá (por exemplo, ISBLANK(B5) ) e tenha o valor de retorno como uma string vazia ( "" ) se a condição for verdadeira, e a UDF ( Updating_Date(B5) ) se a condição for falsa.

    
por 23.03.2015 / 17:01
0

O seguinte coloca a data de hoje na célula "B" sempre que houver uma alteração na célula "A":

Private Sub Worksheet_Change(ByVal Target As Range)
' Auto Date
Dim Cell As Range
For Each Cell In Target
    If Cell.Column = Range("A:A").Column Then
        If Cell.Value <> "" Then
            Cells(Cell.Row, "B").Value = Int(Now)
        Else
            Cells(Cell.Row, "B").Value = ""
        End If
    End If
Next Cell
End Sub

Este código precisa ser colocado no módulo VBA para a planilha onde você deseja que esse comportamento ocorra.

    
por 23.11.2016 / 18:03
-2

AFIK, você precisará fazer isso via VBA. Você pode criar uma função que observe as alterações em sua planilha, filtre somente as alterações nas células B5-B39 e atualize as células em C de acordo.

ATUALIZAÇÃO: Você provavelmente saberá entrar no VBA usando alt-F11.

Clique duas vezes no objeto do Excel chamado Planilha1 ou na planilha na qual você está interessado (na lista da árvore, na parte superior esquerda) para obter o código dessa planilha.

Selecione Planilha e Mudança nos dois menus suspensos. Então você pega o código que parece:

Private Sub Worksheet_Change(ByVal Target As Range)

End Sub

A variável "Destino" agora está disponível, o que é uma referência à célula que muda.

Adicione um código entre as linhas:

debug.Print Target

e pressione ctrl-G para mostrar a janela imediata

Faça algumas alterações na planilha e volte para o código, você verá os dados que você digitou aparecem na janela Immediate.

Agora, altere o código para dizer if Target. e você verá uma lista suspensa de possíveis propriedades relacionadas à variável de destino.

Com algumas alterações, você pode obter isso:

Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Column = 2 And (Target.Row > 4 And Target.Row < 40) Then
        Debug.Print Target.Value
    End If

End Sub

Agora, só imprime alterações no intervalo em que você está interessado.

Se você quiser saber como alterar um valor em uma célula, poderá gravar uma macro de você fazendo isso manualmente e examinar o código. Espero que você tenha o suficiente para continuar agora. Deixe-me saber se não for.

    
por 23.03.2015 / 16:33