如果第一个筛选值不存在,Excel筛选将更改
透视过滤器名称:Country\u Flg,它接受两个不同的值,它们是0,1。我只将我的轴心过滤为Counrty\u Flg=1 在某些情况下,数据透视表源代码会更新,而Country_Flg只需要0或1。当该值仅为1时没有问题,但当该值仅为0时,我的筛选器将更改并采用courty\u Flg=0。我的仪表板正在这个数据透视表上运行。因此,仪表板上显示的值错误。此外,重新更新透视源时,仍保持为0 我无法找到一种方法,如何在所有条件下将值锚定为1 源数据更新后,我的筛选值正在更改,因为1不再存在如果第一个筛选值不存在,Excel筛选将更改,excel,filter,pivot,not-exists,Excel,Filter,Pivot,Not Exists,透视过滤器名称:Country\u Flg,它接受两个不同的值,它们是0,1。我只将我的轴心过滤为Counrty\u Flg=1 在某些情况下,数据透视表源代码会更新,而Country_Flg只需要0或1。当该值仅为1时没有问题,但当该值仅为0时,我的筛选器将更改并采用courty\u Flg=0。我的仪表板正在这个数据透视表上运行。因此,仪表板上显示的值错误。此外,重新更新透视源时,仍保持为0 我无法找到一种方法,如何在所有条件下将值锚定为1 源数据更新后,我的筛选值正在更改,因为1不再存在
但我不想筛选为0。我需要指出,如果1不存在,则pivot不应带来任何值。这是我刚才提到的一个示例(考虑到围绕数据透视表布局的约束保持不变),您可以尝试将其设置为1,否则必须默认为0(如果1不存在)。这会出现在与轴关联的工作表的“代码”窗格中。我在pagefield中使用了与您相同的拼写。不理想,但我认为最好的,因为你不能过滤到一个不存在的值。如果刷新时过滤器存在,它将重置为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
选项显式
专用子工作表_数据透视表更新(ByVal目标作为数据透视表)
如果Target.Name=“PivotTable1”,则“更改为您的pivot名称”
Application.EnableEvents=False
将pvtField设置为PivotField
设置pvtField=Target.PivotFields(“contrty\u Flg”)
返回默认值时出错
用pvtField
.ClearAllFilters
.CurrentPage=“1”
以
Application.EnableEvents=True
如果结束
出口接头
默认值:
如果错误号为0,则
用pvtField
.ClearAllFilters
.CurrentPage=“0”
以
Application.EnableEvents=True
如果结束
端接头
图片:
您能否分享有助于演示这一点的图像和/或数据?另外,我假设Courty_Flg是一个输入错误。你是说,如果支持数据发生变化,并且其中没有1,那么你的过滤器会在更新时更改为0,而0确实存在吗?如果是这样,那是正常的。无法筛选不存在的值上的字段,因为列表来自该数据。您可以使用vba和数据透视表更新事件检查1是否存在,并将筛选器设置为该值。但很难为每种可能的情况编写解决方案,因为这取决于数据的布局方式以及存在的其他切片元素将决定1是否是有效筛选器的选项(我认为)。数据透视表字段是否已修复?也就是说,你没有重新安排枢轴的外观?