簡體   English   中英

Excel VBA-具有多個值過濾器的數據透視表

[英]Excel VBA - Pivot Table with Multiple Value Filters

Excel VBA中是否有一種方法可以在數據透視表中使用多個值過濾器? 我正在嘗試過濾> 0和下十項的值。 在下面的示例代碼(通過記錄宏生成)中,第二個過濾器步驟將覆蓋第一個步驟。 如果支持多個值過濾器,似乎只需要在這兩個表達式之間添加布爾邏輯AND即可獲得兩個過濾器的乘積。 請建議對代碼進行任何更改,或者如果不支持,請通知我。 謝謝!

Sub Multiple_Value_Filters()

    ActiveSheet.PivotTables("PivotTable1").PivotFields("Full Name").PivotFilters.Add _       
        Type:=xlValueIsGreaterThan, _
        DataField:=ActiveSheet.PivotTables("PivotTable1").PivotFields("Days"), _
        Value1:=0
    ActiveSheet.PivotTables("PivotTable1").PivotFields("Full Name").ClearAllFilters
    ActiveSheet.PivotTables("PivotTable1").PivotFields("Full Name").PivotFilters.Add _
        Type:=xlBottomCount, _
        DataField:=ActiveSheet.PivotTables("PivotTable1").PivotFields("Days"), _
        Value1:=10
End Sub

在沒有看到一些樣本數據的情況下,我無法真正說出您的數據透視表應該做什么,但是我相信您應該能夠做您想做的事情。 嘗試解決這個問題:

Sub Multiple_Value_Filters()
    Dim pvt As PivotTable
    Set pvt = ActiveSheet.PivotTables("PivotTable1")

    With pvt.PivotFields("Full Name")
        .ClearAllFilters
        .PivotFilters.Add Type:=xlValueIsGreaterThan, DataField:=pvt.PivotFields("Days"), Value1:=0
        .PivotFilters.Add Type:=xlBottomCount, DataField:=pvt.PivotFields("Days"), Value1:=10
    End With
End Sub

已經發現PivotTable選項可以使用多個過濾器,但是即使它可以像我手動執行的那樣對我也不起作用。 無論出於何種原因,Excel似乎都不喜歡該代碼。 該功能僅適用於Excel 2007 PivotTables和更高版本,但是我正在Excel 2010中運行我的軟件,因此我不確定這里存在什么問題。

Sub Multiple_Value_Filters()
    Dim pvt As PivotTable
    Set pvt = ActiveSheet.PivotTables("PivotTable1")

    With pvt.PivotFields("Full Name")
        .ClearAllFilters
        .AllowMultipleFilters = True ' This is the main key to getting this to work but mine still errors out whenever I add the 2nd filter. 
        .PivotFilters.Add Type:=xlValueIsGreaterThan, DataField:=pvt.PivotFields("Days"), Value1:=0
        .PivotFilters.Add Type:=xlBottomCount, DataField:=pvt.PivotFields("Days"), Value1:=10
    End With
End Sub

我知道這個問題已經很老了,但是最近我偶然發現了這個問題,對我來說真的沒有任何作用。 我只能對透視表使用一個過濾器。 對於第二個或第三個,我總是遇到運行時錯誤。 但是,我找到了一個簡單的解決方法,下面將對其進行描述。 我希望其他來這里遇到類似問題的人可能會有所幫助。

步驟1:將Helper Columns添加到數據源,並帶有新的標題和每行中的任何常量值。 (每個額外的過濾器需要一個輔助列。如果要使用3個過濾器,則需要兩個輔助列) 在此處輸入圖片說明

步驟2:將Helpercolumn屬性添加到數據透視表的行字段中。 在此處輸入圖片說明

步驟3:選擇所有行屬性都在一行中的表格布局。 在此處輸入圖片說明

步驟4:現在您可以應用不同的過濾器,對行字段中的每個屬性應用一個。 這將產生與將多個過濾器用於“標題1”相同的結果。 如果您不喜歡多余的列,也可以將它們隱藏起來。

步驟5:如果現在將其應用於VBA,則代碼可能如下所示:

Dim pvt As PivotTable
Set pvt = ActiveSheet.PivotTables("PivotTable1")

ActiveSheet.PivotTables("PivotTable1").AllowMultipleFilters = True

With pvt.PivotFields("Heading 1")
    .ClearAllFilters
    .PivotFilters.Add2 Type:=xlValueIsGreaterThan, DataField:=ActiveSheet.PivotTables("PivotTable1").PivotFields("Sum of Heading 2"), Value1:=2
End With
With pvt.PivotFields("Help 1")
    .ClearAllFilters
    .PivotFilters.Add2 Type:=xlValueIsSmallerThan, DataField:=ActiveSheet.PivotTables("PivotTable1").PivotFields("Sum of Heading 2"), Value1:=11
End With
With pvt.PivotFields("Help 2")
    .ClearAllFilters
    .PivotFilters.Add2 Type:=xlValueIsGreaterThan, DataField:=ActiveSheet.PivotTables("PivotTable1").PivotFields("Sum of Heading 3"), Value1:=4
End With

我希望這是有用的。

暫無
暫無

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

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