0

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

如果您阅读黄色和绿色亮点(房间 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)

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

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

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

4

3 回答 3

1

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

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

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

假设 #1:数据将始终被分组。EG 某一天在房间 1 中的所有病例将按顺序分组。

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


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

E2中使用的公式:

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

根据需要将公式向下扩展,然后将新列包含在数据透视表数据区域中。


最终结果

于 2016-07-26T19:17:47.563 回答
0

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

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

数据是否有序并不重要。

根据需要将公式向下扩展,然后将新列包含在数据透视表数据区域中。

于 2017-06-19T02:29:38.430 回答
0

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

=SUM(H:H)-GETPIVOTDATA("Average of Available Time",$G$3)

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

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

于 2020-02-27T14:05:39.830 回答