【问题标题】:PowerPivot Calculate filters wont workPowerPivot 计算过滤器不起作用
【发布时间】:2014-10-11 17:58:18
【问题描述】:

我有以下表格

订单:

OrderID|Cost|Quarter|User
-------------------------
   1   | 10 |   1   | 1
   2   | 15 |   1   | 2
   3   |  3 |   2   | 1
   4   |  5 |   3   | 3
   5   |  8 |   4   | 2
   6   |  9 |   2   | 3
   7   |  6 |   3   | 3

目标:

UserID|Name |Goal|Quarter|Sum
-----------------------------
   1  |John | 20 |   1   | x
   1  |John | 15 |   2   | x
   2  |Bob  | 12 |   2   | x
   2  |Bob  | 15 |   3   | x
   3  |Homer|  5 |   3   | x
   3  |Homer|  7 |   4   | x

现在我要做的是在第二个表中汇总所有具有当前行中的 UserID 并且在当前行季度中的订单。

我的第一次尝试是:

=CALCULATE(sum(Orders[Cost]);Orders[Quarter]=[Quarter];Orders[User]=[UserID])

结果应该是:

UserID|Name |Goal|Quarter|Sum
-----------------------------
   1  |John | 20 |   1   | 10
   1  |John | 15 |   2   |  3
   2  |Bob  | 12 |   2   | 15
   2  |Bob  | 15 |   3   |  8
   3  |Homer|  5 |   3   | 11
   3  |Homer|  7 |   4   |  0

但在这里我得到了错误:Column "User ID" cannot be found or may not be used in this expression.

为了尝试一些东西,我使用了固定值:

=CALCULATE(sum(Orders[Cost]);Orders[Quarter]=2;Orders[User]=1)

这不会导致错误消息,但也不能完全正常工作。我现在明白了

UserID|...|Sum
   1  |...| 3
   1  |...| 3
   2  |...| 
   2  |...| 
   3  |...| 
   3  |...| 
FYI: the empty space in SUM is really empty.

如果我执行以下操作,那就太疯狂了:

=CALCULATE(sum(Orders[Cost]);Orders[Quarter]=2;Orders[User]=Orders[User])

我明白了:

UserID|...|Sum
   1  |...|  3
   1  |...|  3
   2  |...| 
   2  |...| 
   3  |...| 11
   3  |...| 11

这几乎是我想要的。但我不明白,为什么有些细胞在工作。

有什么方法可以让我按我的意愿工作吗?

【问题讨论】:

    标签: sql excel powerpivot


    【解决方案1】:

    乌尔加诺特

    如果您利用 PowerPivot 中可用的所有功能 - 主要是创建 relationships between datatables 的能力,所需的输出将非常简单。

    我已经复制了您的数据,但缺少一件事 - 用户表。您可以从您的数据库/IT 部门获得一个,或者从您已有的数据中获得简单的create it in Excel。只要确保它不包含任何重复项,否则您将无法定义关系。

    我在接下来的步骤中使用的数据表如下所示(User 表在右侧):

    将所有表添加到 Powerpivot 数据模型(PowerPivot 功能区 -> 添加到数据模型),切换到 图表视图connect Orders and Goals tables to User table(只需将用户 ID 从表订单和目标拖到用户表)。它应该是这样的:

    一旦完成,就很容易得到你想要的数字。只需定义两个新的计算字段(Powerpivot 功能区 -> 计算字段 -> 新计算字段)。确保为 Users 选择目标表并输入以下公式:

    订单价值总和

    =SUM(Orders[Cost])
    

    对于总和或目标目标

    =SUM(Goals[Goal])
    

    在 Excel 2013 中,界面如下所示。

    要按季度查看数字,您还需要一个包含唯一季度数字的表格 - 只需按照创建 Users 表格的步骤操作即可。同样,将 图表视图 中的链接链接到其他表格,您应该会得到以下结果:

    使用 Quarter 表作为 slicer 可能是分析/过滤数字的最佳方式:

    这就是答案:PowerPivot 中的关系

    否则可能很难做到,更不用说一旦开始处理数千行就会变得很慢。我相信这种方法比“旧方法”(嵌套的 LOOKUP 和 IF)要好得多。

    另外,请记住,您使用的数据的结构不是最好的 - 特别是季度没有按年份等区分。

    无论如何,我希望这会有所帮助 - 如果有任何不清楚的地方,请在评论部分告诉我。或者直接下载my source Excel file (2013 version)

    【讨论】:

    • 感谢您的努力。这完美地工作。有人可以回答另一个问题吗?如果我想将结果与另一个表的值相乘(这 3 个表中没有)。我应该将其作为计算字段、表格中的行还是 Excel 中的行?
    • 匹配行的值是多少?
    • 我会使用 UserID 匹配行。想象一下目标值将在另一个表中。如何计算总和/目标?
    • 我只需将表链接到用户表,创建一个新的计算字段,它应该可以正常工作。
    • 太棒了。有用。谢谢。在计算了一些其他值之后,我遇到了另一个问题。我想将每个目标行除以所有目标的总和。这不起作用,因为在每一行中只有用户的目标,而不是每个人的总和。还有没有办法告诉 powerpivot 忽略特定列的 excel 过滤器?
    猜你喜欢
    • 2015-04-01
    • 2020-10-21
    • 2020-09-06
    • 2015-12-07
    • 2022-11-24
    • 1970-01-01
    • 1970-01-01
    • 2013-10-16
    • 2014-08-24
    相关资源
    最近更新 更多