excel - 在添加到数据模型的数据透视表中使用 VBA 取消选择一项
问题描述
这是我第一次在这里发帖,我是 VBA 的新手。
如标题中所述,我想为添加到数据模型的多个数据透视表(都在一张表中)的多个(在此示例中为两个)过滤器取消选择一项。数据透视表的数据被添加到数据模型中,因此可以将值设置为不同的计数(如果不将数据添加到数据模型中,这是不可能的)。
我想取消选择一个项目的原因实际上是我真正想要的解决方法。我将数据添加到源数据(动态命名范围)并刷新数据透视表。但是,由于对数据透视表应用了过滤器,因此不会自动选择新添加的项目。那么,您可能会想为什么不使用“在手动过滤器中包含新项目”选项呢?好吧,因为数据透视表的数据被添加到数据模型中,所以这个选项是灰色的(所以它不能被选中)。
因此,我正在尝试编写一些代码来首先选择所有项目(因此将新添加的项目添加到手动过滤器中)然后取消选择我不想要的项目(因为我事先知道要取消选择哪些项目,因为它们已经是在第一组数据中)。
我曾尝试使用记录的宏,但显然当手动过滤器中的项目被取消选择时,它会记录保留的选定项目。
因为数据透视表的数据被添加到数据模型中,所以代码的编写方式不同。我找到的解决方案仅适用于“常规”数据透视表。
在下面找到我尝试使用的代码。如代码中所述,第一部分有效,只有第二部分无效。我也不知道“HiddenItemsList”属性是否正确。
Sub DataModel_PivotTable_FilterFields()
'works - will select all the items in the manual filter
Worksheets("xxx").PivotTables("PivotTable3").PivotFields( _
"[xyx].[xxy].[xxy]").VisibleItemsList = Array("")
'does not work - should deselect the item "zxx" after this part works I will add the other item
'to be deselected in the array if possible
Worksheets("xxx").PivotTables("PivotTable3").PivotFields( _
"[xyx].[xxy].[xxy]").HiddenItemsList = Array( _
"[xyx].[xxy].&[zxx]")
End Sub
有人可以帮我解决这个问题吗?将不胜感激。
解决方案
如果有人感兴趣,我通过使用切片器找到了解决方案。我使用的代码取自IG2013的答案。只需更改切片Dim i As Long
器Dim i As String
的值是否为字符串。
推荐阅读
- mysql - 获取 mysql 中 2 个查询的计数差异
- javascript - 如何从 PHP 中保存 Javascript 变量信息
- r - 强制 cell_clicked 从预先指定的列返回值
- mysql - Mysql/MariaDB 触发问题和调试
- ffmpeg - ffmpeg 获取帧时间戳
- c# - 使用 TempData 从 MVC 操作将字符串值添加到 ViewBag 时出现问题
- javascript - 需要为小漫画制作网格
- ios - iOS - UITabBar 在显示启动 iOS 12.1 时出现故障
- reactjs - 如何在 React with Jest 中测试链式 API 调用?
- performance - 当 apache camel 被拆分对象时,内存脚印增加了 10 倍