Pro*_*ors 3 excel vba pivot-table excel-vba excel-formula
我有一个带有报告过滤器字段的数据透视表.我需要根据用户在报表过滤器字段中选择的值进行一些操作.
如果用户选择单个值(或选择All) - 获取该值没有问题.在示例视频中,它是单元格B1,但是如果选择了多个值,则此字段仅显示Multiple selected.
我在哪里可以获得所选的特定报告过滤器值?我可以从Excel公式中访问这些值吗?如果不是 - 我可以从VBA代码中访问这些值吗?
由于stackoverflow中没有活动,我向其他几个论坛发布了问题.我得到回应(导致解决方案)的唯一地方是 msdn论坛.万一其他人在stackoverflow中搜索这个 - 我在这里发布了解决方案的精髓,在提供的链接上提供了更多信息.
我没有得到如何直接从公式访问报表过滤器值的信息 - 但这可以通过创建用户定义的函数来完成 - > 看看如何做到这一点
1)这是如何从VBA代码访问报告过滤器字段(由P.Thornton提供):
Sub Button960_Click()
Dim pt As PivotTable
Dim pf As PivotField
Dim pi As PivotItem
Set pt = ActiveSheet.PivotTables(1)
pt.PivotCache.MissingItemsLimit = xlMissingItemsNone
pt.PivotCache.Refresh
Set pf = pt.PivotFields("your report field name")
For Each pi In pf.PivotItems
Debug.Print pi.Name, pi.Visible
If pi.Visible Then
'... user has selected this value!
End If
Next
End Sub
Run Code Online (Sandbox Code Playgroud)
请注意,您应该设置PivotCache.MissingItemsLimit = xlMissingNone否则您可能会遇到意外的结果.在我的例子中,事实证明缓存有一堆不再存在于数据源的值.这是一个遗留文件,那些不存在的值很可能在过去的某个时刻出现在文件中,后来从文件中删除.因此,清除PivotCache清除了一些旧的,不存在的数据.
2)一个很好的解决方案如何在msdn论坛上提供的报告过滤器字段旁边显示所选值的列表(由D.Tamburino提供)
PS感谢来自MSDN论坛的P.Thornton和D.Tamburino!
| 归档时间: |
|
| 查看次数: |
10689 次 |
| 最近记录: |