KutoolsforOffice — Una solución, cinco potentes herramientas.Lograr más con menos esfuerzo.Venta de marzo: 20 % de descuento

¿Cómo guardar o recordar el valor anterior de una celda que se ha modificado en Excel?

AutorSiluvia Fecha de modificación

Al editar una celda en Excel, el valor anterior se sobrescribe de inmediato y deja de ser visible, salvo que deshaga la acción. Si necesita conservar ese valor —por ejemplo, para compararlo, auditarlo o revertirlo—, puede capturarlo automáticamente mediante una breve rutina de VBA que lo registre en una columna auxiliar antes de cada modificación. Otra opción es revisar los cambios con las herramientas de Microsoft 365 (como *Mostrar cambios* e *Historial de versiones*) cuando el archivo esté guardado en OneDrive o SharePoint. Este tutorial explica ambos enfoques para que elija el que mejor se adapte a su flujo de trabajo y a sus necesidades de gobernanza.


Guardar el valor anterior de una celda con código VBA en Excel

Suponga que tiene una tabla como la que se muestra en la siguiente captura de pantalla. Cada vez que edite cualquier celda de la columna C, es posible que desee capturar su valor anterior en la celda correspondiente de la columna G o añadir automáticamente ese valor antiguo como comentario, para facilitar su consulta y revisión futuras. Este enfoque resulta especialmente útil cuando necesita mantener un registro continuo o acceder a valores anteriores durante la introducción constante de datos o las comprobaciones de calidad.

Una captura de pantalla de una tabla de Excel que muestra la columna de destino para guardar los valores anteriores de las celdas

Escenario clave: En hojas de cálculo donde revise o concilie cambios con frecuencia, como inventarios, registros o seguimiento financiero, mantener visibles los valores anteriores puede ahorrar tiempo y minimizar la pérdida accidental de datos.

Para empezar, abra la hoja de cálculo en la que quiera registrar los valores anteriores. A continuación, siga estos pasos:

1. Haga clic con el botón derecho en la pestaña de la hoja y seleccione «Ver código» en el menú contextual. Se abrirá el Editor de Visual Basic para Aplicaciones (VBA). Vea la captura de pantalla:

Una captura de pantalla que muestra la opción Ver código en el menú contextual de la pestaña de hoja de Excel

2. En la ventana «Microsoft Visual Basic para Aplicaciones», pegue el siguiente código VBA en la ventana de código. Esta macro guardará automáticamente el valor anterior de las celdas de la columna objetivo en otra columna.

Antes de ejecutar este script, asegúrese de ajustar las referencias de las columnas objetivo en el código. En estos ejemplos, «C:C» hace referencia a la columna cuyos cambios se supervisan, y el número «7» corresponde a la columna G, donde se almacenan los valores anteriores. Puede personalizar estas referencias según su diseño.

Código VBA: Guardar el valor anterior de una celda en otra celda de columna

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

En situaciones en las que prefiera almacenar el valor anterior como Comentario —útil para visualización rápida y anotaciones—, el siguiente código VBA lo realiza automáticamente cada vez que se modifica una celda de la columna objetivo:

Código VBA: Guardar el valor anterior de una celda en el comentario

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

Notas sobre parámetros:

  • El número 7 en Cells(xCell.Row,7) hace referencia a la columna G. Cámbielo si desea guardar el valor anterior en otra columna.
  • Range("C:C")define la columna que se supervisará para detectar cambios. Ajústela según sea necesario; por ejemplo, use «D:D» para la columna D.

3. Para habilitar la compatibilidad con diccionarios en el script, vaya a «Herramientas» > «Referencias...» en el editor de VBA. En el cuadro de diálogo «Referencias – VBAProject» que aparece, active la casilla «Microsoft Scripting Runtime» y haga clic en «Aceptar», tal como se muestra:

Una captura de pantalla del cuadro de diálogo Referencias con Microsoft Scripting Runtime seleccionado

