KutoolsforOffice — Un'unica soluzione, cinque potenti strumenti.Ottenere di più con meno sforzo.

Come si può ricordare o salvare il valore precedente di una cella modificata in Excel?

AutoreSiluvia Data di modifica

Quando modifichi una cella in Excel, il valore precedente viene sovrascritto all’istante e non è più visibile, a meno che tu non annulli l’operazione. Se devi conservare quel valore — per confrontarlo, verificarlo o ripristinarlo — puoi acquisirlo automaticamente con una breve routine VBA che lo registra in una colonna di appoggio prima di ogni modifica, oppure puoi tracciare le modifiche tramite gli strumenti di Microsoft 365 («Mostra modifiche» e «Cronologia versioni») quando il file è salvato su OneDrive o SharePoint. Questa guida ti illustra entrambi gli approcci, così da poter scegliere quello più adatto al tuo flusso di lavoro e alle tue esigenze di governance.


Salva il valore precedente della cella con codice VBA in Excel

Immagina di avere una tabella come quella mostrata nello screenshot seguente. Ogni volta che modifichi una cella nella colonna C, potresti voler salvare automaticamente il suo valore precedente nella cella corrispondente della colonna G oppure aggiungerlo come commento per future consultazioni e revisioni. Questo approccio è particolarmente utile quando desideri tenere traccia in modo continuativo dei cambiamenti o fare riferimento ai valori precedenti durante l’inserimento dati o i controlli di qualità.

Uno screenshot di una tabella Excel che mostra la colonna di destinazione per il salvataggio dei valori precedenti delle celle

Scenario tipico: Per fogli di lavoro in cui si esaminano o riconciliano frequentemente le modifiche, come inventari, registri o tracciamenti finanziari, mantenere visibili i valori precedenti può risparmiare tempo e ridurre al minimo la perdita accidentale di dati.

Per iniziare, apri il foglio di lavoro in cui vuoi registrare i valori precedenti. Poi, segui questi semplici passaggi:

1. Fai clic con il pulsante destro del mouse sulla scheda del foglio e seleziona «Visualizza codice» dal menu contestuale: si aprirà l'editor di Visual Basic for Applications (VBA). Vedi lo screenshot:

Uno screenshot che mostra l'opzione Visualizza codice nel menu contestuale della scheda del foglio di Excel

2. Nella finestra «Microsoft Visual Basic for Applications», incolla il seguente codice VBA nella finestra del codice: questa macro salverà automaticamente il valore precedente delle celle della colonna di destinazione in un’altra colonna.

Prima di eseguire questo script, assicurati di aggiornare i riferimenti alle colonne di destinazione nel codice. Negli esempi forniti, «C:C» indica la colonna monitorata per le modifiche, mentre il numero «7» corrisponde alla colonna G, dove vengono archiviati i valori precedenti. Personalizza questi riferimenti in base al tuo layout.

Codice VBA: Salva il valore precedente della cella in un'altra cella della colonna

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

Per situazioni in cui è preferibile archiviare il valore precedente come Commento — utile per una visualizzazione rapida e annotazioni — il seguente codice VBA lo fa automaticamente ogni volta che una cella della colonna di destinazione viene modificata:

Codice VBA: Salva il valore precedente della cella nel commento

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

Note sui parametri:

  • Il numero 7 in Cells(xCell.Row,7) si riferisce alla colonna G. Modifica questo valore se vuoi salvare il valore precedente in un’altra colonna.
  • Range("C:C")definisce la colonna da monitorare per le modifiche. Modificala in base alle tue esigenze, ad esempio in «D:D» per la colonna D.

3. Per abilitare il supporto per i dizionari nello script, vai su «Strumenti» > «Riferimenti...» nell’editor VBA. Nella finestra di dialogo «Riferimenti – VBAProject» che appare, seleziona «Microsoft Scripting Runtime» e fai clic su «OK», come mostrato:

Uno screenshot della finestra di dialogo Riferimenti con Microsoft Scripting Runtime selezionato

4. Premi «Alt» + «Q» per uscire dall'editor VBA e tornare al foglio di lavoro.

