Excel数据透视表计算字段总返回意外值

时间:2009-11-16 08:02:53

标签: excel pivot-table summary

我有一个Excel电子表格,上面有一个数据透视表。数据本身非常简单,单位数和折扣(从0到100的百分比),在顶部和客户的左侧旋转日期。这些数字直接来自SQL视图,因此数据透视表源只是:

SELECT * FROM UnitDiscountView

所有看起来都没问题,直到我试图将一个计算的TotalCost字段(每个单位将花费200英镑)添加到数据透视表:

= (200 *NrUnits ) * ((100-Discount)/100)

底部的总数是负数,远远超过我预期的数字。如果我选择所有单元格,那么底部状态栏中出现的总和就是我所期望的,但是底部的总计字段大一百倍,而引导则为负。

我很难过。我从星期五开始搜索没有找到任何能帮我解决这个问题的东西。任何关于从哪里开始寻找解决方案的指示都将非常感激。我应该提到SQL是我的专长,而不是Excel。我上个星期之前没有使用Excel的Pivot表,所以我可能遗漏了一些非常明显的东西。

2 个答案:

答案 0 :(得分:1)

计算字段将与总计一起使用:

200 *(NrUnits之和)*((100 - [折扣总和])/ 100)

因此,对于您的总行数,如果折扣总和大于100(将数据透视表中的所有折扣总和相加),公式的部分(折扣总和)将返回负数,因此负值。

我通常做的是在查询返回的值右侧的表中添加另一列。我将在那里添加我的公式,然后在调整大小的表上执行数据透视表。

如果已将返回的SQL查询格式化为表(或Excel 2003中的列表),则数据透视表源范围甚至应自行调整大小。

答案 1 :(得分:0)

我找到了答案。

Excel实际上是为了总计:

= (200 * sum(NrUnits)) * ((100-sum(Discount))/100)

这与我想要的甚至不相符:

= sum((200-NrUnits) * ((100-Discount) * 100)))

我通过将视图中的SQL更改为:

来解决这个问题
SELECT *, NrUnits*((100-Discount)*100) AS EffectiveUnits
FROM UnitDiscountView

计算字段为:

= EffectiveUnits * 200