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

时间:2013-05-15 17:30:50

标签: excel-vba pivot-table powerpivot vba excel

想象一下,我在工厂中有一个质量控制来检索每个产品的状态 STATEID 1 - 很好 2 - 可接受 3 - 副产品 4 - 浪费

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

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

提前致谢!!

3 个答案:

答案 0 :(得分:2)

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

enter image description here

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

答案 1 :(得分:1)

上面提到PsyMann的优秀答案的快速评论;您必须将数据透视表设置为保留已删除项目的数据,或选择“显示没有数据的项目”#34;将会变灰。

通过右键单击表格,选择数据透视表选项,数据并确保"保留从数据源中删除的项目"来执行此操作。设置为"自动"或"最大"

令人沮丧的是,您无法使此字段依赖,因此这意味着所有字段都将保留过时的数据,这些过时的项目现在将显示在数据切片等中。

答案 2 :(得分:0)

我在我发送的异常报告中遇到了同样的问题..它在过滤器返回一些数据的情况下运行正常,其中没有数据过滤器被删除并显示所有数据。

我将过滤器列从Pivot 过滤器部分移动到部分,然后使用列的标签过滤器选项指定过滤器然后我隐藏了过滤器列。这工作正常。

此方法存在一些限制,因为您无法选择要过滤的多个值,标签过滤器的选项有限。我的过滤器基于我在基础数据中添加的是/否类型列来识别异常记录,因此这种方法对我来说很好。