Da questo momento in poi, ogni volta che un valore nella colonna C viene modificato, Excel copierà automaticamente il suo valore precedente nella colonna G o lo aggiungerà al commento della cella, consentendoti di tracciare e convalidare comodamente le modifiche e garantendo l’accessibilità dei dati storici per revisioni, controlli o correzioni di errori.

Esempio di output per il salvataggio dei valori precedenti delle celle in altre celle:

Uno screenshot che mostra i valori precedenti delle celle salvati in un'altra colonna in Excel

Esempio di output per il salvataggio dei valori precedenti delle celle nei commenti:

Uno screenshot che mostra i valori precedenti delle celle salvati come commenti in Excel

Suggerimenti e risoluzione problemi:

  • Se le macro VBA non funzionano come previsto, verifica le impostazioni di sicurezza delle macro in «File» > «Opzioni» > «Centro protezione» > «Impostazioni macro» e seleziona l’opzione «Abilita tutte le macro».
  • Verifica i riferimenti alle colonne se i valori non vengono registrati nella posizione prevista.
  • Se gli errori persistono, assicurati che la libreria «Microsoft Scripting Runtime» sia abilitata correttamente, come indicato in precedenza.

Microsoft 365 — Esamina i valori precedenti e aggiornati delle celle con Mostra modifichee Cronologia versioni

In Microsoft 365, puoi tenere traccia di ogni modifica (chi ha modificato cosa e quando, inclusi i valori precedenti e successivi) senza dover ricorrere alla funzione legacy «Traccia modifiche». Usa Mostra modifiche per visualizzare i dettagli a livello di cella e Cronologia versioni per accedere a istantanee complete del file e ripristinarle all’occorrenza.

Requisiti

  • Cartella di lavoro salvata su OneDrive o SharePoint.
  • Accesso effettuato con un account Microsoft 365; salvataggio automatico impostato su Attivato.
  • Formato moderno ().xlsx): non utilizza la funzione legacy Cartella di lavoro condivisa (legacy).

Mostra modifiche (controllo a livello di cella)

1. Apri la cartella di lavoro salvata nel cloud e vai su Revisione ▸ Mostra modifiche per aprire il riquadro.
2. (Opzionale) Seleziona prima un foglio o un intervallo per limitare i risultati.
3. Sfoglia le voci per visualizzare autore, data/ora e i valori precedente → nuovo; fai clic su una voce per passare direttamente alla cella.

Cronologia versioni (confronta e ripristina)

1. Vai su File ▸ Informazioni ▸ Cronologia versioni.
2. Apri una versione precedente per confrontarla; copia le celle desiderate o fai clic su Ripristina per ripristinare l'intero file.

  • «Mostra modifiche» è disattivato?Salva su OneDrive/SharePoint, attiva il salvataggio automatico e converti dal formato Modalità compatibilità ()File ▸ Informazioni ▸ Converti). Inoltre, assicurati che la funzione Cartella di lavoro condivisa (legacy) sia disattivata. Prova Excel per il Web se l'applicazione desktop dovesse risultare ancora non disponibile.
  • Sicurezza/blocchi: La protezione della cartella di lavoro o del foglio, la crittografia o l’IRM potrebbero disabilitare «Mostra modifiche».
  • File locali: La cronologia completa non viene conservata per i file esclusivamente locali; per ottenere i risultati migliori, utilizza la Cronologia versioni tramite il cloud.
  • Hai bisogno che i valori vengano scritti direttamente nelle celle? «Mostra modifiche» e «Cronologia versioni» sono strumenti di controllo; per registrare il «valore precedente» in una colonna di appoggio a ogni modifica, usa un piccolo logger VBA basato sull'evento Worksheet_Change.

Vantaggi

  • Controllo automatico di chi ha apportato modifiche e quando, con visualizzazione dei valori precedenti e successivi — nessuna macro richiesta.
  • Disponibile su più piattaforme (Windows, Mac, Web) quando il file è salvato in OneDrive o SharePoint.

