4

想象一下,我在一家工厂进行质量控制,检索每个产品的状态 StateId 1 - 良好 2 - 可接受 3 - 子产品 4 - 浪费

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

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

提前致谢!!

4

4 回答 4

7

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

1 - 良好
2 - 可接受
3 - 子产品
4 - 废物

然后您制作了一个数据透视表,并将 StateId 放入 Report Filter 部分,并仅在“3 - Subproduct”上进行过滤

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

| 状态标识 | 3 - 子产品 |

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

| 状态标识 | (全部) |

您想要的(我认为)是让它继续过滤 3-Subproduct,并且在数据透视表中不显示任何内容。但它曾经如此有用的做法是将过滤器重置为 (All),因为没有 3-Subproduct 条目要显示。这意味着稍后,如果您添加一些 3-Subproduct 条目,并再次刷新数据透视表,它会继续过滤(All),并且不记得您实际上想要 3-Subproduct。

如果那是您的问题,那么它与我遇到的问题相同,而我今天终于意识到答案实际上非常简单:

  • 右键单击过滤器选项并转到字段设置
  • 选择布局和打印选项卡
  • 勾选名为 Show Items with no data 的框

然后它会记住您选择了 3-subproduct,即使那里没有 3-subproduct 的数据,并且只返回一个空白数据透视表而不是恢复为 (All)。

于 2015-11-24T04:12:28.363 回答
2

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

在此处输入图像描述

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

于 2013-05-18T11:16:28.823 回答
2

一条快速评论添加到上面 PsyMann 的出色答案中;您必须将数据透视表设置为保留已删除项目的数据,否则“显示没有数据的项目”选项将灰显。

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

令人沮丧的是你不能让这个字段依赖,所以这意味着所有字段都将保留过时的数据,这些过时的项目现在将显示在数据切片器等中。

于 2016-08-02T09:13:16.603 回答
0

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

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

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

于 2017-08-09T10:19:51.783 回答