excel中如何计算每个月员工在职人数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了excel中如何计算每个月员工在职人数相关的知识,希望对你有一定的参考价值。

比如图中,我需要得出2013年1月至4月每个部门分别有多少员工,该用什么函数,SUMPRODUCT可以吗 为什么每次都错误呢?
=SUMPRODUCT((A2:A10=E1)*(C2:C10>=DATE(2013,1,1))*(C2:C10<=DATE(2013,1,31)) 语法有错误码?

C列的日期不是标准的EXCEL日期格式

CTRL+H 查找内容 输入 .

替换为 输入 -或/      全部替换

=SUMPRODUCT(($A$2:$A$10=E1)*($C$2:$C$10>=DATE(2013,1,1))*($C$2:$C$10<=DATE(2013,1,31)))

=SUMPRODUCT(($A$2:$A$10=E1)*(MONTH($C$2:$C$10)=1))

参考技术A 首先你C列的日期不是标准的EXCEL日期格式

你可用 "-"或"/"替换掉"."得出的才是日期格式的数据

或公式改成
=SUMPRODUCT((A2:A10=E1)*(--SUBSTITUTE(C2:C10,".","-")>=--"2013/1/1")*(--SUBSTITUTE(C2:C10,".","-")<=--"2013-1-31"))
这得出来应该是某部门2013年1月份的入职人数

如果是要在职人数,你还得要一个离职时间才能确定某人在这个月是否在职
如果只用入职时间来确定在职人数(而不考虑此人是否已离职),则公式为
=SUMPRODUCT((A2:A10=E1)*(C2:C10<>"")*(--SUBSTITUTE(C2:C10,".","-")<=--"2013-1-31"))追问

可以问一下你公式里面日期前的--是什么意思吗

追答

--是两个负号的意思,目的是通过运算让文本的日期转成代表日期的数字

本回答被提问者和网友采纳
参考技术B C列的日复期不是制标准的EXCEL日期格式
CTRL+H 查找内百容度 输入 .
替换问为答 输入 -或/ 全部替换
=SUMPRODUCT(($A$2:$A$10=E1)*($C$2:$C$10>=DATE(2013,1,1))*($C$2:$C$10<=DATE(2013,1,31)))

=SUMPRODUCT(($A$2:$A$10=E1)*(MONTH($C$2:$C$10)=1))

计算组织中每个员工的直接下属人数(聚合)

【中文标题】计算组织中每个员工的直接下属人数(聚合)【英文标题】:Compute number of direct report for each employee in the organization (aggregation) 【发布时间】:2020-04-11 08:01:47 【问题描述】:

仅供参考,我使用 Redshift SQL。

我有一个大致如下所示的数据库(该数据库有多个列,为简单起见,我将对其进行抽象)。

此表表示我的组织内的层次结构树。

employee    manager
--------    -------
daniel      louis
matt        martha
martha      kim
laura       matt
michael     martha
...

如您所见,matt 出现在两个不同的记录中,一个是员工,另一个是 laura 的经理。 Martha 出现在三份记录中,一份是员工,另外两份是经理。

我想找到一种方法来计算每个员工的直接下属人数。条件计数,其中条件可能是employee = manager

我想我可以使用子查询找到这些信息,然后将其加入,但我想知道是否有一种更“优雅”的方式可以利用窗口函数来做到这一点。

上表的预期输出为:

employee    manager    direct_reports
--------    -------    --------------
daniel      louis      0
matt        martha     1
martha      kim        2
laura       matt       0
michael     martha     0
...

【问题讨论】:

【参考方案1】:

我会用一个相关的子查询来解决这个问题:

select 
    t.employee,
    t.manager,
    (select count(*) from mytable t1 where t1.manager = t.employee) direct_reports
from mytable t

这应该是一种非常有效的方法,尤其是在(employee, manager) 上有索引时。

【讨论】:

干得好!性能方面,我不确定你的和 Gordon 的哪个更有效,但我更喜欢你的内联方法。您能否详细说明您对指数(员工、经理)的评论?看来戈登的速度要快一些。 @DanielSegura:这两种方法都很好(并且都将利用我提到的索引)。我想哪一个表现最好将取决于您的数据分布。您需要针对您的真实数据对这两种解决方案进行基准测试才能找出答案。【参考方案2】:

使用left join 和聚合:

select em.employee, em.manager, count(ew.employee)
from employees em left join
     employees ew
     on ew.manager = em.employee
group by em.employee, em.manager;

【讨论】:

效果很好,戈登。非常感谢。

以上是关于excel中如何计算每个月员工在职人数的主要内容,如果未能解决你的问题,请参考以下文章

excel中,知道入职日期和离职日期,怎么求一月在职人数?急求……

要统计不同部门的每月在职员工数&离职员工数

Excel工资表各岗位每个月的月平均工资?

excel如何查员工属相,Excel查找员工年龄

excel求助??

Excel:COUNTIF 函数将“小于”字符视为运算符