Svantaggi

  • Richiede l’archiviazione cloud e il salvataggio automatico; fornisce dettagli limitati per alcune modifiche temporanee.
  • Non inserisce direttamente i valori precedenti nelle celle; utilizza VBA se questa funzionalità è richiesta dalla logica aziendale.

Migliori Strumenti per la Produttività in Office

🤖KUTOOLS AI Assistente: Rivoluziona Analisi dei dati in base a:Esecuzione Intelligente   |  Genera Codice|  Crea formule personalizzate  |  Analizza Dati e Genera Grafici|  Richiama Funzioni avanzate
Funzionalità Popolari:Trova, Evidenzia o Contrassegna Duplicati   |  Elimina righe vuote   |  Combinare Colonne o Celle senza Perdere Dati   |   Arrotondamento senza usare la formula...
Super RICERCA.VERT:VLookup con Criteri Multipli  |  VLookup con Valori Multipli  |   VLookup tra Fogli Multipli   |   Corrispondenza approssimativa....
Elenco a discesa avanzato:Crea Rapidamente un Elenco a Discesa   |  Elenco a Discesa Dipendente   |  Elenco a Discesa con Selezione Multipla....
Gestione Colonne:Aggiungi un Numero Specifico di Colonne|Sposta Colonne|Attiva/Disattiva lo Stato di Visibilità delle Colonne Nascoste|Confronta Intervalli e Colonne...
Funzionalità in Evidenza:Attenzione della griglia   |  Visualizzazione Design   |Barra delle formule avanzata   | Gestione Cartelle di Lavoro e Fogli   |  Biblioteca di risorse(Testo Automatico)|  Selettore di Date   |  Unisci fogli di lavoro  |  Crittografa/Decrittografa celle   | Invia Email da Lista   |  Super Filtri   |   Filtro speciale(Filtra celle con testo in grassetto/corsivo/barrato...) ...
Principali Set di Strumenti 15:12 Strumentiper il Testo(Aggiungi testo,Elimina Caratteri Specifici, ...)|   50+Tipidi Grafico(Diagramma di Gantt, ...)|   40+ Formule Pratiche(Calcola l'età in base alla data di nascita, ...)|   19 Strumentidi Inserimento(Inserisci Codice QR,Inserisci Immagine dal Percorso, ...)|   12 Strumentidi Conversione(Converti in parole,Conversione del tasso di cambio, ...)|   7 StrumentiUnisci e Dividi(Unione avanzata righe,Dividi celle, ...)|... e molto altro
Usa Kutools nella tua lingua preferita – supporta inglese, spagnolo, tedesco, francese, cinese e 40+ altre!

Potenzia le tue competenze in Excel con Kutools per Excel e sperimenta un’efficienza mai vista prima.Kutools per Excel offre oltre 300 funzionalità avanzate per aumentare la produttività e Risparmia tempo.Clicca qui per ottenere la funzionalità di cui hai più bisogno...


Office Tab Porta l'interfaccia a schede in Office e rende il tuo lavoro molto più semplice

  • Abilita la modifica e la lettura a schede in Word, Excel, PowerPoint, Publisher, Access, Visio e Project.
  • Apri e crea più documenti in nuove schede all’interno della stessa finestra, invece che in finestre separate.
  • Aumenta la tua produttività del 50 % e risparmia centinaia di clic del mouse ogni giorno!

Tutti i componenti aggiuntivi di Kutools in un unico programma di installazione.

Kutools for Office è la suite che include componenti aggiuntivi per Excel, Word, Outlook e PowerPoint, oltre a Office Tab Pro: la soluzione ideale per i team che lavorano su diverse app di Office.

ExcelWordOutlookTabsPowerPoint
  • Suite completa— componenti aggiuntivi per Excel, Word, Outlook e PowerPoint + Office Tab Pro
  • Un unico programma di installazione, una sola licenza— configurazione in pochi minuti (pronto per MSI)
  • Funziona meglio insieme— produttività ottimizzata tra le app di Office
  • Prova gratuita di 30 giorni con tutte le funzionalità— nessuna registrazione, nessuna carta di credito
  • Miglior rapporto qualità-prezzo— risparmia rispetto all’acquisto dei singoli componenti aggiuntivi