使用VBA调整基于另一个filter的数据透视表filter

我想要什么:我有两个不同的数据透视表使用filter。 两者都过滤date但具有不同的源数据(其中date部分重叠)。 我希望第二个筛选器在第一个筛选器更改时采用与第一个筛选器相同的值(date)。

我试过的东西:我尝试了无数的互联网上find的解决scheme,但是没有一个能够正常工作。 那些最接近工作的人:

Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable) Sheets("Daganalyse_tables").PivotTables("PivotTable1").PivotFields("Date").ClearAllFilters Sheets("Daganalyse_tables").PivotTables("PivotTable1").PivotFields("Date").CurrentPage = Range("D2").Text End Sub` 

其中D2是第一个filter的位置。 这不断给我一个'运行时错误1004:应用程序定义或对象定义的错误'。 我试了很多变化,不断给我错误1004。

我尝试的第二件事更简单:

 Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable) Sheets("Daganalyse_tables").Range("F1") = Range("D2") End Sub 

F1是第二个filter的位置。 这个告诉我'41667不是这个领域的一个项目',换句话说它把date转换成它的编号。 这在使用Format()或将随机dateinput为String时仍然会发生。

有没有人有如何完成这个想法? 这似乎很容易,但Excel似乎有一个问题(在2013年和2010年尝试过)。 提前致谢!

请参见

使用VBA在数据透视表中的两个date之间进行过滤。 英国到美国的date格式问题

暗示:

 Sheets("Daganalyse_tables").PivotTables("PivotTable1").PivotFields("Date").ClearAllFilters Sheets("Daganalyse_tables").PivotTables("PivotTable1").PivotFields("Date").CurrentPage = CLNG(Range("D2").VALUE) ^^^^^^^^^^^^^^^^^^^^^^^ 

经过一些尝试,我find了一个解决scheme。

 Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable) Worksheets("Daganalyse_tables").PivotTables("PivotTable1").PivotFields("Date").ClearAllFilters Worksheets("Daganalyse_tables").PivotTables("PivotTable1").PivotFields("Date").CurrentPage = _ ActiveSheet.PivotTables("PivotTable14").PivotFields("Date").CurrentPage.Name End sub 

对一个单元格的引用不起作用,我不得不从第二个数据透视表实际引用CurrenPage.Name。