Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 使用数组检查数据透视项。名称<&燃气轮机;数组然后是数据透视项。可见=False_Excel_Vba - Fatal编程技术网

Excel 使用数组检查数据透视项。名称<&燃气轮机;数组然后是数据透视项。可见=False

Excel 使用数组检查数据透视项。名称<&燃气轮机;数组然后是数据透视项。可见=False,excel,vba,Excel,Vba,我正在尝试使用数组来检查透视表中过滤的透视项,以查看它是否应该可见。目前我用下面的代码对其进行了硬编码。但是,当我有多个项目要对照筛选器进行检查时,我希望使用数组 目标是只筛选所需的项目 Supply = Array("X Marketplace", "Y Marketplace") With PivFid For i = 1 To .PivotItems.Count If .PivotItems(i).Name <> "X Marketplace" The

我正在尝试使用数组来检查透视表中过滤的透视项,以查看它是否应该可见。目前我用下面的代码对其进行了硬编码。但是,当我有多个项目要对照筛选器进行检查时,我希望使用数组

目标是只筛选所需的项目

Supply = Array("X Marketplace", "Y Marketplace")

With PivFid
    For i = 1 To .PivotItems.Count
        If .PivotItems(i).Name <> "X Marketplace" Then .PivotItems(i).Visible = False
    Next i
End With
Supply=Array(“X市场”、“Y市场”)
用PivFid
对于i=1到.PivotItems.Count
如果.PivotItems(i).Name“X市场”,则.PivotItems(i).Visible=False
接下来我
以
这是我正在尝试完成的事情,但我不确定如何针对过滤的项在数组中循环

With PivFid
    For i = 1 To .PivotItems.Count
        If .PivotItems(i).Name <> Supply Then .PivotItems(i).Visible = False
    Next i
End With
使用PivFid的

对于i=1到.PivotItems.Count
如果.PivotItems(i).Name提供那么.PivotItems(i).Visible=False
接下来我
以

您可以使用
应用程序。匹配
以检查它。与前面的
IsError
结合使用,它将检查是否在整个
Supply
数组中未找到当前的
PivotItem
名称

代码

Supply = Array("X Marketplace", "Y Marketplace")

With PivFid
    For i = 1 To .PivotItems.Count
        If IsError(Application.Match(.PivotItems(i).Name, Supply, 0)) Then .PivotItems(i).Visible = False
    Next i
End With
以防万一您需要显示其他选项:

With PivFid
    For i = 1 To .PivotItems.Count
        If IsError(Application.Match(.PivotItems(i).Name, Supply, 0)) Then
            .PivotItems(i).Visible = False
        Else
            .PivotItems(i).Visible = True
        End If
    Next i
End With

您还需要取消隐藏项目吗?不需要取消隐藏任何项目@TIM威廉姆斯请注意,必须始终至少有一个数据透视项保持可见。最坏的情况:如果最后一个项目是不可见的,并且应该是唯一可见的项目,那么您将在最后一个项目的第二个项目处得到一个错误,因为在这短暂的时刻,每个项目都是不可见的。太棒了!谢谢你@Shai Rado!这正是我要找的。