Excel数据透视表中的平均值总和

时间:2016-07-26 16:33:38

标签: excel excel-vba ms-office pivot-table utilization vba

我正在测量数据转储中的房间利用率(使用的时间/可用时间)。每行包含当天的可用时间和特定案例的时间。 图像是数据的简化版本。

如果您阅读黄色和绿色高光(房间1):

  • 在1号房间,2016年1月1日有200分钟。
  • 案例1耗时60分钟,案例2耗费50分钟。
  • 2016年1月有500分钟,当天只有一个案例发生,使用350分钟。

Room 1 utilization = (60 + 50 + 350)/(200 + 500)

总结可用时间的问题在于它将2016年1月1日的200分钟重复计算,给出:Utilization = (60+50+350)/(200+200+500)

此数据中有数百行(并且将有多个不同行数的数据转储),每天都会发生多个案例。 我正在尝试使用数据透视表,但我无法获得特定房间的“平均值”(见图)。我正在使用宏来从总数列中提取数字。

这可能吗?您是否看到了获得利用的另一种方式? (注意:数据中有很多其他列,例如案例开始,案例结束,星期几等,这些列未在此计算中使用但可用)

Sum of Averages in Pivot Table

3 个答案:

答案 0 :(得分:1)

您在“可用时间平均值”列中获得300的原因是,总计是基于总体平均值的总计,而不是平均值的总和。

  • 房间1:200 + 200 + 500/3 = 300
  • 房间2:300 + 300 + 300/3 = 300

我无法对原始问题发表评论,因此我的解决方案基于一些假设。

假设#1:数据将始终分组。例如。在给定日期的房间1中的所有案例将按顺序行分组。

假设#2:可用时间列是一整天的单个值,同一天的可用时间永远不会有所不同。

解决方案:使用E列作为实际可用时间。此列将使用公式来确定当前行是否具有前一行的唯一组合(日期+房间+可用时间),如果是,则单元格将包含该行的可用时间。

在E2中使用的公式:

=IF(AND($A1 = $A2, $B1 = $B2, $C1 = $C2), 0, $C2)

根据需要将公式尽可能地扩展,然后在数据透视表数据范围中包含新列。

End Result

答案 1 :(得分:0)

我通过组合列创建了一个唯一的引用,然后使用了sumif / countif / countif。

因此,E栏中的公式为: = SUMIF(COLB,cellB,COLC)/ COUNTIF(COLB,勒)/ COUNTIF(COLB,勒)

如果数据是否有序则无关紧要。

根据需要将公式尽可能地扩展,然后在数据透视表数据范围中包含新列。

答案 2 :(得分:0)

我推荐的最简单的方法是这个。

ARRAY<STRUCT

第一项对H列求和,第二项对总和减去。这是一个动态解决方案,并且将根据数据透视表的大小进行更改。

我的假设是数据透视表最初放置在G3单元格中。