簡體   English   中英

組合框更改Excel數據透視表上的過濾器

[英]combo box to change filters on excel pivot table

Excel2013。我正在使用3個組合框來更改數據透視表上的過濾器。 我的第一個組合框為“ Project1”,“ Project2”和“全部”。 我的第二個組合框有“ Customer1”,“ Customer2”和“ All”。 我的第三個組合框有“ Country1”,“ Country2”和“ All”。

我正在使用9個數據透視表,它們都具有[項目],[客戶],[國家/地區]過濾器。

我的意圖是將第一個組合框更改為Project1,並且所有數據透視表過濾器都應更改為Project1。我能夠成功做到這一點。

但是,當我選擇第一個組合框為“全部”時。 第一個組合框單元格鏈接到Y1。 我收到VBA運行時錯誤1004:應用程序定義或對象定義的錯誤。

Sub ProjectName()

ActiveSheet.PivotTables("PVT1").PivotFields("Project Name").ClearAllFilters
ActiveSheet.PivotTables("PVT2").PivotFields("Project Name").ClearAllFilters
ActiveSheet.PivotTables("PVT3").PivotFields("Project Name").ClearAllFilters

    ActiveSheet.PivotTables("PVT1").PivotFields("Project Name").CurrentPage = Range("Y1").Text
    ActiveSheet.PivotTables("PVT2").PivotFields("Project Name").CurrentPage = Range("Y1").Text
    ActiveSheet.PivotTables("PVT3").PivotFields("Project Name").CurrentPage = Range("Y1").Text 

由於前三行代碼沒有問題,因此我假定數據透視表PVT1和字段Project Name都存在。 此后將錯誤放置在某處。

對於.CurrentPage的調用,由於以下原因,您將收到1004錯誤:

  • 使用它來嘗試過濾未設置為Report Filter器”的任何字段。 您不能使用CurrentPage來過濾任何行或列
  • 設置一個可能值列表中不存在的值

在第二點上,這是對Range的調用可能相關的地方。

  • 驗證該值是否存在於可能的值列表中。
  • 另請注意,您正在使用.Text ,它將使用單元格的顯示值,而不是其基礎.Value

要解決這些問題,有兩種選擇:

  • 對於要過濾行或列上(而不是過濾器部分中)的數據的情況,可以通過PivotItems並設置Visible = True/False
  • 如果需要,也可以從VBA設置標簽過濾器,而不是手動過濾器
  • 如果要檢查CurrentPage存在的值,則可以迭代該PivotFieldPivotItems並檢查是否匹配。 該代碼與帶有檢查值的For Each循環非常相似,只是不要設置Visible

用於在行或列上設置過濾器的代碼

Sub FilterPivotField()

    Dim pt As PivotTable
    Set pt = ActiveSheet.PivotTables("PVT1")

    Dim pf As PivotField
    Set pf = pt.PivotFields("C")

    pf.ClearAllFilters

    'slow iterates all items and sets Visible (manual filter)
    Dim pi As PivotItem
    For Each pi In pf.PivotItems
        pi.Visible = (pi.Name = Range("J2"))
    Next

    'fast way sets a label filter
    pf.PivotFilters.Add2 Type:=xlCaptionEquals, Value1:=Range("J2")

End Sub

范圍圖片

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM