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

3

boa tarde,

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

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

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

Obrigado!

    
por user470084 16.07.2015 / 18:39

4 respostas

2

(Estou no celular, por isso não posso fornecer uma resposta muito concreta agora).

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 as peças do VBA que serão úteis.

O evento

Worksheet_Change será disparado toda vez que a planilha for alterada.

If Not Intersect(Target, Range("A1:G12")) Is Nothing dirá se a (s) célula (s) que mudou (m) está (m) dentro de algum intervalo de interesse.

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

Pegue uma facada e veja o quão longe você está. Eu posso ser um pouco mais detalhado amanhã.

Próximo dia Editar

Aqui está um código que assistirá ao intervalo A1:G12 em qualquer folha que tenha o código nele. Se r for a linha que foi alterada, o código copiará tudo de Ar:Gr em uma planilha cujo nome 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 fazer com que você se mova 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
    
por 17.07.2015 / 02:47
3

A funcionalidade "Acompanhar alterações" incorporada provavelmente será muito mais robusta do que qualquer acompanhamento de alterações que você tentar implementar com macros. Fique com isso.

    
por 16.07.2015 / 18:42
0

Nós (aviso legal, eu sou o fundador) construímos um sistema de trilha de auditoria para o Excel (como o que o Google Docs faz, mas para o Excel). Ele 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 folha separada. Dê uma olhada: link

    
por 02.09.2015 / 23:54
0

Com o recurso Append do Sheetgo, você pode salvar um registro histórico de variáveis variáveis no Excel. Mais informações nesta postagem do blog: link (* disclaimer: Sou co-fundador da Sheetgo).

    
por 04.05.2017 / 00:26