我有一张excel表,为我的员工提供了生产力。除了有关该作业的大量其他信息外,它还包含job number
,date
和completed by
字段。每位员工每天工作时可能有50-60个条目。
我希望能做什么:
如果员工在该日期有任何条目,那么计算每个员工工作了多少天,通过应用一天算作工作的公式(这个跟踪器是否全年如此,所以我正在寻找一种避免每天输入的方法今年)。
例如,我希望能够对员工A说,"您在165天内完成了4,000个工作,这使您的工作效率达到......"
如果Name
= Employee A
,我想计算日期列中的唯一值。我的数据集大约有20,000条记录,涵盖整整一年。
[ 1
答案 0 :(得分:2)
这样的事情怎么样:
Unique Jobs
和Unique Dates
的计算位置为:
{=SUM(--(FREQUENCY(IF($A$2:$A$13=A2,$B$2:$B$13),IF($A$2:$A$13=A2, $B$2:$B$13))>0))}
和
分别为{=SUM(--(FREQUENCY(IF($A$2:$A$13=A2,$C$2:$C$13),IF($A$2:$A$13=A2, $C$2:$C$13))>0))}
。请注意,公式是数组公式,这意味着它们需要使用 CTRL + SHIFT + ENTER 输入。
IF
语句处理"您是我关心的员工吗?"方面并返回一系列作业或日期。我们利用这样一个事实:当我们使用FREQUENCY
对同一个数组进行bin时,我们会为它已经看到的任何值返回零。双重否定,--
,将数字强加为布尔与零。
有更多解释here。
如果没有FREQUENCY
方法或没有数组公式,可能会这样做,但根据数据集的大小,您可能需要考虑性能影响。
如果您有一个额外的列,例如column D
= Job_Type
,则可以为IF
条件添加条件,如下所示:
{=SUM(--(FREQUENCY(IF(($A$2:$A$13=A2)*($D$2:$D$13="Job Type X"),$B$2:$B$13),IF(($A$2:$A$13=A2)*($D$2:$D$13="Job Type X"),$B$2:$B$13))>0))}
通过使用带星号的乘法*
,我们隐含地暗示逻辑中存在AND
条件;请注意,如果我们想要OR
逻辑,我们可以使用+
。另请注意附加括号。在这一天结束时,首先要检查这是否是我关心的Emp
;接下来,检查这是否是我关心的Job_Type
;如果这两个结账,请返回我感兴趣的列并继续如上所述。
注意:刚才描述的方法会使员工对指定的Job Type
产生相同的结果 - 在本例中,记录为Job_Type == "Job Type X"
。您可以执行以下操作:{=SUM(--(FREQUENCY(IF(($A$2:$A$13=A2)*($D$2:$D$13=D2),$B$2:$B$13),IF(($A$2:$A$13 = A2)*($D$2:$D$13=D2),$B$2:$B$13))>0))}
,您将获得每个Emp
和Job_Type
组合的不同生产力金额。
或者,您可以创建一个新的Key
列,例如Emp_Job_Type
,它会连接两列,例如:=A2&D2
。
最后,如果您只对一个特定的Job_type
感兴趣,您还可以考虑事先对数据进行子集化或过滤。也就是说,过滤前期感兴趣的记录并创建新的数据集。