我有一个电子表格,对应于用户的条目,他们的估计和实际值(例如:特定项目的小时数 - 再次,这只是一个例子),我们可以用CSV代表:
User,Estimate,Actual
"User 1",5,5
"User 1",7,7
"User 2",3,3
"User 2",9,8
"User 3",6,7
"User 3",8,7
我正在尝试为这些用户构建报告,以便快速查看哪些用户低估或高估了,因此我创建了一个数据透视表。但是,我无法弄清楚如何简单地显示用户是否在某个时候低估了。我尝试创建一个像=IF(Estimate > Actual, 1, 0)
这样的计算字段,但总结一下,然后比较Estimate
和Actual
列,并告诉我“用户3”不会过度/低估。
如果不向我的数据添加其他字段,我该如何完成此操作?
类似的SQL伪查询将是:
SELECT DISTINCT al.User,
(SELECT COUNT(*) FROM ActivityLog AS l2 WHERE l2.User = al.User AND l2.Estimate > l2.Actual) AS Overestimates
FROM ActivityLog AS al
编辑:
我还在研究这个问题,目前已经在一些单元格中创建了静态用户列表,并为他们提供了数组公式:{=SUM(IF((A$2:A20 = F6)*(B$2:B20 > C$2:C20), 1, 0))}
和{=SUM(IF((A$2:A20 = F6)*(B$2:B20 < C$2:C20), 1, 0))}
(如果我有的话) F6
)中的用户名。
主要是,我想这样做,用户列表可以从主数据中动态填充。
答案 0 :(得分:1)
数据透视表中的计算字段很糟糕。我会摆脱数据透视表,并用公式做。在H15中启动一个唯一的用户列表,并在I15中输入
{=MAX(($A$2:$A$7=H16)*($B$2:$B$7-$C$2:$C$7<>0))}
输入了数组。如果它们超过或低于估计值,则返回1,如果它们从未这样做,则返回零。缺点是您不能像数据透视表那样“刷新”它,因此您必须确保您的唯一用户列表始终准确。
如果这有太大的缺点,我认为您需要在源数据中添加一列。具体地
=ABS(B2-C2)
并将其添加到数据透视表中。它将显示零从不超过/低于,否则为非零。
答案 1 :(得分:0)
为实际估算添加一列
然后汇总min max和average的值。 (或stddev)
答案 2 :(得分:0)
您知道您应该确保估算值都在同一范围内吗?可以更好地估计较小的数字(当谈论小时时)。