4. Pulse «Alt» + «Q» para cerrar el editor de VBA y regresar a su hoja de cálculo.

A partir de ahora, cada vez que se modifique un valor en la columna C, Excel copiará automáticamente su valor anterior en la columna G o lo añadirá al comentario de la celda, permitiéndole realizar un seguimiento y validar los cambios de forma sencilla y garantizando que los datos históricos estén siempre accesibles para revisión, auditoría o corrección de errores.

Ejemplo de resultado al guardar los valores anteriores de las celdas en otras celdas:

Una captura de pantalla que muestra los valores anteriores de las celdas guardados en otra columna en Excel

Ejemplo de resultado al guardar los valores anteriores de las celdas en comentarios:

Una captura de pantalla que muestra los valores anteriores de las celdas guardados como comentarios en Excel

Consejos y solución de problemas:

  • Si las macros de VBA no funcionan como se espera, compruebe la configuración de seguridad de macros en «Archivo» > «Opciones» > «Centro de confianza» > «Configuración de macros» y seleccione «Habilitar todas las macros».
  • Revise sus referencias de columnas si los valores no se están registrando en la ubicación prevista.
  • Si los errores persisten, asegúrese de que la biblioteca «Microsoft Scripting Runtime» esté correctamente habilitada tal como se indicó anteriormente.

Herramientas de Microsoft 365 — Revise los valores anteriores y actualizados de las celdas con Mostrar cambiosy Historial de versiones

En Microsoft 365, puede auditar ediciones (quién cambió qué y cuándo, incluidos los valores anteriores y posteriores) sin necesidad de usar el modo heredado Control de cambios. Utilice Mostrar cambios para obtener detalles a nivel de celda y Historial de versiones para instantáneas completas del archivo y restauraciones.

Requisitos

  • Libro guardado en OneDrive o SharePoint.
  • Sesión iniciada con una cuenta de Microsoft 365; AutoGuardado activado, Activado.
  • Formato moderno ().xlsx); no utiliza el modo heredado Libro compartido (heredado).

Mostrar cambios (auditoría a nivel de celda)

1. Abra el libro guardado en la nube y vaya a Revisar ▸ Mostrar cambios para abrir el panel.
2. (Opcional) Seleccione primero una hoja o un rango para delimitar los resultados.
3. Revise las entradas para ver el editor, la marca de tiempo y los valores antiguo → nuevo; haga clic en una entrada para ir directamente a la celda.

Historial de versiones (comparar y restaurar)

1. Vaya a Archivo ▸ Información ▸ Historial de versiones.
2. Abra una versión anterior para compararla; copie celdas o haga clic en Restaurar para revertir todo el archivo.

  • ¿Está atenuado Mostrar cambios?Guarde en OneDrive o SharePoint, active AutoGuardado, convierta desde el modo de compatibilidad ()Archivo ▸ Información ▸ Convertir) y asegúrese de que Libro compartido (heredado) esté desactivado. Si la opción sigue sin estar disponible en la versión de escritorio, pruebe Excel para la web.
  • Seguridad/bloqueos: La protección del libro o de la hoja, el cifrado o la IRM pueden desactivar la opción Mostrar cambios.
  • Archivos locales: No se conserva un historial completo para archivos puramente locales; utilice el Historial de versiones en la nube para obtener los mejores resultados.
  • ¿Necesita que los valores se escriban directamente en las celdas?Mostrar cambios e Historial de versiones son herramientas de auditoría; para registrar el «valor anterior» en una columna auxiliar cada vez que se edite una celda, utilice un pequeño Worksheet_Changeregistrador en VBA.

Ventajas

  • Auditoría automática de quién y cuándo, con valores anteriores y posteriores; sin necesidad de macros.
  • Multiplataforma (Windows, Mac y web) al almacenarse en OneDrive o SharePoint.

