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

问题描述 投票:0回答:3

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

如果您阅读黄色和绿色的突出显示(房间1):

  • [在1号会议室,2016年1月1日有200分钟的可用时间。
  • 案例1花了60分钟,案例2花了50分钟。
  • [2016年1月2日有500分钟的可用分钟,而当天只有1个案例发生,使用了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

excel excel-vba ms-office pivot-table utilization vba
3个回答
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


0
投票

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

因此E列中的公式为:= sumif(colB,cellB,ColC)/ Countif(colB,cellE)/ Countif(colB,cellE)

然后数据是否有序都没关系。

将公式扩展到尽可能深的位置,然后将新列包括在数据透视表数据范围内。


0
投票

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

= SUM(H:H)-GETPIVOTDATA(“平均可用时间”,$ G $ 3)

第一项对H列求和,第二项减去总值。这是一个动态解决方案,将更改以适合数据透视表的大小。

*我的假设是数据透视表最初位于单元格G3中。

© www.soinside.com 2019 - 2024. All rights reserved.