La actualización de la tabla dinámica de Excel rompe los anchos de columna: solución
🔍 WiseChecker

La actualización de la tabla dinámica de Excel rompe los anchos de columna: solución

Cuando actualizas una tabla dinámica en Excel, los anchos de columna a menudo vuelven a un tamaño predeterminado en lugar de mantener los anchos que configuraste cuidadosamente. Esto sucede porque el comportamiento de ajuste automático de Excel para los campos de tabla dinámica anula tus ajustes manuales de ancho de columna después de cada actualización. Este artículo explica por qué se restablecen los anchos y te ofrece cuatro métodos confiables para detener el redimensionamiento. Aprenderás a bloquear los anchos de columna usando las opciones de tabla dinámica, código VBA y trucos de formato.

Conclusiones clave: Evita que la actualización de la tabla dinámica redimensione las columnas

  • Opciones de tabla dinámica > Diseño y formato > Ajustar automáticamente el ancho de columna al actualizar: Desactiva esta casilla para evitar que Excel redimensione automáticamente las columnas después de una actualización.
  • Opciones de tabla dinámica > Diseño y formato > Conservar el formato de celda al actualizar: Activa esta casilla para mantener los anchos de columna manuales y el formato de celda después de una actualización.
  • Evento VBA Workbook_SheetPivotTableUpdate: Usa una macro para reaplicar automáticamente los anchos de columna guardados después de cada actualización de tabla dinámica.

ADVERTISEMENT

Por qué la actualización de la tabla dinámica restablece los anchos de columna

De forma predeterminada, Excel aplica un comportamiento de ajuste automático a las columnas de la tabla dinámica cada vez que actualizas los datos. El ajuste está controlado por la casilla Ajustar automáticamente el ancho de columna al actualizar dentro de las Opciones de tabla dinámica. Cuando esta casilla está activada, Excel recalcula el ancho óptimo para cada columna basándose en el texto o número más largo que se muestra actualmente. Si has ajustado manualmente una columna para que sea más ancha o más estrecha que el resultado del ajuste automático, la actualización sobrescribe tu ajuste.

Una segunda configuración, Conservar el formato de celda al actualizar, también afecta los anchos de columna. Cuando esta opción está desactivada, Excel descarta todo el formato manual, incluidos los anchos de columna, después de una actualización. Ambas opciones se encuentran en el mismo cuadro de diálogo y trabajan juntas para controlar si tu diseño sobrevive a una actualización de datos.

Pasos para desactivar el ajuste automático y conservar los anchos de columna

La solución más rápida es desactivar la opción de ajuste automático y activar la opción de conservar formato. Estos pasos funcionan en Excel 2016, Excel 2019, Excel 2021 y Microsoft 365.

  1. Haz clic derecho en cualquier celda dentro de la tabla dinámica
    Selecciona Opciones de tabla dinámica en el menú contextual. Se abre el cuadro de diálogo Opciones de tabla dinámica.
  2. Ve a la pestaña Diseño y formato
    Haz clic en la pestaña Diseño y formato en la parte superior del cuadro de diálogo.
  3. Desactiva Ajustar automáticamente el ancho de columna al actualizar
    En la sección Formato, desmarca la casilla etiquetada Ajustar automáticamente el ancho de columna al actualizar. Esto evita que Excel redimensione las columnas automáticamente después de una actualización.
  4. Activa Conservar el formato de celda al actualizar
    Marca la casilla etiquetada Conservar el formato de celda al actualizar. Esto le dice a Excel que mantenga tus anchos de columna manuales y otro formato de celda después de una actualización de datos.
  5. Haz clic en Aceptar y prueba una actualización
    Cierra el cuadro de diálogo haciendo clic en Aceptar. Haz clic derecho en la tabla dinámica y elige Actualizar. Los anchos de columna deberían permanecer sin cambios.

Qué hacer si los anchos aún cambian

Si los anchos de columna aún se restablecen después de aplicar los pasos anteriores, el problema probablemente se debe a un estilo de tabla dinámica que aplica anchos específicos de columna o a un formato condicional que desencadena un recálculo de diseño. Intenta borrar todas las reglas de formato condicional del rango de la tabla dinámica. También cambia a un estilo de tabla dinámica simple seleccionando Diseño de tabla dinámica > Estilos de tabla dinámica > Borrar.

ADVERTISEMENT

Usa una macro de VBA para bloquear los anchos de columna permanentemente

