Como manter o histórico de alterações de dados em uma pasta de trabalho ou planilha do Excel para outra pasta de trabalho ou planilha

Como manter o histórico de alterações de dados em uma pasta de trabalho ou planilha do Excel para outra pasta de trabalho ou planilha

boa tarde,

Estou trabalhando em uma planilha do Excel onde tenho uma tabela de dados. Esses dados representam várias métricas que meu departamento deseja acompanhar. Sempre que alguém deseja preencher a tabela com novos dados, os dados anteriores nas células são perdidos.

Como alguém pode criar uma planilha separada onde você pode armazenar todos os valores dessa tabela automaticamente? Quer dizer, quando é feita uma alteração em uma das células da tabela, o novo valor será armazenado automaticamente em outra tabela que manterá todos os valores (antigos e novos) das células? Tentei as "mudanças de faixa", mas não tenho certeza se gosto tanto assim.

Alguém conhece uma maneira mais eficiente de fazer isso? Através de uma macro, por exemplo?

Obrigado!

Responder1

(Estou no celular, então não posso fornecer uma resposta muito detalhada no momento.)

Eu escrevi código exatamente para isso. Minha intenção era rastrear todas as alterações em uma planilha crítica editada por vários usuários. Se houvesse uma disputa sobre a origem dos dados, eu poderia revisar o registro. Aqui estão peças VBA que serão úteis.

Worksheet_ChangeO evento será acionado sempre que a planilha for alterada.

If Not Intersect(Target, Range("A1:G12")) Is Nothingdirá se as células que foram alteradas estão ou não dentro de algum intervalo de seu interesse.

É mais rápido armazenar os valores que você deseja registrar em uma matriz e definir um intervalo em sua planilha de registro para ser igual a essa matriz, em vez de definir cada célula na planilha de registro individualmente.

Dê uma facada e veja até onde você chega. Posso ser um pouco mais detalhado amanhã.


Edição do dia seguinte

Aqui está um código que observará o intervalo A1:G12em qualquer planilha que contenha o código. Se rfor a linha que foi alterada, o código copiará tudo Ar:Grem uma planilha cujonome de códigoé shtLog. (O nome do código é o nome mostrado no VBA, não o nome na guia que você vê no Excel.) Isso deve ajudá-lo a seguir na direção certa.

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim r As Integer
    Dim c As Integer
    Dim arr(1 To 1, 1 To 12)
    If Not Intersect(Target, Range("A1:G12")) Is Nothing Then
        r = Target.Row
        For c = 1 To 12
            arr(1, c) = Cells(r, c).Value
        Next
        With shtLog
            .Range(.Cells(.UsedRange.Rows.Count + 1, 1), .Cells(.UsedRange.Rows.Count + 1, 12)) = arr
        End With
    End If
End Sub

Responder2

A funcionalidade integrada "Rastrear alterações" provavelmente será muito mais robusta do que qualquer controle de alterações que você tente implementar com macros. Fique com isso.

Responder3

Nós (isenção de responsabilidade, sou o fundador) construímos um sistema de trilha de auditoria para Excel (como o Google Docs faz, mas para Excel). Não requer uma pasta de trabalho compartilhada e a trilha de auditoria é salva em um banco de dados SQL local para que possa ser acessada de qualquer pasta de trabalho e salva como uma planilha separada. Dar uma olhada:http://www.officeautomata.com

Responder4

Com o recurso Anexar do Sheetgo você pode salvar e manter um registro histórico de alterações de variáveis ​​​​no Excel. Mais informações nesta postagem do blog:https://blog.sheetgo.com/how-to-solve-with-sheetgo/track-changes-in-excel-files/(*isenção de responsabilidade: sou cofundador da Sheetgo).

informação relacionada