【问题标题】:How to find data source of a slicer for a pivot table via the Excel UI?如何通过 Excel UI 查找数据透视表的切片器数据源?
【发布时间】:2014-12-19 08:46:00
【问题描述】:

注意:我不认为它有任何根本区别,但我正在使用在 PowerPivot 模型之上运行的数据透视表。

示例场景:

模型中的三个表:SalesTransaction、BuyerCustomers、SellerCustomers,具有两个定义的 PowerPivot 关系:

BuyerCustomers.CustomerCode --> SalesTransaction.BuyerCustomerCode
SellerCustomers.CustomerCode --> SalesTransaction.SellerCustomerCode

我有一个使用 SalesTransaction 作为数据源定义的数据透视表。

现在,如果我想在 BuyerCustomer 和 SellerCustomer 上创建切片器,我可以在数据透视表字段窗口中右键单击并“添加为切片器”:

  1. SalesTransaction.BuyerCustomerCodeSalesTransaction.SellerCustomerCode(事务表中的两列)
  2. BuyerCustomers.CustomerCodeSellerCustomers.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


【解决方案1】:

无法通过 UI 找到切片器 TableName.ColumnName 数据源,只能看到 ColumnName。

正如问题中所发布的,您可以通过 VBA 查看表名和列名:

ActiveWorkbook.SlicerCaches("Slicer_YourSlicerName").SourceName  

...产生:

"[TableName].[ColumnName]"  

【讨论】:

    猜你喜欢
    • 2018-03-02
    • 1970-01-01
    • 2020-06-21
    • 2023-02-14
    • 2011-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多