Zum Hauptinhalt springen

Wie kann man den vorherigen Wert einer geänderten Zelle in Excel speichern oder sich merken?

Author: Siluvia Last Modified: 2025-08-06

Normalerweise wird der vorherige Wert beim Aktualisieren einer Zelle mit neuem Inhalt überschrieben, es sei denn, Sie machen die Operation in Excel rückgängig. Wenn Sie jedoch den vorherigen Wert zum Vergleich mit dem aktualisierten Wert behalten möchten, ist es eine gute Wahl, den vorherigen Zellenwert in eine andere Zelle oder in einen Zellenkommentar zu speichern. Die Methode in diesem Artikel wird Ihnen helfen, dies zu erreichen.

Vorherigen Zellenwert mit VBA-Code in Excel speichern


Vorherigen Zellenwert mit VBA-Code in Excel speichern

Angenommen, Sie haben eine Tabelle wie im folgenden Screenshot gezeigt. Wenn sich eine Zelle in Spalte C ändert, möchten Sie möglicherweise ihren vorherigen Wert automatisch in die entsprechende Zelle der Spalte G oder als Kommentar speichern. Bitte gehen Sie wie folgt vor, um dies zu erreichen.

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

1. Klicken Sie in dem Arbeitsblatt, das die Werte enthält, die Sie beim Aktualisieren speichern möchten, mit der rechten Maustaste auf die Registerkarte des Blatts und wählen Sie "Ansicht Code" aus dem Kontextmenü. Siehe Screenshot:

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

2. Kopieren Sie den folgenden VBA-Code im sich öffnenden Fenster „Microsoft Visual Basic for Applications“ in das Codefenster.

Der folgende VBA-Code hilft Ihnen, den vorherigen Zellenwert einer bestimmten Spalte in eine andere Spalte zu speichern.

VBA-Code: Vorherigen Zellenwert in eine andere Spalte speichern

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

Um den vorherigen Zellenwert in einem Kommentar zu speichern, wenden Sie bitte den folgenden VBA-Code an.

VBA-Code: Vorherigen Zellenwert im Kommentar speichern

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

Hinweis: In dem Code gibt die Zahl 7 die Spalte G an, in der Sie den vorherigen Zellenwert speichern werden, und C:C ist die Spalte, in der Sie die Änderung vornehmen werden. Bitte passen Sie diese Angaben nach Bedarf an.

3. Klicken Sie auf "Extras" > "Verweise", um das Dialogfeld "Referenzen – VBAProject" zu öffnen, aktivieren Sie das Kontrollkästchen "Microsoft Scripting Runtime" und klicken Sie abschließend auf die Schaltfläche "OK". Siehe Screenshot:

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

4. Drücken Sie die Tasten "Alt" + "Q", um das Fenster "Microsoft Visual Basic for Applications" zu schließen.

Ab jetzt wird, wenn ein Zellenwert in Spalte C aktualisiert wird, der vorherige Wert in der entsprechenden Zelle in Spalte G oder als Kommentar gespeichert, wie in den folgenden Screenshots dargestellt.

Vorherige Zellenwerte in anderen Zellen speichern:

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

Vorherige Zellenwerte in Kommentaren speichern:

A screenshot showing previous cell values saved as comments in Excel


Die besten Office-Produktivitätstools

🤖 Kutools AI Aide: Revolutionieren Sie die Datenanalyse basierend auf: Intelligente Ausführung |  Code generieren  |  Benutzerdefinierte Formeln erstellen |  Daten analysieren und Diagramme generieren  |  Erweiterte Funktionen aufrufen
Beliebte Funktionen: Doppelte suchen, hervorheben oder markieren | Leere Zeilen löschen | Spalten oder Zellen ohne Datenverlust zusammenführen | Runden
Erweiterte SVERWEIS: SVERWEIS mit mehreren Kriterien | SVERWEIS für mehrere Werte | Mehrblatt-SVERWEIS | Fuzzy Match
Erweiterte Dropdown-Liste: Dropdown-Liste schnell erstellen | Abhängige Dropdown-Liste | Mehrfachauswahl-Dropdown-Liste
Spalten-Manager: Eine bestimmte Anzahl an Spalten hinzufügen | Spalten verschieben | Sichtbarkeit von ausgeblendeten Spalten umschalten | Bereiche & Spalten vergleichen
Hervorgehobene Funktionen: Gitterfokus | Entwurfsansicht | Erweiterte Formelleiste | Arbeitsmappen- & Blattmanager | AutoText-Bibliothek | Datumsauswahl | Daten zusammenführen | Zellen verschlüsseln/entschlüsseln | E-Mail senden nach Liste | Super Filter | Spezialfilter (Filtern nach Fett/Kursiv/Durchgestrichen...)…
Top15 Toolsets:12 Text-Tools (Text hinzufügen, Bestimmte Zeichen löschen, ...) | 50+ Diagramm typen (Gantt-Diagramm, ...) | 40+ praktische Formeln (Alter basierend auf dem Geburtsdatum berechnen, ...) | 19 Einfüge-Tools (QR-Code einfügen, Bild aus Pfad einfügen, ...) | 12 Konvertierungs-Tools (In Wörter umwandeln, Währungsumrechnung, ...) | 7 Konsolidieren & Aufteilen-Tools (Erweiterte Zeilen zusammenführen, Zellen aufteilen, ...) | ... und mehr
Nutzen Sie Kutools in Ihrer bevorzugten Sprache – unterstützt Englisch, Spanisch, Deutsch, Französisch, Chinesisch und über40 weitere Sprachen!

Steigern Sie Ihre Excel-Kompetenz mit Kutools für Excel und erleben Sie Effizienz wie nie zuvor. Kutools für Excel bietet über300 erweiterte Funktionen, um Ihre Produktivität zu steigern und Zeit zu sparen.Klicken Sie hier, um die Funktion zu erhalten, die Sie am meisten benötigen...


Office Tab bringt die Reiter-Oberfläche in Office und macht Ihre Arbeit so viel einfacher

  • Aktivieren Sie die Bearbeitung und das Lesen in Reitern in Word, Excel, PowerPoint, Publisher, Access, Visio und Project.
  • Öffnen und erstellen Sie mehrere Dokumente in neuen Reitern desselben Fensters, anstatt in neuen Fenstern.
  • Steigert Ihre Produktivität um50 % und reduziert täglich Hunderte von Mausklicks!