数据透视表刷新和日期过滤器

时间:2015-02-20 19:03:04

标签: excel vba excel-vba pivot-table

我对我的报告有些困难,我希望能够用VBA做的是刷新我在数据透视表选项卡上的所有数据透视表,还添加新日期每当我刷新我的查询时都会填充。

评论: 我确实有一段我在这里获得的代码,但它只是为了更新表(我需要将其与抓取查询刷新时每天填充的新日期结合起来):



Sub RefreshAllPivots()
   Dim PC As PivotCache
   For Each PC In ActiveWorkbook.PivotCaches
      PC.Refresh
   Next PC
End Sub




2 个答案:

答案 0 :(得分:0)

尝试录制所需操作的宏,然后查看代码。另外,请查看具有类似问题的人的此链接。

http://www.mrexcel.com/forum/excel-questions/392962-visual-basic-applications-manipulate-pivot-table-report-filter-2.html

答案 1 :(得分:0)

所以你必须清除过滤器以使其正常工作... IDK为什么会这样,但无论如何......

pt.PivotFields( “SHIFTDT”)。ClearAllFilters

我完成的(经过测试和运行的)代码的一部分:

Sub RefreshAllPivots()

'= This will updated all the pivot tables in your workbook
    Dim PC As PivotCache
    For Each PC In ActiveWorkbook.PivotCaches
       PC.Refresh
    Next PC
   
    Dim SttDT As Date
    Dim EndDT As Date
    Dim ThisDate As Date
    Dim ws As Worksheet
    Dim pt As PivotTable
    Set pt = Sheets("Pivot Tables").PivotTables("AWAYTIME")

'= This is just to setup the dates    
    Set ws = Worksheets("Pivot Tables")
    ThisDate = Date
    SttDT = "2/08/2015"
    EndDT = DateAdd("d", -1, ThisDate)
    ws.Select

'= This will perform  the actual action.  Replace your values under the
'= Set PT declaration, and change the SttDT and EndDT to your needs.
'= You can copy this section for as many tables you are updating.
    Set pt = Sheets("Pivot Tables").PivotTables("AWAYTIME")
    pt.PivotFields("SHIFTDT").ClearAllFilters
    pt.PivotFields("SHIFTDT").PivotFilters. _
    Add Type:=xlDateBetween, Value1:=SttDT, Value2:=EndDT
    pt.PivotFields("SHIFTDT").AutoSort xlAscending, "SHIFTDT"

End Sub

感谢您的回复,我有答案。

    ActiveSheet.PivotTables("AWAYTIME").PivotFields("SHIFTDT").PivotFilters. _
    Add Type:=xlDateBetween, Value1:="2/08/2015", Value2:=DateAdd("D", -1, Now())

因此在循环运行之后,我将只需为我正在更新的每个表创建其中一个片段(如12个左右),它将设置从2月8日到任何“昨天”日期的范围是

如果需要,任何人都可以修改:

    ActiveSheet.PivotTables("Your Pivot Table Name Here").PivotFields("Your Filter Field Here").PivotFilters. _
    Add Type:=xlDateBetween, Value1:="Your Start Date", Value2:"Your End Date"