2

我有下拉列表,其中包含国家/地区列表。我需要根据下拉列表中选择的国家/地区过滤数据透视表。我正在使用此代码。

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

但目前它什么也没做。谁能帮我在哪里添加此代码,以便事件触发它。

谢谢

4

4 回答 4

4

尽管对您来说可能为时已晚,但这可能对其他人有所帮助。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
于 2014-08-07T21:25:46.557 回答
0

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

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 中具有不同数据源的两个数据透视表

第四次编辑:

您需要在该单元格上设置一个工作表更改事件,其中包含下拉菜单。该事件将运行您的数据透视表过滤器宏。

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

于 2013-07-25T21:06:50.077 回答
0

我遇到了同样的问题,没有 VBA 宏我有一个更简单的解决方法。我有每个地区每个公司每个部门每个经理销售的移动设备的来源列表以及移动设备上的各种其他字段信息,我必须使用多个数据透视表(如魔方)报告这些信息。源列表有不同的销售日期,但客户只想要上周的销售,这意味着我必须从每个数据透视表的过滤器下拉框中手动选择要报告的星期,这既痛苦又耗时在我可以选择全部刷新之前。

这是解决方案:在您的源列表中创建一个列并输入您希望使用的任何标准 - 在我的例子中,我使用了一个具有 TRUE/FALSE 评估标准的 MAX 函数来确定记录是否属于最近一周。因此,您将在此列中有一个 TRUE/FALSE 标志列表。然后在您的数据透视表过滤器中选择 TRUE,您的数据透视表将自动过滤到真实条件。

于 2016-08-12T10:31:41.563 回答
0

使用动态下拉菜单将达到这里的目的。以下是一些简单的示例步骤,可为您提供一个想法,您可以将其应用于您的案例:

  1. 我创建了 4 个表:蔬菜、水果、饮料、地点
  2. 每张桌子下面都有一个列表(例如蔬菜:胡萝卜、洋葱、马铃薯、番茄;水果:苹果、香蕉、葡萄、橙子、无花果;饮料:可乐、芬达、雪碧、7Up、根啤酒;地点:公园、家, 工作, 校园, 大学)
  3. 为每张桌子创建名称范围:蔬菜、水果、饮料、地点
  4. 在单元格 F2 中,通过转到数据验证 - 列表 - 来源:引用每个类别的标题单元格 (=A2:D2)
  5. 在单元格 G2 中,通过转到数据验证 - 列表 - 源:[这里你需要使用 INDIRECT() FUNCTION]:输入“=INDIRECT(F2)。
  6. 要对其进行测试,请在选择(单元格 F2)中从下拉列表中选择一个值。根据您选择的值,下一个子选择下拉菜单应该会根据您在单元格 F2 中选择的主要选择为您提供一个列表。

动态下拉

希望它有所帮助,谢谢, Alisher Nizamov

于 2020-07-01T14:01:31.473 回答