Skip to main content

Excel에서 변경된 셀의 이전 값을 기억하거나 저장하려면 어떻게 해야 하나요?

Author: Siluvia Last Modified: 2025-08-06

일반적으로 새 내용으로 셀을 업데이트하면 이전 값은 Excel에서 작업을 실행 취소하지 않는 한 덮어쓰여집니다. 그러나 이전 값을 업데이트된 값과 비교하기 위해 유지하고 싶다면, 이전 셀 값을 다른 셀이나 셀 의견에 저장하는 것이 좋은 선택이 될 것입니다. 이 문서의 방법은 이를 달성하는 데 도움이 될 것입니다.

Excel에서 VBA 코드로 이전 셀 값 저장하기


Excel에서 VBA 코드로 이전 셀 값 저장하기

아래 스크린샷에 표시된 것처럼 표가 있다고 가정해 보겠습니다. C 열의 어떤 셀이든 변경되면, 해당 이전 값을 G 열의 해당 셀에 자동으로 저장하거나 의견으로 저장하고 싶을 수 있습니다. 다음 단계를 따라 이를 수행하세요.

A screenshot of an Excel table showing the target column for saving previous cell values

1. 업데이트 시 값을 저장하려는 워크시트에서 시트 탭을 마우스 오른쪽 버튼으로 클릭하고 마우스 오른쪽 버튼 메뉴에서 "코드 보기"를 선택합니다. 스크린샷 참조:

A screenshot showing the View Code option in Excel's sheet tab right-click menu

2. 열리는 "Microsoft Visual Basic for Applications" 창에서 아래 VBA 코드를 코드 창에 복사합니다.

다음 VBA 코드는 지정된 열의 이전 셀 값을 다른 열에 저장하는 데 도움이 됩니다.

VBA 코드: 이전 셀 값을 다른 열의 셀에 저장하기

Dim xRg As Range
Dim xChangeRg As Range
Dim xDependRg As Range
Dim xDic As New Dictionary
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim I As Long
    Dim xCell As Range
    Dim xDCell As Range
    Dim xHeader As String
    Dim xCommText As String
    On Error Resume Next
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    xHeader = "Previous value :"
    x = xDic.Keys
    For I = 0 To UBound(xDic.Keys)
        Set xCell = Range(xDic.Keys(I))
        Set xDCell = Cells(xCell.Row, 7)
        xDCell.Value = ""
        xDCell.Value = xDic.Items(I)
    Next
    Application.EnableEvents = True
    Application.ScreenUpdating = True
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim I, J As Long
    Dim xRgArea As Range
    On Error GoTo Label1
    If Target.Count > 1 Then Exit Sub
    Application.EnableEvents = False
    Set xDependRg = Target.Dependents
    If xDependRg Is Nothing Then GoTo Label1
    If Not xDependRg Is Nothing Then
        Set xDependRg = Intersect(xDependRg, Range("C:C"))
    End If
Label1:
    Set xRg = Intersect(Target, Range("C:C"))
    If (Not xRg Is Nothing) And (Not xDependRg Is Nothing) Then
        Set xChangeRg = Union(xRg, xDependRg)
    ElseIf (xRg Is Nothing) And (Not xDependRg Is Nothing) Then
        Set xChangeRg = xDependRg
    ElseIf (Not xRg Is Nothing) And (xDependRg Is Nothing) Then
        Set xChangeRg = xRg
    Else
        Application.EnableEvents = True
        Exit Sub
    End If
    xDic.RemoveAll
    For I = 1 To xChangeRg.Areas.Count
        Set xRgArea = xChangeRg.Areas(I)
        For J = 1 To xRgArea.Count
            xDic.Add xRgArea(J).Address, xRgArea(J).Formula
        Next
    Next
    Set xChangeRg = Nothing
    Set xRg = Nothing
    Set xDependRg = Nothing
    Application.EnableEvents = True
End Sub

이전 셀 값을 의견에 저장하려면 아래 VBA 코드를 적용하세요.

VBA 코드: 이전 셀 값을 의견에 저장하기

Dim xRg As Range
Dim xChangeRg As Range
Dim xDependRg As Range
Dim xDic As New Dictionary
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim I As Long
    Dim xCell As Range
    Dim xHeader As String
    Dim xCommText As String
    On Error Resume Next
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    xHeader = "Previous value :"
    For I = 0 To UBound(xDic.Keys)
        Set xCell = Range(xDic.Keys(I))
        If Not xCell.Comment Is Nothing Then xCell.Comment.Delete
        With xCell
            .AddComment
            .Comment.Visible = False
            .Comment.Text xHeader & vbCrLf & xDic.Items(I)
        End With
    Next
    Application.EnableEvents = True
    Application.ScreenUpdating = True
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim I, J As Long
    Dim xRgArea As Range
    On Error GoTo Label1
    If Target.Count > 1 Then Exit Sub
    Application.EnableEvents = False
    Set xDependRg = Target.Dependents
    If xDependRg Is Nothing Then GoTo Label1
    If Not xDependRg Is Nothing Then
        Set xDependRg = Intersect(xDependRg, Range("C:C"))
    End If
