根据下拉列表更改数据透视表filter

我有下拉列表,有一个国家的名单。 我需要根据下拉列表中select的国家/地区筛选数据透视表。 我正在使用这个代码。

Sub PivotChange(ByVal Target As Range) If Not Application.Intersect(Target, Sheets("Summary").Range("D7")) Is Nothing Then Sheets("Data_4PivotChart").PivotTables("PivotTable7").PivotFields("Country"). _ ClearAllFilters Sheets("Data_4PivotChart").PivotTables("PivotTable7").PivotFields("Country").CurrentPage _ = Sheets("Summary").Range("D7").Value End If End Sub 

但目前它没有做任何事情。 任何人都可以帮助我在哪里添加此代码,以便它将由事件触发。

谢谢

虽然对你来说可能已经太晚了,但这可能会帮助其他人。 CurrentPage属性仅对Page字段有效。 使用下面的代码来达到这个目的:

 Sub PivotChange(ByVal Target As Range) If Not Application.Intersect(Target, Sheets("Summary").Range("D7")) Is Nothing Then Sheets("Data_4PivotChart").PivotTables("PivotTable7").PivotFields("Country"). _ ClearAllFilters Sheets("Data_4PivotChart").PivotTables("PivotTable7").PivotFields("Country").PivotFilters.Add _ Type:=xlCaptionEquals, Value1:=Sheets("Summary").Range("D7").Value End If End Sub 

您是否熟悉数据透视表的“报告filter”function? 这是一个下拉,将过滤您的数据透视表。 您不需要自定义下拉菜单。 你可以在这里读到它:

http://office.microsoft.com/en-us/excel-help/use-a-report-filter-in-a-pivottable-or-pivotchart-report-HP010167854.aspx#BMdisplay_a_different_set_of_values_in_

也在这里:

http://www.contextures.com/Excel-Pivot-Table-Report-Filters.html

编辑:

要控制多个数据透视表,你可以使用一个切片机:

http://blog.contextures.com/archives/2011/03/07/filter-multiple-pivot-tables-with-excel-2010-slicers/

再次编辑:

这只有当您的透视表共享相同的数据源。

使用单个切片器在Excel中控制具有不同数据源的两个数据透视表

第四编辑:

您需要在该单元格中设置工作表更改事件,并将其放置在该单元格中。 该事件将运行您的数据透视表filtermacros。

http://support.microsoft.com/kb/213612

我有这个相同的问题,我没有VBAmacros更容易的解决方法。 我有每个公司每个部门每个部门销售的移动设备的来源列表,以及移动设备上的各种其他领域信息,我必须使用多个数据透视表(例如魔方)来报告。 来源列表有不同的销售date,但客户只需要上周的销售,这意味着我必须从每个数据透视表的filter下拉框中手动select要报告的那一周,这是痛苦和耗时的之前我可以select全部刷新。

这里是解决scheme:在源列表中创build一个列,然后input您希望使用的任何标准 – 在我的情况下,我使用了带有TRUE / FALSE评估标准的MAX函数来确定该logging是否属于最近一周。 所以你会在这个列中有一个TRUE / FALSE标志的列表。 然后在你的数据透视表filter中selectTRUE,你的数据透视表将自动过滤到真实的状态。