Pulsar Actualizar todo dos veces en Excel (y cómo solucionarlo bien)

Si trabajas con tablas dinámicas basadas en tablas de datos que a su vez se alimentan de archivos externos (Excel, CSV, etc.), es muy probable que hayas observado este comportamiento tan frustrante:

  • Pulsas Actualizar todo, pero los datos no parecen actualizarse correctamente.
  • Pulsas Actualizar todo una segunda vez… y ahora sí, todo cuadra.

Este artículo explica:

  1. Cuál es el problema
  2. Por qué ocurre realmente
  3. Por qué pulsar dos veces puede “funcionar”
  4. Cuál es la solución correcta y profesional usando macros VBA
Seleccionando desde la ficha Datos la opción Actualizar todo en un cuadro de mando con varias tablas y gráficas dinámicas
Tablas dinámicas enlazadas a consultas o a tablas de datos, que no se actualizan tras pulsar Actualizar todo.

1 El problema: actualizaciones que no llegan a la tabla dinámica

El escenario típico es este:

  • Tienes conexiones externas a archivos Excel o CSV
  • Esas conexiones cargan datos en tablas de Excel (ListObjects)
  • Las tablas dinámicas se construyen sobre esas tablas
  • Pulsas Datos → Actualizar todo

Resultado:

  • Las tablas dinámicas no reflejan los datos nuevos
  • Solo lo hacen después de pulsar el botón por segunda vez

A primera vista parece un fallo, pero en realidad es un problema de orden de actualización.

La opción Actualizar todo de Excel no siempre actualiza todo, pese a lo que dice su ayuda emergente.
Actualizar todo a veces no actualiza todo, pese a lo que dice su descripción. Curiosa coincidencia.

2 El motivo real: Excel no respeta las dependencias lógicas

La cadena lógica de datos suele ser esta:

  1. Conexiones externas
  2. Tablas de datos
  3. Tablas dinámicas

Sin embargo, cuando pulsas Actualizar todo, Excel:

  • Trata conexiones, tablas y tablas dinámicas como objetos independientes
  • No garantiza el orden de actualización

Puede actualizar:

  • primero las tablas dinámicas
  • y después las tablas de datos

Esto significa que, en la primera pulsación:

  • La tabla dinámica se actualiza antes de que la tabla de datos tenga la información nueva
  • Por tanto, la tabla dinámica sigue mostrando datos antiguos

Excel no evalúa dependencias de actualización, solo dependencias de fórmulas.

3 La “solución” de pulsar dos veces: por qué funciona y cuándo es aceptable

Cuando pulsas Actualizar todo por segunda vez:

  • Las tablas de datos ya están actualizadas
  • Ahora sí, las tablas dinámicas leen los datos correctos Por eso, pulsar dos veces funciona.

¿Es aceptable esta solución? Depende del contexto:

Puede ser aceptable si:

  • El archivo lo usas solo tú
  • La actualización es manual y ocasional
  • No hay riesgo de error humano

No es aceptable si:

  • El archivo lo usan otras personas
  • Es un proceso crítico o repetitivo
  • Necesitas fiabilidad y trazabilidad
  • Automatizas procesos

En esos casos, pulsar dos veces es solo un parche, no una solución real.

4 La solución correcta: forzar el orden de actualización con VBA

La forma profesional de resolver el problema es forzar explícitamente el orden:

  1. Actualizar conexiones
  2. Actualizar tablas de datos
  3. Actualizar tablas dinámicas

Esto se consigue fácilmente con una macro VBA.

Macro recomendada

Sub ActualizarEnOrdenCorrecto()

    Dim ws As Worksheet
    Dim cn As WorkbookConnection
    Dim tbl As ListObject
    Dim pt As PivotTable

    Application.ScreenUpdating = False
    Application.EnableEvents = False

    ' 1. Actualizar conexiones
    For Each cn In ThisWorkbook.Connections
        cn.Refresh
    Next cn

    ' 2. Actualizar tablas de datos
    For Each ws In ThisWorkbook.Worksheets
        For Each tbl In ws.ListObjects
            tbl.Refresh
        Next tbl
    Next ws

    ' 3. Actualizar tablas dinámicas
    For Each ws In ThisWorkbook.Worksheets
        For Each pt In ws.PivotTables
            pt.RefreshTable
        Next pt
    Next ws

    Application.EnableEvents = True
    Application.ScreenUpdating = True

    MsgBox "Actualización completada en el orden correcto.", vbInformation

End Sub

Ventajas de esta macro frente a otras alternativas

Frente a Actualizar todo:

  • Respeta el orden lógico de los datos
  • Evita tener que pulsar dos veces
  • Es predecible y repetible
  • No depende del comportamiento interno de Excel

Frente a actualizar solo tablas dinámicas:

  • Garantiza que los datos base ya están actualizados
  • Evita resultados inconsistentes

Frente a soluciones manuales:

  • Permite automatización
  • Reduce errores humanos
  • Escala mejor en libros complejos
Una tabla dinámica sobre la que se va a activar desde su menú contextual la opción Actualizar todo
Actualizar manualmente todas las tablas dinámicas de tu cuadro de mando es una solución muy arriesgada.

Conclusión

El hecho de tener que pulsar Actualizar todo dos veces no es casualidad ni un bug extraño: es una consecuencia directa de que Excel no respeta las dependencias de actualización entre conexiones, tablas de datos y tablas dinámicas.

Pulsar dos veces funciona, pero es solo un atajo. La solución correcta es controlar el orden.

Una macro VBA bien planteada convierte un proceso frágil en uno robusto y profesional

Si trabajas con libros complejos, esta diferencia se nota —y mucho—.

Y para finalizar, una infografía que te lo resume todo, por si necesitas un buen recordatorio.