viernes, 26 de agosto de 2011

Filtrar por rango de fechas en una tabla dinámica

Filtrar por rango de fechas en una tabla dinámica
La siguiente macro de evento permitirá filtrar entre un rango de fechas en el filtro de informe de una tabla dinámica, lo que evitará tener que seleccionar de manera manual las fechas correspondientes al rango que se desea filtrar.

Para ello, haremos uso de dos celdas complementarias en las cuales indicaremos la fecha inicial y la fecha final del rango entre el cual queremos filtrar.

En el archivo de ejemplo he usado la celda B2 para ingresar la celda inicial y la celda B3 para ingresar la fecha final que indicarán las fechas a filtrar en el filtro de informe llamado "Fecha" : Archivo de descarga

Private Sub Worksheet_Change(ByVal Target As Excel.Range)

Dim Fecha_i As Date
Dim Fecha_f As Date
Dim Fecha As Date
Dim pi As PivotItem

If Not Application.Intersect(Target, Me.Range("b2:b3")) Is Nothing Then

If Me.Range("b3") <= Me.Range("b2") Then

With Application
.EnableEvents = False
.Undo
.EnableEvents = True
End With

MsgBox prompt:="La fecha de inicio debe ser menor a la fecha final.", title:="Filtro fechas"

Else

On Error Resume Next

Fecha_i = Me.Range("b2")
Fecha_f = Me.Range("b3")

Application.ScreenUpdating = False

With ActiveSheet.PivotTables(1).PivotFields("Fecha")
.EnableMultiplePageItems = True
Application.EnableEvents = False
For Each pi In .PivotItems
pi.Visible = True
Fecha = VBA.Format(pi.Value, "mm-dd-yy")
If Fecha < Fecha_i Or Fecha > Fecha_f Then
pi.Visible = False
End If
Next pi
Application.EnableEvents = True
End With

Application.ScreenUpdating = True

End If

End If

End Sub



Fuente: Excelpatas

No hay comentarios: