0

已编辑

IF Select Screen Field (worksheet) Range N3 = Monthly,

我需要工作表'Tickets by Group'、'Top 10 Bill tos'、'Top 10 CSRs'、Top 10 Categories'、Top 10 Created by'来删除数据透视表中的值,然后插入'Created Month'。然后让所有刷新。

IF Select Screen Field (worksheet) Range N3 = Weekly,

我需要工作表'Tickets by Group'、'Top 10 Bill tos'、'Top 10 CSRs'、Top 10 Categories'、Top 10 Created by'来删除数据透视表中的值,然后插入'Week Number'。然后让所有刷新,其中唯一要显示的字段来自选择屏幕范围 A2、B2、C2、D2、E2 和 F2,它们永远不会为空。

它会查看的任何字段中永远不会有空白,这是选择屏幕字段(工作表)的唯一两个选项

最大限度....

在第一张纸上,我添加了一个下拉菜单,可以选择每月或每周。我在“选择屏幕字段”(工作表)上有这个值。然后我有 5 个其他工作表,上面有数据透视表。如果他们选择每月,我希望每个数据透视表清除所有过滤器,然后清除列标签并添加 Created Month... 当运行宏然后查看我得到的结果时:

ActiveSheet.PivotTables("Volume").PivotFields("Week Number").Orientation = _
        xlHidden
    With ActiveSheet.PivotTables("Volume").PivotFields("Created Month")
        .Orientation = xlColumnField
        .Position = 1

But when Weekly is selected I need it to do the same but instead to show 'Week Number' and then have the Pivot table filter to only showing 6 weeks. 该值将基于“选择屏幕字段”、A2、B2、C2、D2、E2 和 F2。目前显示,39、38、37、36、35、34。

4

2 回答 2

1

我想我们现在有了......如果其中一张表格中的数据透视表名称不是“卷”,请更改它。周过滤器不是搜索所有提到的字段,而是过滤周数更大/等于 A2

Sub start()
Call pivotchange("Tickets by Group", "Volume")
Call pivotchange("Top 10 Bill tos", "Volume")
Call pivotchange("Top 10 CSRs", "Volume")
Call pivotchange("Top 10 Categories", "Volume")
Call pivotchange("Top 10 Created by' ", "Volume")
End Sub

Sub pivotchange(sheetname As String, pivottablename As String)
On Error Resume Next
Dim week_filter As String
Dim pt As PivotTable
Set pt = Sheets(sheetname).PivotTables(pivottablename)
    pt.ClearAllFilters
    pt.PivotFields("week").Orientation = xlHidden
    pt.PivotFields("month").Orientation = xlHidden

If Sheets("Select Screen Field").Range("N3").Value = "weekly" Then
    With pt.PivotFields("week")
        .Orientation = xlColumnField
        .Position = 1
    End With
week_filter = Sheets("Select Screen Field").Range("A2").Value
    pt.PivotFields("week").PivotFilters.Add _
        Type:=xlCaptionIsGreaterThanOrEqualTo, Value1:=week_filter
    pt.PivotFields("week").AutoSort xlAscending, "week"
End If
If Sheets("Select Screen Field").Range("N3").Value = "monthly" Then
    With pt.PivotFields("month")
        .Orientation = xlColumnField
        .Position = 1
    End With
    pt.PivotFields("week").AutoSort xlAscending, "month"
End If
pt.RefreshDataSourceValues
pt.RefreshTable
End Sub
于 2013-10-01T11:33:11.870 回答
0

G3:G7 中至少需要一个有效值,否则会出错:

Dim pf As PivotField, pi As PivotItem

Set pf = ActiveSheet.PivotTables("Tickets by Group").PivotFields("Volume")
pf.ClearAllFilters
pf.EnableMultiplePageItems = True

For Each pi In pf.PivotItems
    pi.Visible = Not IsError(Application.Match(pi.Caption, Range("G3:G7"), 0))
Next pi
于 2013-09-25T23:10:31.997 回答