我有一张工作效率很高的excel表。随着大量的有关工作等信息,它包含了一个job number
,date
和completed by
领域。每个员工每天工作的时间可能有50-60个条目。
我想做的是:
通过应用一个公式来计算每个员工的工作天数,如果该员工在该日期有任何输入,则将一天视为工作(此跟踪器如果是整年,因此我正在寻找从而避免了每年的每一天都要输入)。
例如,我想对员工A说:“您在165天内完成了4,000个工作,这使您的生产率达到...”
如果Name
=,我想计算日期列中的唯一值Employee A
。我的数据集大约涵盖了整整一年的2万条记录。
[ 1
这样的事情怎么样:
其中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
,对于已经看到的任何值,我们将返回零。双重否定--
将数字强制为布尔值,然后为一和零。
此处提供更多说明。
It's likely possible to do this without the FREQUENCY
approach or without array formulas, but depending on the size of the dataset, you might want to consider the performance hit.
If you have an additional column, say column D
= Job_Type
, you can add criteria to the IF
condition, like so:
{=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))}
By utilizing multiplication with an asterisk, *
, we are implicitly implying an AND
condition in the logic; note, if we wanted OR
logic we could use +
. Also note the additional parentheses. At the end of the day, this says, first check if this is the Emp
that I care about; next, check if this is the Job_Type
that I care about; if both of those checkout, return me the column of interest and continue as above.
注意:刚才描述的方法将使员工对于指定的对象产生相同的结果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
,则还可以考虑预先设置子集或过滤数据。也就是说,预先筛选感兴趣的记录并创建一个新的数据集。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句