如何修改Excel公式统计每月在职员工数(适配空离职日期)
解决Excel月度在职员工统计中离职日期为空的问题
问题背景
我在Staff Details工作表有个StaffDetailsTbl员工数据表,包含员工姓名、入职日期、离职日期字段;另有工作表存储月度日期序列。当前用B4单元格的公式统计每月在职人数,但公式未处理离职日期为空的情况,目前仅统计到了Dave,需要修改公式让离职日期为空的员工在入职后持续被计入统计。
员工数据表具体数据:
| 员工姓名 | 入职日期 | 离职日期 |
|---|---|---|
| Bob | 2019/11/01 | |
| Dave | 2019/11/01 | 2020/03/20 |
| Wesley | 2019/12/01 | |
| Peter | 2019/12/01 | |
| Jack | 2019/12/01 | |
| Richard | 2019/12/01 | |
| Rodney | 2019/12/01 |
原公式:
=LET(set, StaffDetailsTbl, starts, INDEX(set,,5), ends, INDEX(set,,6), SOMs, $B$1#, BYCOL(SOMs, LAMBDA(SOM, LET(EOM, EOMONTH(SOM,0), SUMPRODUCT((starts <= EOM) * (ends >= SOM))))))
修改后的公式
=LET( set, StaffDetailsTbl, starts, INDEX(set,,5), ends, INDEX(set,,6), adjustedEnds, IF(ISBLANK(ends), DATE(9999,12,31), ends), SOMs, $B$1#, BYCOL(SOMs, LAMBDA(SOM, LET( EOM, EOMONTH(SOM,0), SUMPRODUCT((starts <= EOM) * (adjustedEnds >= SOM)) ) )) )
改动说明
- 新增
adjustedEnds变量,将空的离职日期替换为9999年12月31日——这个足够遥远的日期能确保离职日期为空的员工,只要入职时间早于当月月底,就会被判定为当月在职。 - 原公式中
ends >= SOM的判断,空单元格会返回FALSE,导致Bob这类无离职日期的员工未被统计;替换后,空离职日期的员工会一直满足adjustedEnds >= SOM的条件(只要统计月份在其入职日期之后)。 - 如果需要统计到当前日期为止的在职状态,也可以把
DATE(9999,12,31)换成TODAY(),不过使用未来日期更适合长期统计需求。
内容的提问来源于stack exchange,提问作者Automation Monkey
相关产品推荐
相关产品推荐

