You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Excel PowerPivot中为员工连续缺勤行分配缺勤起始日期

处理Excel PowerPivot缺勤数据集:提取缺勤时段首日并填充

需求说明

  • 数据集结构:每位员工的每一天缺勤对应一行记录
  • 目标:识别同一员工的连续缺勤时段(日期连续),将该时段的首个日期填充到该时段每一行的First Date Occurrence列
  • 遇到的问题:尝试使用Earlier函数未得到预期结果

示例数据集

Employee IDTime Off DateFirst Date OccurrenceAbsence Start DateTime Off Reason
1232023/02/012023/01/23疝气
1232023/02/022023/01/23疝气
1232023/03/012023/01/23疝气
1232023/03/022023/01/23疝气

解决方案(DAX计算列)

按以下步骤创建三个计算列,替换你的表名为实际表名:

  1. 标记新缺勤时段的起始行
    创建计算列IsNewAbsence,判断当前行是否为新缺勤时段的开始:
IsNewAbsence = 
IF(
    AND(
        [Employee ID] = EARLIER([Employee ID]),
        [Time Off Date] = EARLIER([Time Off Date]) + 1
    ),
    0,
    1
)

逻辑:如果当前行和上一行是同一员工且日期连续,则不是新时段(标记0);否则是新时段起始(标记1)。

  1. 生成缺勤时段分组ID
    创建计算列AbsenceGroup,为每个员工的不同缺勤时段分配唯一分组号:
AbsenceGroup = 
CALCULATE(
    SUM([IsNewAbsence]),
    FILTER(
        ALL('你的表名'),
        [Employee ID] = EARLIER([Employee ID]) && [Time Off Date] <= EARLIER([Time Off Date])
    )
)

逻辑:按员工ID分组,对当前行及之前所有行的IsNewAbsence求和,得到对应时段的唯一分组ID。

  1. 提取并填充时段首日
    创建计算列First Date Occurrence,提取对应分组的最小日期(即时段首日):
First Date Occurrence = 
CALCULATE(
    MIN([Time Off Date]),
    FILTER(
        ALL('你的表名'),
        [Employee ID] = EARLIER([Employee ID]) && [AbsenceGroup] = EARLIER([AbsenceGroup])
    )
)

逻辑:按员工ID和分组ID筛选,取该分组下的最小Time Off Date,即为该缺勤时段的首日。

结果验证

按上述步骤处理后,示例数据集的First Date Occurrence列会填充为:

Employee IDTime Off DateFirst Date Occurrence
1232023/02/012023/02/01
1232023/02/022023/02/01
1232023/03/012023/03/01
1232023/03/022023/03/01

内容的提问来源于stack exchange,提问作者kcoco

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 08:23:38