¿Cómo agrupar automáticamente fechas en una tabla dinámica con VBA?

Para agrupar automáticamente fechas en una tabla dinámica utilizando VBA, puedes escribir un script que modifique la configuración de los campos de la tabla dinámica para agruparlos por un período de tiempo específico, como meses o años. Aquí te muestro un ejemplo de cómo hacerlo:

Sub AgruparFechasTablaDinamica()
    Dim pt As PivotTable
    Dim pf As PivotField
    
    ' Asegúrate de que existe una tabla dinámica en la hoja activa
    On Error Resume Next
    Set pt = ActiveSheet.PivotTables(1)
    On Error GoTo 0
    
    If pt Is Nothing Then
        MsgBox "No hay ninguna tabla dinámica en la hoja activa."
        Exit Sub
    End If
    
    ' Identifica el campo de fecha en la tabla dinámica
    Set pf = pt.PivotFields("NombreDelCampoDeFecha")
    
    ' Asegúrate de que el campo se pueda agrupar
    If Not pf Is Nothing Then
        ' Limpia la agrupación existente
        pf.ClearAllFilters
        
        ' Agrupa por Mes y Año
        On Error Resume Next
        pf.LabelRange.Select
        Selection.Group Start:=True, End:=True, _
                        Periods:=Array(False, False, False, False, True, True, False)
        On Error GoTo 0
    Else
        MsgBox "No se encontró el campo de fecha especificado en la tabla dinámica."
    End If
End Sub

Pasos a seguir:

  • Preparación: Abre tu archivo de Excel y asegúrate de tener una tabla dinámica basada en un rango de datos que incluya un campo de fecha.
  • Editor de VBA: Presiona `ALT + F11` para abrir el editor de VBA.
  • Insertar un Módulo: En el editor de VBA, inserta un nuevo módulo haciendo clic en `Insertar > Módulo`.
  • Pegar el Código: Copia y pega el código VBA proporcionado en el módulo nuevo.
  • Modificar el Campo de Fecha: Cambia el texto `»NombreDelCampoDeFecha»` por el nombre real del campo de fecha que deseas agrupar.
  • Ejecutar el Script: Cierra el editor de VBA y regresa a Excel. Ejecuta la macro `AgruparFechasTablaDinamica` para agrupar las fechas en la tabla dinámica.

Notas:

  • Este script asume que solo hay una tabla dinámica en la hoja activa.
  • La agrupación está configurada para agrupar las fechas por mes y año (`Periods:=Array(False, False, False, False, True, True, False)`). Puedes ajustar esta configuración para agrupar por otros períodos como día, trimestre, etc.
  • Asegúrate de guardar tu trabajo antes de ejecutar scripts de VBA, ya que las macros pueden no siempre funcionar como se esperaba y podrías perder datos.

Conoce nuestra tienda

Ver más productos

Mejora tu nivel y logra tus objetivo

Excel

Excel cursos

Access

cursos de Access

Power BI

cursos power BI

Ayúdanos a hacer crecer el proyecto

Deja un comentario