COUNTD计算指定日期范围活跃员工数异常:入职晚于范围却被计数
修正COUNTD函数的在职员工计数逻辑
你的COUNTD公式错误地将2021年入职的未离职员工计入了2020年的统计范围,核心问题是原逻辑没有排除“入职日期晚于统计周期结束日期”的未离职员工。
原公式的问题
原公式第一个条件Year([Hire Date])>=Year([Start Date]) and ISNULL([Termination Date (Blank for Currently Active)])仅判断入职年份不早于起始年份且未离职,完全忽略了员工入职日期可能晚于统计周期结束日期的情况——比如2021年入职的员工,2020年的统计周期结束日期早于其入职日期,此时员工还未入职,不应被计数,但原条件却满足,导致错误计数。
修正后的逻辑与公式
正确的判断应该是:员工的在职时间段与[Start Date, End Date]统计范围存在重叠。对应的公式如下:
COUNTD( IF // 未离职且入职日期不晚于统计周期结束日期(确保周期内已入职) (ISNULL([Termination Date (Blank for Currently Active)]) AND [Hire Date] <= [End Date]) OR // 已离职且在职时间段与统计周期有交集 (NOT ISNULL([Termination Date (Blank for Currently Active)]) AND [Hire Date] <= [End Date] AND [Termination Date (Blank for Currently Active)] >= [Start Date]) THEN [Employee ID] END )
逻辑说明
- 对于未离职员工:只有入职日期≤统计周期结束日期,才说明员工在周期内或之前入职,且至今在职,符合统计要求;
- 对于已离职员工:需要同时满足入职日期≤结束日期、离职日期≥起始日期,确保员工的在职时间段与统计周期有重叠。
内容的提问来源于stack exchange,提问作者NidenK
相关产品推荐
相关产品推荐

