【发布时间】:2014-12-19 08:46:00
【问题描述】:
注意:我不认为它有任何根本区别,但我正在使用在 PowerPivot 模型之上运行的数据透视表。
示例场景:
模型中的三个表:SalesTransaction、BuyerCustomers、SellerCustomers,具有两个定义的 PowerPivot 关系:
BuyerCustomers.CustomerCode --> SalesTransaction.BuyerCustomerCode
SellerCustomers.CustomerCode --> SalesTransaction.SellerCustomerCode
我有一个使用 SalesTransaction 作为数据源定义的数据透视表。
现在,如果我想在 BuyerCustomer 和 SellerCustomer 上创建切片器,我可以在数据透视表字段窗口中右键单击并“添加为切片器”:
-
SalesTransaction.BuyerCustomerCode和SalesTransaction.SellerCustomerCode(事务表中的两列) -
BuyerCustomers.CustomerCode和SellerCustomers.CustomerCode(单独的查找表)
无论哪种方式,行为都是相同的。我的问题是:一旦设置完成,如何通过 Excel 中的 UI 判断切片器绑定到什么?除了能够通过列名推断出明显的关联之外,如何判断?
使用 VBA,可以像这样发现关联:
ActiveWorkbook.SlicerCaches("Slicer_CustomerCode").SourceName
...产生:
"[SalesTransaction].[BuyerCustomerCode]"
or
"[BuyerCustomers].[CustomerCode]"
....但据我所知,无法通过 UI 看到这一点。
【问题讨论】:
-
无法通过公式将此结果拖到单元格中,但是您可以通过转到 SlicerTools>>Options>>PivotTable 查看切片器(或者更确切地说是缓存)绑定到哪个数据透视表连接。要将其放入单元格中,您必须使用 UDF。
-
抱歉,我不是想显示它,我只是想查看切片器在数据透视表中作用于哪个列。有时列命名很模糊,以至于您真的无法确定它绑定到哪一列 - 如果不编写 VBA 代码就无法知道这一点,这似乎令人难以置信。
-
哦。我误解了。在 SlicerTools>>Options>>Slicer Settings 中可以找到它所绑定的原始表中的字段。它是该对话框顶部的“源名称”。
-
是的,我已经看到了,问题是它只显示 COLUMN 名称,而不是可以通过 SlicerCaches("slicerName").SourceName 看到的 TABLE.COLUMN 名称(注意:我不小心排除了 . SourceName 在我上面的代码示例中,现在已修复。)在列名并不总是唯一的大型模型中,无法看到完全限定名称是不幸的。遗憾的是,我认为这个问题的正确答案是:“你看不到切片器绑定的 TABLE.COLUMN,只能看到 COLUMN 的名称。”
-
是的。我同意在这种情况下答案是“不”。我有一个切片器连接了近 52 个小表格,所以我可以想象微软的权力决定不制作表格/字段显示,因为它可能会压倒对话框。
标签: excel pivot-table powerpivot vba