Para los usuarios que actualizan tablas dinámicas con frecuencia, la configuración manual anterior puede no ser suficiente si la opción de conservar formato falla debido a un libro dañado o a un entorno compartido. Una macro de VBA puede guardar los anchos de columna actuales y reaplicarlos después de cada actualización.

  1. Abre el editor de VBA
    Presiona Alt + F11 para abrir el editor de Visual Basic para Aplicaciones.
  2. Inserta un nuevo módulo
    En el Explorador de proyectos, haz clic derecho en VBAProject (NombreDeTuLibro) y selecciona Insertar > Módulo.
  3. Pega el código de la macro
    Copia y pega el siguiente código en el módulo:


    Private Sub Workbook_SheetPivotTableUpdate(ByVal Sh As Object, ByVal Target As PivotTable)
        Dim pt As PivotTable
        Dim ws As Worksheet
        Dim rng As Range
        Dim col As Range
        Dim colWidths() As Double
        Dim i As Long
        
        Set ws = Sh
        Set pt = Target
        Set rng = pt.TableRange1
        
        ReDim colWidths(1 To rng.Columns.Count)
        For i = 1 To rng.Columns.Count
            colWidths(i) = rng.Columns(i).ColumnWidth
        Next i
        
        Application.EnableEvents = False
        For i = 1 To rng.Columns.Count
            rng.Columns(i).ColumnWidth = colWidths(i)
        Next i
        Application.EnableEvents = True
    End Sub

  4. Guarda el libro como un archivo habilitado para macros
    Presiona Ctrl + S. En el cuadro de diálogo Guardar como, elige Libro de Excel habilitado para macros (xlsm) en el menú desplegable de tipo de archivo.
  5. Prueba la macro
    Cierra el editor de VBA. Actualiza cualquier tabla dinámica en el libro. La macro guarda los anchos antes de la actualización y los reaplica después de que se complete la actualización.

Método alternativo: copiar y pegar valores con anchos

Si no deseas usar VBA y la configuración anterior aún falla, puedes copiar toda la tabla dinámica y pegarla como valores. Esto elimina la funcionalidad de la tabla dinámica pero conserva tus anchos de columna permanentemente.

  1. Selecciona toda la tabla dinámica
    Haz clic en cualquier celda dentro de la tabla dinámica y luego presiona Ctrl + A dos veces para seleccionar todo el rango de la tabla dinámica, incluida el área de filtro de informe.
  2. Copia la selección
    Presiona Ctrl + C.
  3. Pega como valores con los anchos de columna de origen
    Haz clic derecho en la celda inicial donde deseas los datos estáticos. En Opciones de pegado, haz clic en el icono Conservar anchos de columna de origen. Los datos se pegan como valores estáticos con los anchos de columna exactos que configuraste.

ADVERTISEMENT

Si Excel aún tiene problemas después de la solución principal

Los anchos de columna de la tabla dinámica cambian después de actualizar con nuevos datos

Si agregas nuevas filas a los datos de origen y los nuevos datos contienen texto más largo, la tabla dinámica puede expandirse incluso con el ajuste automático desactivado. Esto ocurre porque el ancho de columna se establece en un valor fijo, pero Excel recalcula el ancho si el contenido de la celda es más largo que el ancho de la columna y la opción Ajustar texto está desactivada. Para evitar esto, establece manualmente el ancho de columna a un valor más ancho que cualquier contenido esperado, o activa Ajustar texto para el rango de la tabla dinámica.

Los anchos de columna se restablecen después de abrir un libro compartido

Cuando varios usuarios editan un libro compartido, la configuración de la tabla dinámica puede revertirse porque cada cliente de Excel aplica sus propias opciones predeterminadas. Pide a todos los usuarios que apliquen las mismas Opciones de tabla dinámica descritas en la solución principal. Alternativamente, usa el enfoque de macro VBA porque se ejecuta automáticamente para cada usuario independientemente de su configuración local.

Las columnas de la tabla dinámica desaparecen o se colapsan a ancho cero

Un ancho de columna de cero ocurre cuando el campo de la tabla dinámica está vacío después de una actualización. Esto no es un error, sino un resultado de que la fuente de datos no devuelve ningún valor para ese campo. Verifica los datos de origen en busca de registros faltantes o filtrados. Para ocultar columnas vacías automáticamente, usa la lista de campos de la tabla dinámica para eliminar el campo o aplica un filtro que excluya valores vacíos.

Reparación rápida vs. Reparación en línea: diferencias clave

Elemento Configuración de Opciones de tabla dinámica Macro VBA
Descripción Desactiva el ajuste automático y conserva el formato mediante el cuadro de diálogo integrado Guarda y reaplica los anchos de columna programáticamente después de cada actualización
Facilidad de configuración Simple, sin necesidad de codificación Requiere conocimientos de VBA y un libro habilitado para macros
Funciona para todos los usuarios Solo se aplica al usuario que establece la opción Se ejecuta para todos los usuarios que abren el libro con macros habilitadas
Maneja datos nuevos más largos No, el ancho de columna permanece fijo Sí, la macro se puede modificar para ajustar los anchos dinámicamente
Riesgo de corrupción Ninguno Bajo, pero las macros pueden ser bloqueadas por la configuración de seguridad

Ahora puedes actualizar tus tablas dinámicas sin perder tus ajustes de ancho de columna. Comienza desactivando Ajustar automáticamente el ancho de columna al actualizar y activando Conservar el formato de celda al actualizar en las Opciones de tabla dinámica. Si el problema persiste, usa la macro VBA para bloquear los anchos permanentemente. Para un informe completamente estático, pega la tabla dinámica como valores con los anchos de columna de origen.

ADVERTISEMENT