Label1:
    Set xRg = Intersect(Target, Range("C:C"))
    If (Not xRg Is Nothing) And (Not xDependRg Is Nothing) Then
        Set xChangeRg = Union(xRg, xDependRg)
    ElseIf (xRg Is Nothing) And (Not xDependRg Is Nothing) Then
        Set xChangeRg = xDependRg
    ElseIf (Not xRg Is Nothing) And (xDependRg Is Nothing) Then
        Set xChangeRg = xRg
    Else
        Application.EnableEvents = True
        Exit Sub
    End If
    xDic.RemoveAll
    For I = 1 To xChangeRg.Areas.Count
        Set xRgArea = xChangeRg.Areas(I)
        For J = 1 To xRgArea.Count
            xDic.Add xRgArea(J).Address, xRgArea(J).Text
        Next
    Next
    Set xChangeRg = Nothing
    Set xRg = Nothing
    Set xDependRg = Nothing
    Application.EnableEvents = True
End Sub

참고: 코드에서 숫자 7은 이전 셀 값을 저장할 G 열을 나타내며, C:C는 변경할 열입니다. 필요에 따라 이를 변경하세요.

3. "도구" > "참조"를 클릭하여 "참조 - VBAProject" 대화 상자를 열고 "Microsoft Scripting Runtime" 상자를 체크한 후 "확인" 버튼을 클릭합니다. 스크린샷 참조:

A screenshot of the References dialog box with Microsoft Scripting Runtime selected

4. "Alt" + "Q" 키를 눌러 "Microsoft Visual Basic for Applications" 창을 닫습니다.

이제부터 C 열의 셀 값이 업데이트되면 이전 값은 G 열의 해당 셀에 또는 의견으로 저장됩니다. 아래 스크린샷을 참조하세요.

이전 셀 값을 다른 셀에 저장하기:

A screenshot showing previous cell values saved in another column in Excel

이전 셀 값을 의견에 저장하기:

A screenshot showing previous cell values saved as comments in Excel


최고의 오피스 생산성 도구

🤖 Kutools AI Aide: 지능형 실행을 기반으로 데이터 분석 혁신 지능형 실행   |  코드 생성  |  사용자 정의 수식 생성  |  데이터 분석 및 차트 생성  |  Kutools Functions 호출
인기 기능: 중복 찾기, 강조 또는 중복 표시  |  빈 행 삭제  |  데이터 손실 없이 열 또는 셀 병합  |  반올림...
슈퍼 LOOKUP: 다중 조건 VLookup    다중 값 VLookup  |   다중 시트 조회   |   퍼지 매치 ....
고급 드롭다운 목록: 드롭다운 목록 신속 생성  |  의존형 드롭다운 목록  |  다중 선택 드롭다운 목록....
열 매니저: 지정 개수 열 추가  |  열 이동  |  숨겨진 열 표시 상태 전환 |  범위 및 열 비교 ...
주요 기능: 그리드 포커스  |  디자인 보기  |  향상된 수식 표시줄   통합 문서 & 시트 관리   |  자동 텍스트 라이브러리   |  날짜 선택기   |  데이터 병합   |  셀 암호화/해독   목록별 이메일 보내기  |  슈퍼 필터  |  특수 필터 (굵게/이탤릭/취소선 필터...)...
Top15 도구 세트12개 텍스트 도구(텍스트 추가, 특정 문자 삭제, ...)  |  50+ 차트 유형(간트 차트, ...)  |  40+ 실용 수식(생일을 기반으로 나이 계산, ...)  |  19개 삽입 도구(QR 코드 삽입, 경로에서 그림 삽입, ...)  |  12개 변환 도구(단어로 변환하기, 통화 변환, ...)  |  7개 병합 & 분할 도구(고급 행 병합, 셀 분할, ...)  |  ... 그리고 그 외
Kutools를 원하는 언어로 사용하세요 – 영어, 스페인어, 독일어, 프랑스어, 중국어 등40가지 이상의 언어를 지원합니다!

Kutools for Excel로 Excel 실력을 한 단계 업그레이드하고, 그 어떤 때보다 뛰어난 효율성을 경험하세요. Kutools for Excel은300개 이상의 고급 기능을 제공하여 생산성을 높이고 저장 시간을 줄여줍니다. 가장 필요한 기능을 지금 바로 확인하세요...


Office Tab이 오피스에 탭 인터페이스를 제공하여 작업을 훨씬 쉽게 만듭니다

  • Word, Excel, PowerPoint에서 탭 기반 편집과 읽기를 활성화합니다.
  • 여러 문서를 새 창이 아닌 동일한 창의 새 탭에서 열고 생성하세요.
  • 생산성이50% 향상되며, 매일 수백 번의 마우스 클릭을 줄일 수 있습니다!