刷新数据透视表日期

时间:2019-06-05 09:09:46

标签: excel vba pivot-table

我需要修改以下代码以刷新数据透视表并更改日期过滤器,每个月的月末,我的日期过滤器中都有一个新项目,例如,本月是20190531,上一个项目是20190430,我需要取消选择20190430,然后选择下一个月的20190531我想要同样的情况,但是我取消选择了20190531并选择了新的项目20190630 ...我需要有这种动态,不要每个月手动更改

Sub PivotBraunRefresh()

    Sheets("Report-Inv-Actual").Select
    With ActiveSheet.PivotTables("PivotTable1").PivotFields("Dt")
        .PivotItems("20190430").Visible = False
        .PivotItems("20190531").Visible = True
    End With

End Sub 

1 个答案:

答案 0 :(得分:0)

您必须使用当月的最后一天来构建字符串,
检查是否存在这样的Sub PivotBraunRefresh() Dim pi As PivotItem Dim strMonthEnd As String ' last day of current month as string strMonthEnd = Format(DateSerial(Year(Date), Month(Date), 1) - 1, "YYYYMMDD") ' refresh pivottable Sheets("Report-Inv-Actual").PivotTables("PivotTable1").PivotCache.Refresh With Sheets("Report-Inv-Actual").PivotTables("PivotTable1").PivotFields("Dt") On Error Resume Next ' check, if pivotfield exists Set pi = .PivotItems(strMonthEnd) On Error GoTo 0 If Not pi Is Nothing Then pi.Visible = True For Each pi In .PivotItems If pi.Name <> strMonthEnd Then pi.Visible = False Next pi End If End With End Sub
将其可见性设置为true(因为始终必须至少可见1个枢轴项)
然后遍历所有其他枢纽,并将它们切换为不可见:

Workbook_Open()

如果要进一步自动化,可以将其放在{{1}}事件例程中。