Cómo mantener el historial de cambios de datos en un libro u hoja de Excel en otro libro u hoja

Cómo mantener el historial de cambios de datos en un libro u hoja de Excel en otro libro u hoja

buenas tardes,

Estoy trabajando en una hoja de excel donde tengo una tabla de datos. Estos datos representan varias métricas de las que mi departamento quiere realizar un seguimiento. Siempre que alguien quiere completar la tabla con datos nuevos, los datos anteriores de las celdas se pierden.

¿Cómo puede alguien crear una hoja separada donde pueda almacenar todos los valores de esa tabla automáticamente? Quiero decir, cuando se realiza un cambio en una de las celdas de la tabla, ¿el nuevo valor se almacenará automáticamente en otra tabla que mantendrá todos los valores (antiguos y nuevos) de las celdas? Probé los "cambios de pista" pero no estoy seguro de si me gusta tanto.

¿Alguien conoce una forma más eficiente de hacer esto? ¿A través de una macro por ejemplo?

¡Gracias!

Respuesta1

(Estoy en el móvil, por lo que no puedo dar una respuesta muy detallada en este momento).

He escrito código exactamente para esto. Mi intención era realizar un seguimiento de todos los cambios en una hoja crítica editada por varios usuarios. Si hubiera una disputa sobre el origen de los datos, podría revisar el registro. Aquí hay piezas de VBA que le resultarán útiles.

Worksheet_ChangeEl evento se activará cada vez que se cambie la hoja de trabajo.

If Not Intersect(Target, Range("A1:G12")) Is Nothingle dirá si las celdas que cambiaron están o no dentro de algún rango que le interese.

Es más rápido almacenar los valores que desea registrar en una matriz y establecer un rango en su hoja de registro para que sea igual a esa matriz en lugar de configurar cada celda en la hoja de registro individualmente.

Apuñala y mira hasta dónde llegas. Puedo ser un poco más detallado mañana.


Editar al día siguiente

Aquí hay un código que observará el rango A1:G12en cualquier hoja que contenga el código. Si res la fila que se cambió, entonces el código copiará todo Ar:Gren una hoja cuyonombre clavees shtLog. (El nombre del código es el nombre que se muestra en VBA, no el nombre en la pestaña que ve en Excel). Esto debería ayudarlo a avanzar en la dirección correcta.

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

Respuesta2

La funcionalidad incorporada de "Seguimiento de cambios" probablemente será mucho más sólida que cualquier seguimiento de cambios que intente implementar con macros. Quédate con eso.

Respuesta3

Nosotros (descargo de responsabilidad, soy el fundador) creamos un sistema de seguimiento de auditoría para Excel (como lo que hace Google Docs, pero para Excel). No requiere un libro compartido y el registro de auditoría se guarda en una base de datos SQL local para que se pueda acceder a él desde cualquier libro y guardarlo como una hoja separada. Echar un vistazo:http://www.officeautomata.com

Respuesta4

Con la función Agregar de Sheetgo puede guardar y mantener un registro histórico de variables cambiantes en Excel. Más información en esta entrada de blog:https://blog.sheetgo.com/how-to-solve-with-sheetgo/track-changes-in-excel-files/(*descargo de responsabilidad: soy cofundador de Sheetgo).

información relacionada