在缺少数据的情况下将过滤器保留在数据透视表中

Fra*_*rêa 1 excel vba pivot-table excel-vba powerpivot

想象一下,我在工厂中有一个质量控制,检索每个产品的状态StateId 1 - Good 2 - Acceptable 3 - Subproduct 4 - waste

我的表'StateIdHistory'每次都给我每个ProductId的状态.我正在创建一个数据透视表,我想在其中过滤掉特定数据范围中的StateId = 3.所以我过滤我的报告选择"3".

想象一下,我想将这个模型用于其他没有StateId = 3的数据库.我的数据模型将被销毁.尽管有或没有数据,我能以某种方式将过滤器修复为等于3吗?VBA?如果3仍然不存在它将检索我0或空白单元格...

提前致谢!!

psy*_*ann 5

如果我理解正确,你有四个StateId选项:

1 - 好
2 - 可接受
3 - 副产品
4 - 浪费

然后你创建了一个数据透视表,并将StateId放入Report Filter部分,并仅在"3 - Subproduct"上对其进行过滤

因此,在过滤部分的数据透视表的顶部,它显示:

| StateId | 3 - 子产品|

如果您刷新数据透视表,它将继续过滤3-Subproduct,因为您要求它... ...直到您的数据没有3子产品的条目.然后,它不会对其进行过滤,而是自动更改为:

| StateId | (全部)|

你想要的(我认为),是为了保持对3-Subproduct的过滤,并且只在数据透视表中显示任何内容.但它所做的一切都是将过滤器重置为(全部),因为没有要显示的3-Subproduct条目.然后是指以后,如果你添加一些三子产品的条目,并再次刷新数据透视表,它过滤功能(所有),不记得你其实想三子产品.

如果这是你的问题,那就和我的问题一样,今天我终于意识到答案其实很简单:

  • 右键单击过滤器选项,然后转到"字段设置"
  • 选择布局和打印选项卡
  • 勾选名为Show Items且没有数据的框

然后它会记得你已经选择了3个副产品,即使那里没有3个副产品的数据,只返回一个空白数据透视表而不是恢复为(全部).


Jac*_*cob 2

答案是为状态维度创建一个单独的表:

在此输入图像描述

这应该连接到您的 StateIDHistory,并且过滤器中的状态应该来自状态表。这不仅会显示所有选项,无论它们是否有数据,而且对于更复杂的模型来说,这也是一个很好的做法。