excel 如何在两个值之间过滤透视表?

vwkv1x7d  于 2022-12-20  发布在  其他
关注(0)|答案(1)|浏览(111)

我正尝试同时将多个数据透视表中的筛选范围自动更改为所需的四周范围,而不是必须手动筛选所有范围。
周是由周数1-52定义的,而不是日期。我一直无法获得任何版本的代码来处理单个透视表,也没有尝试编写VBA来同时影响多个表。

透视表和4周范围设置示例

这是最后一次尝试。结果是
运行时错误“1004”:应用程序定义或对象定义的错误
突出显示最后一行代码。

Sub Updateweekrange1()
    If Range("T2").Value = "" Then
        MsgBox ("You Must First Enter a Beginning Week#.")
        Exit Sub
    End If
    
    If Range("V2").Value = "" Then
        MsgBox ("You Must First Enter a Ending Week#.")
        Exit Sub
    End If
    
    With ActiveSheet.PivotTables("Test2").PivotFields("Week")
        .ClearAllFilters
        .PivotFilters.Add Type:=xlValueIsBetween, DataField:=ActiveSheet.PivotTables("Test2").PivotFields("Week"), Value1:=Range("T2").Value, Value2:=Range("V2").Value
    
    End With
    
End Sub
bweufnob

bweufnob1#

我测试了下面的,它为我工作.
我通过录制一个宏(通过最初隐藏的开发者选项卡)解决了这个问题,同时在Week列上设置了一个between过滤器,然后检查了生成的代码。
例如,将wsPivot设置为ActiveSheet或Sheets(“Sheet1”)可以允许我们的编码有更多的灵活性。所以有时候我只是想帮助别人,却表现得像是在教育别人。

Option Explicit
        
    Private Sub Updateweekrange1()
    
    Dim wsPivot As Worksheet
    
    Set wsPivot = ActiveSheet
    
    If wsPivot.Range("T2").Value = "" Then
        MsgBox ("You Must First Enter a Beginning Week#.")
        Exit Sub
    End If
    
     If wsPivot.Range("V2").Value = "" Then
        MsgBox ("You Must First Enter a Ending Week#.")
        Exit Sub
    End If
        
    With wsPivot.PivotTables("Test2").PivotFields("Week")
        .ClearAllFilters
        .PivotFilters.Add2 _
            Type:=xlValueIsBetween, DataField:=wsPivot.PivotTables("Test2"). _
            PivotFields("Sum of Cost"), Value1:=wsPivot.Range("T2").Value, Value2:=wsPivot.Range("V2").Value
    End With
        
    End Sub

相关问题