如果第一个筛选值不存在,Excel筛选器将更改

时间:2018-03-20 08:25:16

标签: excel filter pivot not-exists

数据透视过滤器名称:Country_Flg,它需要2个不同的值,这些是0,1。我正在过滤我的支点,因为只有 Counrty_Flg = 1

在某些情况下,数据透视表源更新和Country_Flg只需0或1.当值仅为1时没有问题,但当值仅为0时,我的过滤器更改并采用 Counrty_Flg = 0 < / strong>即可。我的仪表板以这个数据透视表为基础。因此,仪表板上显示错误的值。此外,当重新更新枢轴来源时,仍然为0

我无法找到一种在所有条件下将值固定为1的方法。

enter image description here

源数据更新后,我的过滤器值正在变化,因为1不再存在。

enter image description here enter image description here

但我不想过滤为0.我需要如果1不存在,那么枢轴不应该带来任何价值。

1 个答案:

答案 0 :(得分:0)

这是我提到的一个例子(考虑到可旋转布局的约束保持不变),你可以尝试设置为1,否则你必须默认为0(如果1不存在)。这将在与枢轴关联的工作表的代码窗格中。我在页面区域使用了与你相同的拼写。不理想,但我能想到最好,因为你不能过滤到不存在的价值。如果刷新时存在过滤器,它会将过滤器重置为1.

Option Explicit

Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)

    If Target.Name = "PivotTable1" Then          'change to your pivot name

        Application.EnableEvents = False

        Dim pvtField As PivotField

        Set pvtField = Target.PivotFields("Counrty_Flg")

        On Error GoTo DefaultValue

        With pvtField
            .ClearAllFilters
            .CurrentPage = "1"
        End With

        Application.EnableEvents = True

    End If

    Exit Sub

DefaultValue:

    If Err.Number <> 0 Then

        With pvtField
            .ClearAllFilters
            .CurrentPage = "0"
        End With

        Application.EnableEvents = True
    End If

End Sub

图像:

pivot