过滤掉数据透视表中的奇数

时间:2012-10-22 09:36:17

标签: excel vba excel-vba excel-2007 pivot-table

在我的数据透视表的源表中;包含两列;一个用于名称,另一个用于分数。正如主题标题所暗示的那样,我想显示偶数分数的所有名称及其相应分数。

另一种方法是创建第三列并运行IF公式来检查哪些数字是奇数。然后将第三列包含在数据透视表中并将其用作过滤器。

但是有没有办法在不修改源的情况下做同样的事情?

1 个答案:

答案 0 :(得分:4)

您可以遍历枢轴项目,然后将它们除以2以检查它们是否是偶数,如果它们不是,则只需隐藏它们。看这个例子。请根据您的需要进行修改。此外,我还没有做任何错误处理。我相信你可以照顾到......

<强> CODE

Option Explicit

Sub HideOddNumbers()
    Dim ws As Worksheet
    Dim pvtItem As PivotItem
    Dim pvt As PivotTable
    Dim pvtFld As PivotField

    '~~> Change this to the respective sheet
    Set ws = ThisWorkbook.Sheets("Sheet1")

    '~~> Change this to the respective pivot name
    Set pvt = ws.PivotTables("PivotTable1")

    '~~> This is the column
    Set pvtFld = pvt.PivotFields("Scores")

    With pvtFld
        .CurrentPage = "(All)"
        .EnableMultiplePageItems = True

        '~~> Loop through all items in the pivot and
        '~~> divide the values by 2 and check if they are even or not
        For Each pvtItem In pvtFld.PivotItems
            If Val(pvtItem.Value) Mod 2 <> 0 Then pvtItem.Visible = False
        Next
    End With
End Sub

<强> SCREENSHOT

<强> 之前

enter image description here

<强>

enter image description here