Desventajas

  • Requiere almacenamiento en la nube y AutoGuardado; el detalle está limitado para algunas ediciones transitorias.
  • No rellenes las celdas con los valores anteriores; utiliza VBA si es necesario para la lógica empresarial.

Las mejores herramientas de productividad para Office

🤖KUTOOLS AI Asistente: Revolucione Análisis de datos basándose en:Ejecución Inteligente   |  Generar código|  Crear fórmulas personalizadas  |  Analizar datos y generar gráficos|  Invocar Funciones mejoradas
Funciones populares:Buscar, resaltar o Marcar duplicados   |  Eliminar filas en blanco   |  Combinar Columnas o celdas sin perder datos   |   Redondeo sin usar fórmulas...
Super BUSCARV:Búsqueda vertical (VLookup) con múltiples criterios  |  Búsqueda vertical (VLookup) con múltiples valores  |   Búsqueda vertical (VLookup) entre varias hojas   |   Coincidencia difusa....
Lista desplegable avanzada:Crear rápidamente una lista desplegable   |  Lista desplegable dependiente   |  Lista desplegable de selección múltiple....
Gestor de columnas:Añadir un número específico de columnas|Mover columnas|Alternar el estado de visibilidad de columnas ocultas|Comparar rangos y columnas...
Funciones destacadas:Cuadrícula de enfoque   |  Vista de diseño   |Barra de fórmulas mejorada   | Gestor de libros y hojas   |  Biblioteca de recursos(Texto automático)|  Selector de Fecha   |  Combinar Hojas de Cálculo  |  Cifrar/Descifrar celdas   | Enviar correos electrónicos desde una lista   |  Super Filtro   |   Filtro especial(Filtrar celdas con fuente en negrita/cursiva/tachado...) ...
Principales conjuntos de herramientas 15:12 Herramientasde texto(Agregar texto,Eliminar caracteres específicos, ...)|   50+Tiposde gráfico(Diagrama de Gantt, ...)|   40+ Fórmulas prácticas(Calcular la edad basada en la fecha de nacimiento, ...)|   19 Herramientasde inserción(Insertar Código QR,Insertar imagen desde ruta, ...)|   12 Herramientasde conversión(Convertir a palabras,Conversión de moneda, ...)|   7 Herramientasde combinación y división(Combinar filas avanzado,Dividir celdas, ...)|...y muchas más
Use Kutools en su idioma preferido: compatible con inglés, español, alemán, francés, chino y 40+ más idiomas.¡

Potencie sus habilidades en Excel con Kutools para Excel y experimente una eficiencia como nunca antes.Kutools para Excel ofrece más de 300 funciones avanzadas para aumentar su productividad y Ahorrar tiempo.Haga clic aquí para obtener la función que más necesita...


Office Tab aporta una interfaz con pestañas a Office y hace que su trabajo sea mucho más fácil

  • Active la edición y lectura con pestañas en Word, Excel, PowerPoint, Publisher, Access, Visio y Project.
  • Abra y cree varios documentos en nuevas pestañas dentro de la misma ventana, en lugar de hacerlo en ventanas separadas.
  • ¡Aumente su productividad en un 50 % y elimine cientos de clics del ratón cada día!

Todos los complementos de Kutools en un solo instalador.

Kutools for Office es la suite que incluye complementos para Excel, Word, Outlook y PowerPoint, además de Office Tab Pro, ideal para equipos que trabajan en distintas aplicaciones de Office.

ExcelWordOutlookTabsPowerPoint
  • Suite integral— complementos para Excel, Word, Outlook y PowerPoint + Office Tab Pro
  • Un instalador, una licencia— configuración en minutos (compatible con MSI)
  • Rendimiento mejorado en conjunto— productividad optimizada en todas las aplicaciones de Office
  • Prueba gratuita de 30 días con todas las funciones— sin registro ni tarjeta de crédito
  • La mejor relación calidad-precio— ahorre frente a la compra individual de complementos