하나의 Excel 통합 문서 또는 시트의 데이터 변경 기록을 다른 통합 문서 또는 시트에 유지하는 방법

하나의 Excel 통합 문서 또는 시트의 데이터 변경 기록을 다른 통합 문서 또는 시트에 유지하는 방법

좋은 오후에요,

데이터 테이블이 있는 Excel 시트를 작업 중입니다. 이 데이터는 우리 부서에서 추적하려는 여러 측정항목을 나타냅니다. 누군가가 테이블을 새 데이터로 채우려고 할 때마다 셀의 이전 데이터가 손실됩니다.

해당 테이블의 모든 값을 자동으로 저장할 수 있는 별도의 시트를 어떻게 만들 수 있습니까? 내 말은, 테이블 셀 중 하나에서 변경이 완료되면 셀의 모든 값(이전 및 새)을 유지하는 다른 테이블에 새 값이 자동으로 저장된다는 뜻입니까? "변경 사항 추적"을 시도했지만 이 방법이 그렇게 마음에 드는지 잘 모르겠습니다.

이 작업을 수행하는 더 효율적인 방법을 아는 사람이 있습니까? 예를 들어 매크로를 통해?

감사합니다!

답변1

(모바일이라 지금은 구체적인 답변을 드릴 수 없습니다.)

나는 정확히 이것에 대한 코드를 작성했습니다. 내 의도는 여러 사용자가 편집한 중요 시트의 모든 변경 사항을 추적하는 것이었습니다. 데이터의 출처에 대해 논쟁이 있으면 로그를 검토할 수 있습니다. 다음은 유용할 VBA 부분입니다.

Worksheet_Change워크시트가 변경될 때마다 이벤트가 발생합니다.

If Not Intersect(Target, Range("A1:G12")) Is Nothing변경된 셀이 관심 있는 범위 내에 있는지 여부를 알려줍니다.

로그 시트의 각 셀을 개별적으로 설정하는 것보다 로그 시트의 일부 범위를 해당 배열과 동일하게 설정하고 로그 시트에 로그인하려는 값을 저장하는 것이 더 빠릅니다.

찌르고 얼마나 멀리 가는지 확인하십시오. 내일은 좀 더 장황하게 말할 수 있겠네요.


다음날 편집

A1:G12다음은 코드가 포함된 시트의 범위를 감시하는 코드입니다 . r변경된 행인 경우 코드는 모든 내용을 시트에 복사 합니다 Ar:Gr.코드 네임이다 shtLog. (코드 이름은 Excel에 표시되는 탭의 이름이 아니라 VBA에 표시되는 이름입니다.) 이를 통해 올바른 방향으로 이동할 수 있습니다.

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

답변2

내장된 "변경 사항 추적" 기능은 매크로를 사용하여 구현하려는 변경 사항 추적보다 훨씬 더 강력할 것입니다. 그걸 고수하세요.

답변3

우리(면책조항, 저는 창립자입니다)는 Excel용 감사 추적 시스템(Google Docs가 수행하는 것과 비슷하지만 Excel용)을 구축했습니다. 공유 통합 문서가 필요하지 않으며 감사 추적은 로컬 SQL 데이터베이스에 저장되므로 모든 통합 문서에서 액세스하고 별도의 시트로 저장할 수 있습니다. 보세요:http://www.officeautomata.com

답변4

Sheetgo의 추가 기능을 사용하면 Excel에서 변수 변경에 대한 기록을 저장할 수 있습니다. 이 블로그 게시물의 추가 정보:https://blog.sheetgo.com/how-to-solve-with-sheetgo/track-changes-in-excel-files/(*면책 조항: 저는 Sheetgo의 공동 창립자입니다.)

관련 정보