我有下拉列表,其中包含国家/地区列表。我需要根据下拉列表中选择的国家/地区过滤数据透视表。我正在使用此代码。
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
但目前它没有做任何事情。任何人都可以帮助我在哪里添加此代码,以便它将由事件触发。
由于
答案 0 :(得分:2)
虽然对你来说可能为时已晚,但这可能有助于其他人。 CurrentPage属性有效only for Page fields。使用以下代码:
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
答案 1 :(得分:0)
您熟悉数据透视表的“报表过滤器”功能吗?这是一个下拉列表,可以过滤您的数据透视表。您不需要自定义下拉列表。你可以在这里阅读:
也在这里:
http://www.contextures.com/Excel-Pivot-Table-Report-Filters.html
修改强>
要控制多个数据透视表,您可以使用切片器:
再次编辑:
仅当您的数据透视表共享相同的数据源时才会这样做。
Using single slicer to control two pivot tables with different data source in Excel
第四次编辑:
您需要在该单元格上设置工作表更改事件,并在其中添加下拉列表。该事件将运行您的数据透视表过滤器宏。
答案 2 :(得分:0)
我遇到了同样的问题,没有VBA宏,我可以更容易地解决问题。我有每个公司每个区域每个部门按每个区域销售的移动设备的源列表以及移动设备上的各种其他字段信息,我必须使用多个数据透视表(如Rubik的立方体)进行报告。源列表有不同的销售日期,但客户只想要上周的销售,这意味着我必须从每个数据透视表的过滤器下拉框中手动选择要报告的周,这是痛苦和耗时的。在我选择刷新之前。
以下是解决方案:在源列表中创建一个列并输入您希望使用的任何条件 - 在我的情况下,我使用MAX函数和TRUE / FALSE评估标准来查看记录是否属于最近一周。因此,此列中将包含TRUE / FALSE标志列表。然后在您的数据透视表过滤器中选择TRUE,您的数据透视表将自动过滤到真实条件。
答案 3 :(得分:0)
使用动态下拉菜单将达到目的。以下是一些简单的示例步骤,可为您提供一个想法,您可以将其应用于您的案例:
希望有帮助, 谢谢, 阿利舍尔·尼扎莫夫